From df5d6c14a5adb807a73b01c11f159abed2458e56 Mon Sep 17 00:00:00 2001
From: Owlbot Bootstrapper <owlbot-bootstrapper[bot]@users.noreply.github.com>
Date: Wed, 6 May 2026 20:32:56 +0000
Subject: [PATCH 1/6] feat: initial commit


From 8d350538f62e2ea7dd8e9e084ce14689ba1916b3 Mon Sep 17 00:00:00 2001
From: Owlbot Bootstrapper <owlbot-bootstrapper[bot]@users.noreply.github.com>
Date: Wed, 6 May 2026 20:35:46 +0000
Subject: [PATCH 2/6] feat: initial generation of library Copy-Tag:
 eyJwIjoicGFja2FnZXMvZ29vZ2xlLWNsb3VkLWRhdGFiYXNlY2VudGVyLy5Pd2xCb3QueWFtbCIsImgiOiIzMWRiZjgxZDZmODE1N2VlNzk0YWJiODA5Y2EwYmM3ZDhlMjY4MTVjIn0=

---
 .../google-cloud-databasecenter/.OwlBot.yaml  |  19 ++
 .../.repo-metadata.json                       |  17 ++
 packages/google-cloud-databasecenter/LICENSE  | 202 ++++++++++++++++++
 .../google-cloud-databasecenter/package.json  |  70 ++++++
 4 files changed, 308 insertions(+)
 create mode 100644 packages/google-cloud-databasecenter/.OwlBot.yaml
 create mode 100644 packages/google-cloud-databasecenter/.repo-metadata.json
 create mode 100644 packages/google-cloud-databasecenter/LICENSE
 create mode 100644 packages/google-cloud-databasecenter/package.json

diff --git a/packages/google-cloud-databasecenter/.OwlBot.yaml b/packages/google-cloud-databasecenter/.OwlBot.yaml
new file mode 100644
index 000000000000..9879f6a21b9b
--- /dev/null
+++ b/packages/google-cloud-databasecenter/.OwlBot.yaml
@@ -0,0 +1,19 @@
+# Copyright 2022 Google LLC
+#
+# 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.
+
+deep-copy-regex:
+    - source: /google/cloud/databasecenter/google-cloud-databasecenter-nodejs
+      dest: /owl-bot-staging/google-cloud-databasecenter
+
+api-name: databasecenter
diff --git a/packages/google-cloud-databasecenter/.repo-metadata.json b/packages/google-cloud-databasecenter/.repo-metadata.json
new file mode 100644
index 000000000000..2fef8789d09b
--- /dev/null
+++ b/packages/google-cloud-databasecenter/.repo-metadata.json
@@ -0,0 +1,17 @@
+{
+  "name": "databasecenter",
+  "name_pretty": "Database Center API",
+  "product_documentation": "https://cloud.google.com/database-center/docs/overview",
+  "client_documentation": "https://cloud.google.com/nodejs/docs/reference/databasecenter/latest",
+  "issue_tracker": "https://github.com/googleapis/google-cloud-node/issues",
+  "release_level": "preview",
+  "language": "nodejs",
+  "repo": "googleapis/google-cloud-node",
+  "distribution_name": "@google-cloud/databasecenter",
+  "api_id": "databasecenter.googleapis.com",
+  "default_version": "v1beta",
+  "requires_billing": true,
+  "library_type": "GAPIC_AUTO",
+  "api_shortname": "databasecenter"
+}
+
diff --git a/packages/google-cloud-databasecenter/LICENSE b/packages/google-cloud-databasecenter/LICENSE
new file mode 100644
index 000000000000..d64569567334
--- /dev/null
+++ b/packages/google-cloud-databasecenter/LICENSE
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/packages/google-cloud-databasecenter/package.json b/packages/google-cloud-databasecenter/package.json
new file mode 100644
index 000000000000..eb862fce13d2
--- /dev/null
+++ b/packages/google-cloud-databasecenter/package.json
@@ -0,0 +1,70 @@
+{
+  "name": "@google-cloud/databasecenter",
+  "version": "0.0.0",
+  "description": "Database Center API client for Node.js",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/googleapis/google-cloud-node.git",
+    "directory": "packages/google-cloud-databasecenter"
+  },
+  "license": "Apache-2.0",
+  "author": "Google LLC",
+  "main": "build/src/index.js",
+  "files": [
+    "build/src",
+    "build/protos"
+  ],
+  "homepage": "https://github.com/googleapis/google-cloud-node/tree/main/packages/google-cloud-databasecenter",
+  "keywords": [
+    "google apis client",
+    "google api client",
+    "google apis",
+    "google api",
+    "google",
+    "google cloud platform",
+    "google cloud",
+    "cloud",
+    "google databasecenter",
+    "databasecenter",
+    "Database Center API"
+  ],
+  "scripts": {
+    "clean": "gts clean",
+    "compile": "tsc -p . && cp -r protos build/",
+    "compile-protos": "compileProtos src",
+    "docs": "jsdoc -c .jsdoc.js",
+    "predocs-test": "npm run docs",
+    "docs-test": "linkinator docs",
+    "fix": "gts fix",
+    "lint": "gts check",
+    "postpack": "minifyProtoJson",
+    "prepare": "npm run compile",
+    "system-test": "c8 mocha build/system-test",
+    "test": "c8 mocha build/test",
+    "samples-test": "cd samples/ && npm link ../ && npm i && npm test",
+    "prelint": "cd samples; npm link ../; npm i"
+  },
+  "dependencies": {
+    "google-gax": "^5.0.0"
+  },
+  "devDependencies": {
+    "@types/mocha": "^10.0.10",
+    "@types/node": "^22.13.9",
+    "@types/sinon": "^17.0.4",
+    "c8": "^10.1.3",
+    "gapic-tools": "^1.0.0",
+    "gts": "^6.0.2",
+    "jsdoc": "^4.0.4",
+    "jsdoc-fresh": "^4.0.0",
+    "jsdoc-region-tag": "^3.0.0",
+    "linkinator": "^6.1.2",
+    "long": "^5.3.1",
+    "mocha": "^11.1.0",
+    "pack-n-play": "^3.0.0",
+    "sinon": "^21.0.0",
+    "typescript": "^5.8.2"
+  },
+  "engines": {
+    "node": ">=18.0.0"
+  }
+}

From ae66738e026a4ffad4f19e9dd36ead69a2623f37 Mon Sep 17 00:00:00 2001
From: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
Date: Wed, 6 May 2026 20:45:33 +0000
Subject: [PATCH 3/6] =?UTF-8?q?=F0=9F=A6=89=20Updates=20from=20OwlBot=20po?=
 =?UTF-8?q?st-processor?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
---
 release-please-config.json | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/release-please-config.json b/release-please-config.json
index 16863ff40f97..8232f118477f 100644
--- a/release-please-config.json
+++ b/release-please-config.json
@@ -230,7 +230,8 @@
     "packages/google-maps-navconnect": {},
     "packages/google-cloud-auditmanager": {},
     "packages/google-maps-geocode": {},
-    "packages/google-cloud-datacatalog-lineage-configmanagement": {}
+    "packages/google-cloud-datacatalog-lineage-configmanagement": {},
+    "packages/google-cloud-databasecenter": {}
   },
   "plugins": [
     {

From fb175907b65cf3dbf520a0869d99eb1b261bc3d1 Mon Sep 17 00:00:00 2001
From: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
Date: Wed, 6 May 2026 21:00:25 +0000
Subject: [PATCH 4/6] Owl Bot copied code from
 https://github.com/googleapis/googleapis-gen/commit/31dbf81d6f8157ee794abb809ca0bc7d8e26815c

---
 .../google-cloud-databasecenter/.OwlBot.yaml  |    19 +
 .../google-cloud-databasecenter/.eslintignore |     7 +
 .../.eslintrc.json                            |     4 +
 .../.gitattributes                            |     4 +
 .../google-cloud-databasecenter/.gitignore    |    14 +
 .../google-cloud-databasecenter/.jsdoc.js     |    55 +
 .../google-cloud-databasecenter/.mocharc.js   |    33 +
 .../google-cloud-databasecenter/.nycrc        |    24 +
 .../.prettierignore                           |     6 +
 .../.prettierrc.js                            |    22 +
 .../CODE_OF_CONDUCT.md                        |    94 +
 .../CONTRIBUTING.md                           |    76 +
 .../google-cloud-databasecenter/LICENSE       |   202 +
 .../google-cloud-databasecenter/README.md     |   118 +
 .../databasecenter/v1beta/affiliation.proto   |    83 +
 .../v1beta/machine_config.proto               |    50 +
 .../databasecenter/v1beta/maintenance.proto   |   179 +
 .../databasecenter/v1beta/metric_data.proto   |    83 +
 .../v1beta/operation_error_type.proto         |    52 +
 .../cloud/databasecenter/v1beta/product.proto |   130 +
 .../cloud/databasecenter/v1beta/service.proto |   909 +
 .../cloud/databasecenter/v1beta/signals.proto |   789 +
 .../v1beta/suspension_reason.proto            |    49 +
 .../protos/protos.d.ts                        | 13810 ++++++
 .../protos/protos.js                          | 41042 ++++++++++++++++
 .../protos/protos.json                        |  3880 ++
 .../v1beta/database_center.aggregate_fleet.js |   143 +
 .../database_center.aggregate_issue_stats.js  |    93 +
 ...e_center.query_database_resource_groups.js |   161 +
 .../v1beta/database_center.query_issues.js    |   108 +
 .../v1beta/database_center.query_products.js  |    88 +
 ...ta_google.cloud.databasecenter.v1beta.json |   303 +
 .../google-cloud-databasecenter/src/index.ts  |    27 +
 .../src/v1beta/database_center_client.ts      |  1819 +
 .../v1beta/database_center_client_config.json |    46 +
 .../v1beta/database_center_proto_list.json    |    11 +
 .../src/v1beta/gapic_metadata.json            |    89 +
 .../src/v1beta/index.ts                       |    19 +
 .../system-test/fixtures/sample/src/index.js  |    27 +
 .../system-test/fixtures/sample/src/index.ts  |    32 +
 .../system-test/install.ts                    |    49 +
 .../test/gapic_database_center_v1beta.ts      |  1036 +
 .../google-cloud-databasecenter/tsconfig.json |    22 +
 .../webpack.config.js                         |    64 +
 44 files changed, 65871 insertions(+)
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/.OwlBot.yaml
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/.eslintignore
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/.eslintrc.json
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/.gitattributes
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/.gitignore
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/.jsdoc.js
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/.mocharc.js
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/.nycrc
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/.prettierignore
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/.prettierrc.js
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/CODE_OF_CONDUCT.md
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/CONTRIBUTING.md
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/LICENSE
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/README.md
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/affiliation.proto
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/machine_config.proto
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/maintenance.proto
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/metric_data.proto
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/operation_error_type.proto
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/product.proto
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/service.proto
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/signals.proto
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/suspension_reason.proto
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/protos/protos.d.ts
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/protos/protos.js
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/protos/protos.json
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_fleet.js
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_issue_stats.js
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_database_resource_groups.js
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_issues.js
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_products.js
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/snippet_metadata_google.cloud.databasecenter.v1beta.json
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/src/index.ts
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/src/v1beta/database_center_client.ts
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/src/v1beta/database_center_client_config.json
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/src/v1beta/database_center_proto_list.json
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/src/v1beta/gapic_metadata.json
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/src/v1beta/index.ts
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/system-test/fixtures/sample/src/index.js
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/system-test/fixtures/sample/src/index.ts
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/system-test/install.ts
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/test/gapic_database_center_v1beta.ts
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/tsconfig.json
 create mode 100644 owl-bot-staging/google-cloud-databasecenter/webpack.config.js

diff --git a/owl-bot-staging/google-cloud-databasecenter/.OwlBot.yaml b/owl-bot-staging/google-cloud-databasecenter/.OwlBot.yaml
new file mode 100644
index 000000000000..75844859dea9
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/.OwlBot.yaml
@@ -0,0 +1,19 @@
+# Copyright 2025 Google LLC
+#
+# 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.
+
+deep-copy-regex:
+    - source: /google/cloud/databasecenter/google-cloud-databasecenter-nodejs
+      dest: /owl-bot-staging/google-cloud-databasecenter
+
+api-name: databasecenter
\ No newline at end of file
diff --git a/owl-bot-staging/google-cloud-databasecenter/.eslintignore b/owl-bot-staging/google-cloud-databasecenter/.eslintignore
new file mode 100644
index 000000000000..cfc348ec4d11
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/.eslintignore
@@ -0,0 +1,7 @@
+**/node_modules
+**/.coverage
+build/
+docs/
+protos/
+system-test/
+samples/generated/
diff --git a/owl-bot-staging/google-cloud-databasecenter/.eslintrc.json b/owl-bot-staging/google-cloud-databasecenter/.eslintrc.json
new file mode 100644
index 000000000000..3e8d97ccb390
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/.eslintrc.json
@@ -0,0 +1,4 @@
+{
+  "extends": "./node_modules/gts",
+  "root": true
+}
diff --git a/owl-bot-staging/google-cloud-databasecenter/.gitattributes b/owl-bot-staging/google-cloud-databasecenter/.gitattributes
new file mode 100644
index 000000000000..33739cb74e44
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/.gitattributes
@@ -0,0 +1,4 @@
+*.ts text eol=lf
+*.js text eol=lf
+protos/* linguist-generated
+**/api-extractor.json  linguist-language=JSON-with-Comments
diff --git a/owl-bot-staging/google-cloud-databasecenter/.gitignore b/owl-bot-staging/google-cloud-databasecenter/.gitignore
new file mode 100644
index 000000000000..d4f03a0df2e8
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/.gitignore
@@ -0,0 +1,14 @@
+**/*.log
+**/node_modules
+/.coverage
+/coverage
+/.nyc_output
+/docs/
+/out/
+/build/
+system-test/secrets.js
+system-test/*key.json
+*.lock
+.DS_Store
+package-lock.json
+__pycache__
diff --git a/owl-bot-staging/google-cloud-databasecenter/.jsdoc.js b/owl-bot-staging/google-cloud-databasecenter/.jsdoc.js
new file mode 100644
index 000000000000..80fa593eb117
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/.jsdoc.js
@@ -0,0 +1,55 @@
+// Copyright 2026 Google LLC
+//
+// 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
+//
+//     https://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.
+//
+// ** This file is automatically generated by gapic-generator-typescript. **
+// ** https://github.com/googleapis/gapic-generator-typescript **
+// ** All changes to this file may be overwritten. **
+
+'use strict';
+
+module.exports = {
+  opts: {
+    readme: './README.md',
+    package: './package.json',
+    template: './node_modules/jsdoc-fresh',
+    recurse: true,
+    verbose: true,
+    destination: './docs/'
+  },
+  plugins: [
+    'plugins/markdown',
+    'jsdoc-region-tag'
+  ],
+  source: {
+    excludePattern: '(^|\\/|\\\\)[._]',
+    include: [
+      'build/src',
+      'protos'
+    ],
+    includePattern: '\\.js$'
+  },
+  templates: {
+    copyright: 'Copyright 2026 Google LLC',
+    includeDate: false,
+    sourceFiles: false,
+    systemName: '@google-cloud/databasecenter',
+    theme: 'lumen',
+    default: {
+      outputSourceFiles: false
+    }
+  },
+  markdown: {
+    idInHeadings: true
+  }
+};
diff --git a/owl-bot-staging/google-cloud-databasecenter/.mocharc.js b/owl-bot-staging/google-cloud-databasecenter/.mocharc.js
new file mode 100644
index 000000000000..5eb34e86c874
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/.mocharc.js
@@ -0,0 +1,33 @@
+// Copyright 2026 Google LLC
+//
+// 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
+//
+//     https://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.
+//
+// ** This file is automatically generated by gapic-generator-typescript. **
+// ** https://github.com/googleapis/gapic-generator-typescript **
+// ** All changes to this file may be overwritten. **
+
+const config = {
+  "enable-source-maps": true,
+  "throw-deprecation": true,
+  "timeout": 10000
+}
+if (process.env.MOCHA_THROW_DEPRECATION === 'false') {
+  delete config['throw-deprecation'];
+}
+if (process.env.MOCHA_REPORTER) {
+  config.reporter = process.env.MOCHA_REPORTER;
+}
+if (process.env.MOCHA_REPORTER_OUTPUT) {
+  config['reporter-option'] = `output=${process.env.MOCHA_REPORTER_OUTPUT}`;
+}
+module.exports = config
diff --git a/owl-bot-staging/google-cloud-databasecenter/.nycrc b/owl-bot-staging/google-cloud-databasecenter/.nycrc
new file mode 100644
index 000000000000..81a95fc94b00
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/.nycrc
@@ -0,0 +1,24 @@
+{
+  "report-dir": "./.coverage",
+  "reporter": ["text", "lcov"],
+  "exclude": [
+    "**/*-test",
+    "**/.coverage",
+    "**/apis",
+    "**/benchmark",
+    "**/conformance",
+    "**/docs",
+    "**/samples",
+    "**/scripts",
+    "**/protos",
+    "**/test",
+    "**/*.d.ts",
+    ".jsdoc.js",
+    "**/.jsdoc.js",
+    "karma.conf.js",
+    "webpack-tests.config.js",
+    "webpack.config.js"
+  ],
+  "exclude-after-remap": false,
+  "all": true
+}
\ No newline at end of file
diff --git a/owl-bot-staging/google-cloud-databasecenter/.prettierignore b/owl-bot-staging/google-cloud-databasecenter/.prettierignore
new file mode 100644
index 000000000000..9340ad9b86d3
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/.prettierignore
@@ -0,0 +1,6 @@
+**/node_modules
+**/coverage
+test/fixtures
+build/
+docs/
+protos/
diff --git a/owl-bot-staging/google-cloud-databasecenter/.prettierrc.js b/owl-bot-staging/google-cloud-databasecenter/.prettierrc.js
new file mode 100644
index 000000000000..7649ee3c254e
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/.prettierrc.js
@@ -0,0 +1,22 @@
+// Copyright 2026 Google LLC
+//
+// 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
+//
+//     https://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.
+//
+// ** This file is automatically generated by gapic-generator-typescript. **
+// ** https://github.com/googleapis/gapic-generator-typescript **
+// ** All changes to this file may be overwritten. **
+
+
+module.exports = {
+  ...require('gts/.prettierrc.json')
+}
diff --git a/owl-bot-staging/google-cloud-databasecenter/CODE_OF_CONDUCT.md b/owl-bot-staging/google-cloud-databasecenter/CODE_OF_CONDUCT.md
new file mode 100644
index 000000000000..2add2547a812
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/CODE_OF_CONDUCT.md
@@ -0,0 +1,94 @@
+<!-- # Generated by synthtool. DO NOT EDIT! !-->
+# Code of Conduct
+
+## Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as
+contributors and maintainers pledge to making participation in our project and
+our community a harassment-free experience for everyone, regardless of age, body
+size, disability, ethnicity, gender identity and expression, level of
+experience, education, socio-economic status, nationality, personal appearance,
+race, religion, or sexual identity and orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to creating a positive environment
+include:
+
+*   Using welcoming and inclusive language
+*   Being respectful of differing viewpoints and experiences
+*   Gracefully accepting constructive criticism
+*   Focusing on what is best for the community
+*   Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+*   The use of sexualized language or imagery and unwelcome sexual attention or
+    advances
+*   Trolling, insulting/derogatory comments, and personal or political attacks
+*   Public or private harassment
+*   Publishing others' private information, such as a physical or electronic
+    address, without explicit permission
+*   Other conduct which could reasonably be considered inappropriate in a
+    professional setting
+
+## Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable
+behavior and are expected to take appropriate and fair corrective action in
+response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or reject
+comments, commits, code, wiki edits, issues, and other contributions that are
+not aligned to this Code of Conduct, or to ban temporarily or permanently any
+contributor for other behaviors that they deem inappropriate, threatening,
+offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies both within project spaces and in public spaces
+when an individual is representing the project or its community. Examples of
+representing a project or community include using an official project e-mail
+address, posting via an official social media account, or acting as an appointed
+representative at an online or offline event. Representation of a project may be
+further defined and clarified by project maintainers.
+
+This Code of Conduct also applies outside the project spaces when the Project
+Steward has a reasonable belief that an individual's behavior may have a
+negative impact on the project or its community.
+
+## Conflict Resolution
+
+We do not believe that all conflict is bad; healthy debate and disagreement
+often yield positive results. However, it is never okay to be disrespectful or
+to engage in behavior that violates the project’s code of conduct.
+
+If you see someone violating the code of conduct, you are encouraged to address
+the behavior directly with those involved. Many issues can be resolved quickly
+and easily, and this gives people more control over the outcome of their
+dispute. If you are unable to resolve the matter for any reason, or if the
+behavior is threatening or harassing, report it. We are dedicated to providing
+an environment where participants feel welcome and safe.
+
+Reports should be directed to *googleapis-stewards@google.com*, the
+Project Steward(s) for *Google Cloud Client Libraries*. It is the Project Steward’s duty to
+receive and address reported violations of the code of conduct. They will then
+work with a committee consisting of representatives from the Open Source
+Programs Office and the Google Open Source Strategy team. If for any reason you
+are uncomfortable reaching out to the Project Steward, please email
+opensource@google.com.
+
+We will investigate every complaint, but you may not receive a direct response.
+We will use our discretion in determining when and how to follow up on reported
+incidents, which may range from not taking action to permanent expulsion from
+the project and project-sponsored spaces. We will notify the accused of the
+report and provide them an opportunity to discuss it before any action is taken.
+The identity of the reporter will be omitted from the details of the report
+supplied to the accused. In potentially harmful situations, such as ongoing
+harassment or threats to anyone's safety, we may take action without notice.
+
+## Attribution
+
+This Code of Conduct is adapted from the Contributor Covenant, version 1.4,
+available at
+https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
\ No newline at end of file
diff --git a/owl-bot-staging/google-cloud-databasecenter/CONTRIBUTING.md b/owl-bot-staging/google-cloud-databasecenter/CONTRIBUTING.md
new file mode 100644
index 000000000000..043cb166b70a
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/CONTRIBUTING.md
@@ -0,0 +1,76 @@
+# How to become a contributor and submit your own code
+
+**Table of contents**
+
+* [Contributor License Agreements](#contributor-license-agreements)
+* [Contributing a patch](#contributing-a-patch)
+* [Running the tests](#running-the-tests)
+* [Releasing the library](#releasing-the-library)
+
+## Contributor License Agreements
+
+We'd love to accept your sample apps and patches! Before we can take them, we
+have to jump a couple of legal hurdles.
+
+Please fill out either the individual or corporate Contributor License Agreement
+(CLA).
+
+  * If you are an individual writing original source code and you're sure you
+    own the intellectual property, then you'll need to sign an [individual CLA](https://developers.google.com/open-source/cla/individual).
+  * If you work for a company that wants to allow you to contribute your work,
+    then you'll need to sign a [corporate CLA](https://developers.google.com/open-source/cla/corporate).
+
+Follow either of the two links above to access the appropriate CLA and
+instructions for how to sign and return it. Once we receive it, we'll be able to
+accept your pull requests.
+
+## Contributing A Patch
+
+1.  Submit an issue describing your proposed change to the repo in question.
+1.  The repo owner will respond to your issue promptly.
+1.  If your proposed change is accepted, and you haven't already done so, sign a
+    Contributor License Agreement (see details above).
+1.  Fork the desired repo, develop and test your code changes.
+1.  Ensure that your code adheres to the existing style in the code to which
+    you are contributing.
+1.  Ensure that your code has an appropriate set of tests which all pass.
+1.  Title your pull request following [Conventional Commits](https://www.conventionalcommits.org/) styling.
+1.  Submit a pull request.
+
+### Before you begin
+
+1.  [Select or create a Cloud Platform project][projects].
+1.  [Enable billing for your project][billing].
+1.  [Enable the Databasecenter API][enable_api].
+1.  [Set up authentication with a service account][auth] so you can access the
+    API from your local workstation.
+
+
+## Running the tests
+
+1.  [Prepare your environment for Node.js setup][setup].
+
+1.  Install dependencies:
+
+        npm install
+
+1.  Run the tests:
+
+        # Run unit tests.
+        npm test
+
+        # Run sample integration tests.
+        npm run samples-test
+
+        # Run all system tests.
+        npm run system-test
+
+1.  Lint (and maybe fix) any changes:
+
+        npm run fix
+
+[setup]: https://cloud.google.com/nodejs/docs/setup
+[projects]: https://console.cloud.google.com/project
+[billing]: https://support.google.com/cloud/answer/6293499#enable-billing
+[enable_api]: https://console.cloud.google.com/flows/enableapi?apiid=databasecenter.googleapis.com
+[auth]: https://cloud.google.com/docs/authentication/getting-started
\ No newline at end of file
diff --git a/owl-bot-staging/google-cloud-databasecenter/LICENSE b/owl-bot-staging/google-cloud-databasecenter/LICENSE
new file mode 100644
index 000000000000..d64569567334
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/LICENSE
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/owl-bot-staging/google-cloud-databasecenter/README.md b/owl-bot-staging/google-cloud-databasecenter/README.md
new file mode 100644
index 000000000000..c0c294d2fbfa
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/README.md
@@ -0,0 +1,118 @@
+[//]: # "This README.md file is auto-generated, all changes to this file will be lost."
+[//]: # "The comments you see below are used to generate those parts of the template in later states."
+<img src="https://avatars2.githubusercontent.com/u/2810941?v=3&s=96" alt="Google Cloud Platform logo" title="Google Cloud Platform" align="right" height="96" width="96"/>
+
+# [Database Center API: Nodejs Client][homepage]
+
+This library is considered to be in **preview**. This means it is still a
+work-in-progress and under active development. Any release is subject to
+backwards-incompatible changes at any time.
+
+[![npm version](https://img.shields.io/npm/v/@google-cloud/databasecenter.svg)](https://www.npmjs.org/package/@google-cloud/databasecenter)
+
+Database Center API client for Node.js
+
+[//]: # "partials.introduction"
+
+A comprehensive list of changes in each version may be found in
+[the CHANGELOG][homepage_changelog].
+
+* [Database Center API Nodejs Client API Reference](https://cloud.google.com/nodejs/docs/reference/databasecenter/latest)
+* [Database Center API Documentation](https://cloud.google.com/database-center/docs/overview)
+
+Read more about the client libraries for Cloud APIs, including the older
+Google APIs Client Libraries, in [Client Libraries Explained][explained].
+
+[explained]: https://cloud.google.com/apis/docs/client-libraries-explained
+
+**Table of contents:**
+
+* [Quickstart](#quickstart)
+  * [Before you begin](#before-you-begin)
+  * [Installing the client library](#installing-the-client-library)
+
+* [Versioning](#versioning)
+* [Contributing](#contributing)
+* [License](#license)
+
+## Quickstart
+### Before you begin
+
+1.  [Select or create a Cloud Platform project][projects].
+1.  [Enable billing for your project][billing].
+1.  [Enable the Database Center API API][enable_api].
+1.  [Set up authentication][auth] so you can access the
+    API from your local workstation.
+### Installing the client library
+
+```bash
+npm install @google-cloud/databasecenter
+```
+
+[//]: # "partials.body"
+
+## Samples
+
+Samples are in the [`samples/`][homepage_samples] directory. Each sample's `README.md` has instructions for running its sample.
+
+| Sample                      | Source Code                       |
+| --------------------------- | --------------------------------- |
+| aggregate fleet | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_fleet.js) |
+| aggregate issue stats | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_issue_stats.js) |
+| query database resource groups | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_database_resource_groups.js) |
+| query issues | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_issues.js) |
+| query products | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_products.js) |
+| cloud | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-databasecenter/samples/generated/v1beta/snippet_metadata_google.cloud.databasecenter.v1beta.json) |
+
+
+## Supported Node.js Versions
+
+Our client libraries follow the [Node.js release schedule](https://github.com/nodejs/release#release-schedule).
+Libraries are compatible with all current _active_ and _maintenance_ versions of
+Node.js.
+If you are using an end-of-life version of Node.js, we recommend that you update
+as soon as possible to an actively supported LTS version.
+
+Google's client libraries support legacy versions of Node.js runtimes on a
+best-efforts basis with the following warnings:
+
+* Legacy versions are not tested in continuous integration.
+* Some security patches and features cannot be backported.
+* Dependencies cannot be kept up-to-date.
+
+Client libraries targeting some end-of-life versions of Node.js are available, and
+can be installed through npm [dist-tags](https://docs.npmjs.com/cli/dist-tag).
+The dist-tags follow the naming convention `legacy-(version)`.
+For example, `npm install @google-cloud/databasecenter@legacy-8` installs client libraries
+for versions compatible with Node.js 8.
+
+## Versioning
+
+This library follows [Semantic Versioning](http://semver.org/).
+
+More Information: [Google Cloud Platform Launch Stages][launch_stages]
+
+[launch_stages]: https://cloud.google.com/terms/launch-stages
+
+## Contributing
+
+Contributions welcome! See the [Contributing Guide](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-databasecenter/CONTRIBUTING.md).
+
+Please note that this `README.md`
+and a variety of configuration files in this repository (including `.nycrc` and `tsconfig.json`)
+are generated from a central template.
+
+## License
+
+Apache Version 2.0
+
+See [LICENSE](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-databasecenter/LICENSE)
+
+[shell_img]: https://gstatic.com/cloudssh/images/open-btn.png
+[projects]: https://console.cloud.google.com/project
+[billing]: https://support.google.com/cloud/answer/6293499#enable-billing
+[enable_api]: https://console.cloud.google.com/flows/enableapi?apiid=databasecenter.googleapis.com
+[auth]: https://cloud.google.com/docs/authentication/external/set-up-adc-local
+[homepage_samples]: https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-databasecenter/samples
+[homepage_changelog]: https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-databasecenter/CHANGELOG.md
+[homepage]: https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-databasecenter
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/affiliation.proto b/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/affiliation.proto
new file mode 100644
index 000000000000..aa5c2b4a33cc
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/affiliation.proto
@@ -0,0 +1,83 @@
+// Copyright 2026 Google LLC
+//
+// 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.
+
+syntax = "proto3";
+
+package google.cloud.databasecenter.v1beta;
+
+import "google/api/field_behavior.proto";
+
+option csharp_namespace = "Google.Cloud.DatabaseCenter.V1Beta";
+option go_package = "cloud.google.com/go/databasecenter/apiv1beta/databasecenterpb;databasecenterpb";
+option java_multiple_files = true;
+option java_outer_classname = "AffiliationProto";
+option java_package = "com.google.cloud.databasecenter.v1beta";
+option php_namespace = "Google\\Cloud\\DatabaseCenter\\V1beta";
+option ruby_package = "Google::Cloud::DatabaseCenter::V1beta";
+
+// Affiliation information of a resource
+message Affiliation {
+  // lineage information of the affiliated resources
+  // This captures source, target and process which created the lineage.
+  message Lineage {
+    // Optional. FQN of source table / column
+    string source_fqn = 1 [(google.api.field_behavior) = OPTIONAL];
+
+    // Optional. FQN of target table / column
+    string target_fqn = 2 [(google.api.field_behavior) = OPTIONAL];
+
+    // Optional. FQN of process which created the lineage i.e. dataplex,
+    // datastream etc.
+    string process_fqn = 3 [(google.api.field_behavior) = OPTIONAL];
+
+    // Optional. Type of process which created the lineage.
+    ProcessType process_type = 4 [(google.api.field_behavior) = OPTIONAL];
+  }
+
+  // Type of process which created the lineage.
+  enum ProcessType {
+    // Unspecified process type.
+    PROCESS_TYPE_UNSPECIFIED = 0;
+
+    // Composer process type.
+    COMPOSER = 1;
+
+    // Datastream process type.
+    DATASTREAM = 2;
+
+    // Dataflow process type.
+    DATAFLOW = 3;
+
+    // Bigquery process type.
+    BIGQUERY = 4;
+
+    // Data fusion process type.
+    DATA_FUSION = 5;
+
+    // Dataproc process type.
+    DATAPROC = 6;
+  }
+
+  // Optional. resource id of affiliated resource
+  string resource_id = 1 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Full resource name
+  string full_resource_name = 2 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Multiple lineages can be created from a resource.
+  // For example, a resource can be replicated to multiple target resources.
+  // In this case, there will be multiple lineages for the resource, one for
+  // each target resource.
+  repeated Lineage lineages = 3 [(google.api.field_behavior) = OPTIONAL];
+}
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/machine_config.proto b/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/machine_config.proto
new file mode 100644
index 000000000000..3a1f5a690fbb
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/machine_config.proto
@@ -0,0 +1,50 @@
+// Copyright 2026 Google LLC
+//
+// 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.
+
+syntax = "proto3";
+
+package google.cloud.databasecenter.v1beta;
+
+import "google/api/field_behavior.proto";
+
+option csharp_namespace = "Google.Cloud.DatabaseCenter.V1Beta";
+option go_package = "cloud.google.com/go/databasecenter/apiv1beta/databasecenterpb;databasecenterpb";
+option java_multiple_files = true;
+option java_outer_classname = "MachineConfigProto";
+option java_package = "com.google.cloud.databasecenter.v1beta";
+option php_namespace = "Google\\Cloud\\DatabaseCenter\\V1beta";
+option ruby_package = "Google::Cloud::DatabaseCenter::V1beta";
+
+// MachineConfig describes the configuration of a machine specific to a Database
+// Resource.
+message MachineConfig {
+  // Memory size in bytes.
+  int64 memory_size_bytes = 2;
+
+  // Optional. The number of Shards (if applicable).
+  optional int32 shard_count = 3 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. The number of vCPUs (if applicable).
+  optional double vcpu_count = 4 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Baseline slots for BigQuery Reservations. Baseline slots are in
+  // increments of 50.
+  optional int64 baseline_slot_count = 5
+      [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Max slots for BigQuery Reservations. Max slots are in increments
+  // of 50.
+  optional int64 max_reservation_slot_count = 6
+      [(google.api.field_behavior) = OPTIONAL];
+}
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/maintenance.proto b/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/maintenance.proto
new file mode 100644
index 000000000000..3f60a01b6d91
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/maintenance.proto
@@ -0,0 +1,179 @@
+// Copyright 2026 Google LLC
+//
+// 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.
+
+syntax = "proto3";
+
+package google.cloud.databasecenter.v1beta;
+
+import "google/api/field_behavior.proto";
+import "google/protobuf/timestamp.proto";
+import "google/type/date.proto";
+import "google/type/dayofweek.proto";
+import "google/type/timeofday.proto";
+
+option csharp_namespace = "Google.Cloud.DatabaseCenter.V1Beta";
+option go_package = "cloud.google.com/go/databasecenter/apiv1beta/databasecenterpb;databasecenterpb";
+option java_multiple_files = true;
+option java_outer_classname = "MaintenanceProto";
+option java_package = "com.google.cloud.databasecenter.v1beta";
+option php_namespace = "Google\\Cloud\\DatabaseCenter\\V1beta";
+option ruby_package = "Google::Cloud::DatabaseCenter::V1beta";
+
+// Phase/Week of the maintenance window. This is to capture order of
+// maintenance. For example, for Cloud SQL resources -
+// https://cloud.google.com/sql/docs/mysql/maintenance.
+// This enum can be extended to support DB Center specific phases for
+// recommendation plan generation.
+enum Phase {
+  // Phase is unspecified.
+  PHASE_UNSPECIFIED = 0;
+
+  // Week 1.
+  PHASE_WEEK1 = 1;
+
+  // Week 2.
+  PHASE_WEEK2 = 2;
+
+  // Week 5.
+  PHASE_WEEK5 = 3;
+
+  // Any phase.
+  PHASE_ANY = 4;
+}
+
+// Resource maintenance state.
+enum MaintenanceState {
+  // Status is unspecified.
+  MAINTENANCE_STATE_UNSPECIFIED = 0;
+
+  // Maintenance is scheduled.
+  MAINTENANCE_STATE_SCHEDULED = 1;
+
+  // Maintenance is in progress.
+  MAINTENANCE_STATE_IN_PROGRESS = 2;
+
+  // Maintenance is completed.
+  MAINTENANCE_STATE_COMPLETED = 3;
+
+  // Maintenance has failed.
+  MAINTENANCE_STATE_FAILED = 4;
+}
+
+// Possible reasons why the maintenance is not completed.
+// STATE_FAILED maintenance state may not always have a failure reason.
+enum PossibleFailureReason {
+  // Failure reason is unspecified.
+  POSSIBLE_FAILURE_REASON_UNSPECIFIED = 0;
+
+  // Maintenance may not be completed because there is a deny policy
+  // overlapping with upcoming maintenance schedule.
+  POSSIBLE_FAILURE_REASON_DENY_POLICY_CONFLICT = 1;
+
+  // Maintenance may not be completed because the instance is stopped.
+  POSSIBLE_FAILURE_REASON_INSTANCE_IN_STOPPED_STATE = 2;
+}
+
+// Maintenance window for the database resource. It specifies preferred time
+// and day of the week and phase in some cases, when the maintenance can start.
+message ResourceMaintenanceSchedule {
+  // Optional. Preferred time to start the maintenance operation on the
+  // specified day.
+  google.type.TimeOfDay start_time = 1 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Preferred day of the week for maintenance, e.g. MONDAY, TUESDAY,
+  // etc.
+  google.type.DayOfWeek day = 2 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Phase of the maintenance window. This is to capture order of
+  // maintenance. For example, for Cloud SQL resources, this can be used to
+  // capture if the maintenance window is in Week1, Week2, Week5, etc. Non
+  // production resources are usually part of early phase.
+  // For more details, refer to Cloud SQL resources -
+  // https://cloud.google.com/sql/docs/mysql/maintenance
+  Phase phase = 3 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Deny maintenance period for the database resource. It specifies the time
+// range during which the maintenance cannot start. This is configured by the
+// customer.
+message ResourceMaintenanceDenySchedule {
+  // Optional. The start date of the deny maintenance period.
+  google.type.Date start_date = 1 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Deny period end date.
+  google.type.Date end_date = 2 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Time in UTC when the deny period starts on start_date and ends on
+  // end_date.
+  google.type.TimeOfDay time = 3 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Upcoming maintenance window for the database resource.
+message UpcomingMaintenance {
+  // Output only. Start time of the upcoming maintenance.
+  // Start time is always populated when an upcoming maintenance is
+  // scheduled.
+  google.protobuf.Timestamp start_time = 1
+      [(google.api.field_behavior) = OUTPUT_ONLY];
+
+  // Output only. End time of the upcoming maintenance. This is only populated
+  // for an engine, if end time is public for the engine.
+  google.protobuf.Timestamp end_time = 2
+      [(google.api.field_behavior) = OUTPUT_ONLY];
+}
+
+// MaintenanceInfo to capture the maintenance details of database resource.
+message MaintenanceInfo {
+  // Optional. Maintenance window for the database resource.
+  ResourceMaintenanceSchedule maintenance_schedule = 1
+      [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. List of Deny maintenance period for the database resource.
+  repeated ResourceMaintenanceDenySchedule deny_maintenance_schedules = 2
+      [(google.api.field_behavior) = OPTIONAL];
+
+  // Output only. Current Maintenance version of the database resource. Example:
+  // "MYSQL_8_0_41.R20250531.01_15"
+  string maintenance_version = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+  // Output only. The date when the maintenance version was released.
+  google.type.Date current_version_release_date = 4
+      [(google.api.field_behavior) = OUTPUT_ONLY];
+
+  // Output only. Upcoming maintenance window for the database resource. This is
+  // only populated for an engine, if upcoming maintenance is scheduled for the
+  // resource. This schedule is generated per engine and engine version, and
+  // there is only one upcoming maintenance window at any given time. In case of
+  // upcoming maintenance, the maintenance_state will be set to SCHEDULED first,
+  // and then IN_PROGRESS when the maintenance window starts.
+  UpcomingMaintenance upcoming_maintenance = 5
+      [(google.api.field_behavior) = OUTPUT_ONLY];
+
+  // Output only. Resource maintenance state. This is to capture the current
+  // state of the maintenance.
+  MaintenanceState state = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+  // Output only. List of possible reasons why the maintenance is not completed.
+  // This is an optional field and is only populated if there are any
+  // reasons for failures recorded for the maintenance by DB Center.
+  // FAILURE maintenance status may not always have a failure reason.
+  repeated PossibleFailureReason possible_failure_reasons = 7
+      [(google.api.field_behavior) = OUTPUT_ONLY];
+
+  // Output only. Previous maintenance version of the database resource.
+  // Example: "MYSQL_8_0_41.R20250531.01_15". This is available once a minor
+  // version maintenance is complete on a database resource.
+  string previous_maintenance_version = 8
+      [(google.api.field_behavior) = OUTPUT_ONLY];
+}
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/metric_data.proto b/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/metric_data.proto
new file mode 100644
index 000000000000..366ca91854bd
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/metric_data.proto
@@ -0,0 +1,83 @@
+// Copyright 2026 Google LLC
+//
+// 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.
+
+syntax = "proto3";
+
+package google.cloud.databasecenter.v1beta;
+
+import "google/protobuf/timestamp.proto";
+
+option csharp_namespace = "Google.Cloud.DatabaseCenter.V1Beta";
+option go_package = "cloud.google.com/go/databasecenter/apiv1beta/databasecenterpb;databasecenterpb";
+option java_multiple_files = true;
+option java_outer_classname = "MetricDataProto";
+option java_package = "com.google.cloud.databasecenter.v1beta";
+option php_namespace = "Google\\Cloud\\DatabaseCenter\\V1beta";
+option ruby_package = "Google::Cloud::DatabaseCenter::V1beta";
+
+// Metrics represents the metrics for a database resource.
+message Metrics {
+  // P99 CPU utilization observed for the resource. The value is a
+  // fraction between 0.0 and 1.0 (may momentarily exceed 1.0 in some cases).
+  optional MetricData p99_cpu_utilization = 1;
+
+  // P95 CPU utilization observed for the resource. The value is a
+  // fraction between 0.0 and 1.0 (may momentarily exceed 1.0 in some cases).
+  optional MetricData p95_cpu_utilization = 2;
+
+  // Current storage used by the resource in bytes.
+  optional MetricData current_storage_used_bytes = 3;
+
+  // Peak storage utilization observed for the resource. The value is a
+  // fraction between 0.0 and 1.0 (may momentarily exceed 1.0 in some cases).
+  optional MetricData peak_storage_utilization = 4;
+
+  // Peak memory utilization observed for the resource. The value is a
+  // fraction between 0.0 and 1.0 (may momentarily exceed 1.0 in some cases).
+  optional MetricData peak_memory_utilization = 5;
+
+  // Peak number of connections observed for the resource. The value is a
+  // positive integer.
+  optional MetricData peak_number_connections = 6;
+
+  // Number of nodes in instance for spanner or bigtable.
+  optional MetricData node_count = 7;
+
+  // Number of processing units in spanner.
+  optional MetricData processing_unit_count = 8;
+
+  // Current memory used by the resource in bytes.
+  optional MetricData current_memory_used_bytes = 9;
+}
+
+// MetricData represents the metric data for a database resource.
+message MetricData {
+  // The value associated with the metric.
+  TypedValue value = 1;
+
+  // The time the metric was observed in the metric source service.
+  google.protobuf.Timestamp observation_time = 2;
+}
+
+// TypedValue represents the value of the metric based on data type.
+message TypedValue {
+  // The data type of metric value would be chosen based on the metric type.
+  oneof value {
+    // The value of the metric as double.
+    double double_value = 1;
+
+    // The value of the metric as int.
+    int64 int64_value = 2;
+  }
+}
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/operation_error_type.proto b/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/operation_error_type.proto
new file mode 100644
index 000000000000..6503048dcb26
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/operation_error_type.proto
@@ -0,0 +1,52 @@
+// Copyright 2026 Google LLC
+//
+// 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.
+
+syntax = "proto3";
+
+package google.cloud.databasecenter.v1beta;
+
+option csharp_namespace = "Google.Cloud.DatabaseCenter.V1Beta";
+option go_package = "cloud.google.com/go/databasecenter/apiv1beta/databasecenterpb;databasecenterpb";
+option java_multiple_files = true;
+option java_outer_classname = "OperationErrorTypeProto";
+option java_package = "com.google.cloud.databasecenter.v1beta";
+option php_namespace = "Google\\Cloud\\DatabaseCenter\\V1beta";
+option ruby_package = "Google::Cloud::DatabaseCenter::V1beta";
+
+// OperationErrorType is used to expose specific error type which can happen in
+// database resource while performing an operation. For example, an error can
+// happen while database resource being backed up.
+enum OperationErrorType {
+  // UNSPECIFIED means operation error type is not known or available.
+  OPERATION_ERROR_TYPE_UNSPECIFIED = 0;
+
+  // Key destroyed, expired, not found, unreachable or permission denied.
+  KMS_KEY_ERROR = 1;
+
+  // Database is not accessible.
+  DATABASE_ERROR = 2;
+
+  // The zone or region does not have sufficient resources to handle the request
+  // at the moment.
+  STOCKOUT_ERROR = 3;
+
+  // User initiated cancellation.
+  CANCELLATION_ERROR = 4;
+
+  // SQL server specific error.
+  SQLSERVER_ERROR = 5;
+
+  // Any other internal error.
+  INTERNAL_ERROR = 6;
+}
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/product.proto b/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/product.proto
new file mode 100644
index 000000000000..f4c30924defa
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/product.proto
@@ -0,0 +1,130 @@
+// Copyright 2026 Google LLC
+//
+// 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.
+
+syntax = "proto3";
+
+package google.cloud.databasecenter.v1beta;
+
+import "google/api/field_behavior.proto";
+
+option csharp_namespace = "Google.Cloud.DatabaseCenter.V1Beta";
+option go_package = "cloud.google.com/go/databasecenter/apiv1beta/databasecenterpb;databasecenterpb";
+option java_multiple_files = true;
+option java_outer_classname = "ProductProto";
+option java_package = "com.google.cloud.databasecenter.v1beta";
+option php_namespace = "Google\\Cloud\\DatabaseCenter\\V1beta";
+option ruby_package = "Google::Cloud::DatabaseCenter::V1beta";
+
+// Engine refers to underlying database binary running in an instance.
+enum Engine {
+  // UNSPECIFIED means engine type is not known or available.
+  ENGINE_UNSPECIFIED = 0;
+
+  // MySQL binary running as an engine in the database instance.
+  ENGINE_MYSQL = 1;
+
+  // Postgres binary running as engine in database instance.
+  ENGINE_POSTGRES = 2;
+
+  // SQLServer binary running as engine in database instance.
+  ENGINE_SQL_SERVER = 3;
+
+  // Native database binary running as engine in instance.
+  ENGINE_NATIVE = 4;
+
+  // Memorystore with Redis dialect.
+  ENGINE_MEMORYSTORE_FOR_REDIS = 8;
+
+  // Memorystore with Redis cluster dialect.
+  ENGINE_MEMORYSTORE_FOR_REDIS_CLUSTER = 9;
+
+  // Firestore with native mode.
+  ENGINE_FIRESTORE_WITH_NATIVE_MODE = 10;
+
+  // Firestore with datastore mode.
+  ENGINE_FIRESTORE_WITH_DATASTORE_MODE = 11;
+
+  // Oracle Exadata engine.
+  ENGINE_EXADATA_ORACLE = 12;
+
+  // Oracle Autonomous DB Serverless engine.
+  ENGINE_ADB_SERVERLESS_ORACLE = 13;
+
+  // Firestore with MongoDB compatibility.
+  ENGINE_FIRESTORE_WITH_MONGODB_COMPATIBILITY_MODE = 14;
+
+  // Other refers to rest of other database engine. This is to be when engine is
+  // known, but it is not present in this enum.
+  ENGINE_OTHER = 6;
+}
+
+// ProductType is used to identify a database service offering either in a cloud
+// provider or on-premise. This enum needs to be updated whenever we introduce
+// a new ProductType.
+enum ProductType {
+  // PRODUCT_TYPE_UNSPECIFIED means product type is not known or that the user
+  // didn't provide this field in the request.
+  PRODUCT_TYPE_UNSPECIFIED = 0;
+
+  // Cloud SQL product area in Google Cloud
+  PRODUCT_TYPE_CLOUD_SQL = 1;
+
+  // AlloyDB product area in Google Cloud
+  PRODUCT_TYPE_ALLOYDB = 2;
+
+  // Spanner product area in Google Cloud
+  PRODUCT_TYPE_SPANNER = 3;
+
+  // Bigtable product area in Google Cloud
+  PRODUCT_TYPE_BIGTABLE = 6;
+
+  // Memorystore product area in Google Cloud
+  PRODUCT_TYPE_MEMORYSTORE = 7;
+
+  // Firestore product area in Google Cloud
+  PRODUCT_TYPE_FIRESTORE = 8;
+
+  // Compute Engine self managed databases
+  PRODUCT_TYPE_COMPUTE_ENGINE = 9;
+
+  // Oracle product area in Google Cloud
+  PRODUCT_TYPE_ORACLE_ON_GCP = 10;
+
+  // BigQuery product area in Google Cloud
+  PRODUCT_TYPE_BIGQUERY = 11;
+
+  // Other refers to rest of other product type. This is to be when product type
+  // is known, but it is not present in this enum.
+  PRODUCT_TYPE_OTHER = 5;
+}
+
+// Product specification for databasecenter resources.
+message Product {
+  // Optional. Type of specific database product. It could be CloudSQL, AlloyDB
+  // etc..
+  ProductType type = 1 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. The specific engine that the underlying database is running.
+  Engine engine = 2 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Version of the underlying database engine. Example values: For
+  // MySQL, it could be "8.0", "5.7" etc. For Postgres, it could be "14", "15"
+  // etc.
+  string version = 3 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Minor version of the underlying database engine. Example values:
+  // For MySQL, it could be "8.0.35", "5.7.25" etc. For PostgreSQL, it could be
+  // "14.4", "15.5" etc.
+  string minor_version = 4 [(google.api.field_behavior) = OPTIONAL];
+}
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/service.proto b/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/service.proto
new file mode 100644
index 000000000000..ce492118a753
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/service.proto
@@ -0,0 +1,909 @@
+// Copyright 2026 Google LLC
+//
+// 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.
+
+syntax = "proto3";
+
+package google.cloud.databasecenter.v1beta;
+
+import "google/api/annotations.proto";
+import "google/api/client.proto";
+import "google/api/field_behavior.proto";
+import "google/cloud/databasecenter/v1beta/affiliation.proto";
+import "google/cloud/databasecenter/v1beta/machine_config.proto";
+import "google/cloud/databasecenter/v1beta/maintenance.proto";
+import "google/cloud/databasecenter/v1beta/metric_data.proto";
+import "google/cloud/databasecenter/v1beta/product.proto";
+import "google/cloud/databasecenter/v1beta/signals.proto";
+import "google/type/date.proto";
+
+option csharp_namespace = "Google.Cloud.DatabaseCenter.V1Beta";
+option go_package = "cloud.google.com/go/databasecenter/apiv1beta/databasecenterpb;databasecenterpb";
+option java_multiple_files = true;
+option java_outer_classname = "ServiceProto";
+option java_package = "com.google.cloud.databasecenter.v1beta";
+option php_namespace = "Google\\Cloud\\DatabaseCenter\\V1beta";
+option ruby_package = "Google::Cloud::DatabaseCenter::V1beta";
+
+// DatabaseCenter contains methods to query fleet view for database resources.
+service DatabaseCenter {
+  option (google.api.default_host) = "databasecenter.googleapis.com";
+  option (google.api.oauth_scopes) =
+      "https://www.googleapis.com/auth/cloud-platform";
+
+  // QueryProducts provides a list of all possible products which can be used to
+  // filter database resources.
+  rpc QueryProducts(QueryProductsRequest) returns (QueryProductsResponse) {
+    option (google.api.http) = {
+      get: "/v1beta:queryProducts"
+    };
+  }
+
+  // AggregateFleet provides statistics about the fleet grouped by various
+  // fields.
+  rpc AggregateFleet(AggregateFleetRequest) returns (AggregateFleetResponse) {
+    option (google.api.http) = {
+      get: "/v1beta:aggregateFleet"
+    };
+  }
+
+  // QueryDatabaseResourceGroups returns paginated results of database groups.
+  rpc QueryDatabaseResourceGroups(QueryDatabaseResourceGroupsRequest)
+      returns (QueryDatabaseResourceGroupsResponse) {
+    option (google.api.http) = {
+      post: "/v1beta:queryDatabaseResourceGroups"
+      body: "*"
+    };
+  }
+
+  // AggregateIssueStats provides database resource issues statistics.
+  rpc AggregateIssueStats(AggregateIssueStatsRequest)
+      returns (AggregateIssueStatsResponse) {
+    option (google.api.http) = {
+      post: "/v1beta:aggregateIssueStats"
+      body: "*"
+    };
+  }
+
+  // QueryIssues provides a list of issues and recommendations
+  // that a user has access to and that are within the requested scope.
+  rpc QueryIssues(QueryIssuesRequest) returns (QueryIssuesResponse) {
+    option (google.api.http) = {
+      post: "/v1beta:queryIssues"
+      body: "*"
+    };
+    option (google.api.method_signature) = "parent";
+  }
+}
+
+// Represents the edition of a database resource.
+enum Edition {
+  // Default, to make it consistent with instance edition enum.
+  EDITION_UNSPECIFIED = 0;
+
+  // Represents the enterprise edition.
+  EDITION_ENTERPRISE = 1;
+
+  // Represents the enterprise plus edition.
+  EDITION_ENTERPRISE_PLUS = 2;
+
+  // Represents the standard edition.
+  EDITION_STANDARD = 3;
+}
+
+// SubResourceType refers to the sub-type of database resource.
+enum SubResourceType {
+  // Unspecified.
+  SUB_RESOURCE_TYPE_UNSPECIFIED = 0;
+
+  // A resource acting as a primary.
+  SUB_RESOURCE_TYPE_PRIMARY = 1;
+
+  // A resource acting as a secondary.
+  SUB_RESOURCE_TYPE_SECONDARY = 2;
+
+  // A resource acting as a read-replica.
+  SUB_RESOURCE_TYPE_READ_REPLICA = 3;
+
+  // A resource acting as an external primary.
+  SUB_RESOURCE_TYPE_EXTERNAL_PRIMARY = 5;
+
+  // A resource acting as a read pool.
+  SUB_RESOURCE_TYPE_READ_POOL = 6;
+
+  // Represents a reservation resource.
+  SUB_RESOURCE_TYPE_RESERVATION = 7;
+
+  // Represents a dataset resource.
+  SUB_RESOURCE_TYPE_DATASET = 8;
+
+  // For the rest of the categories.
+  SUB_RESOURCE_TYPE_OTHER = 4;
+}
+
+// The management type of the resource.
+enum ManagementType {
+  // Unspecified.
+  MANAGEMENT_TYPE_UNSPECIFIED = 0;
+
+  // Google-managed resource.
+  MANAGEMENT_TYPE_GCP_MANAGED = 1;
+
+  // Self-managed resource.
+  MANAGEMENT_TYPE_SELF_MANAGED = 2;
+}
+
+// The enum value corresponds to 'type' suffix in the resource_type field.
+enum ResourceCategory {
+  // Unspecified.
+  RESOURCE_CATEGORY_UNSPECIFIED = 0;
+
+  // A resource that is an Instance.
+  INSTANCE = 1;
+
+  // A resource that is a Cluster.
+  CLUSTER = 2;
+
+  // A resource that is a Database.
+  DATABASE = 3;
+
+  // A resource that is a Dataset.
+  DATASET = 4;
+
+  // A resource that is a Reservation.
+  RESERVATION = 5;
+}
+
+// QueryProductsRequest is the request to get a list of products.
+message QueryProductsRequest {
+  // Required. Parent can be a project, a folder, or an organization.
+  //
+  // The allowed values are:
+  //
+  // * projects/{PROJECT_ID}/locations/{LOCATION}
+  // (e.g.,"projects/foo-bar/locations/us-central1")
+  // * projects/{PROJECT_NUMBER}/locations/{LOCATION}
+  // (e.g.,"projects/12345678/locations/us-central1")
+  // * folders/{FOLDER_NUMBER}/locations/{LOCATION}
+  // (e.g.,"folders/1234567/locations/us-central1")
+  // * organizations/{ORGANIZATION_NUMBER}/locations/{LOCATION}
+  // (e.g.,"organizations/123456/locations/us-central1")
+  // * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
+  // * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
+  // * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
+  // * organizations/{ORGANIZATION_NUMBER} (e.g., "organizations/123456")
+  string parent = 3 [(google.api.field_behavior) = REQUIRED];
+
+  // Optional. If unspecified, at most 50 products will be returned.
+  // The maximum value is 1000; values above 1000 will be coerced to 1000.
+  int32 page_size = 1 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. A page token, received from a previous `ListLocations` call.
+  // Provide this to retrieve the subsequent page.
+  // All other parameters except page size should match the call that provided
+  // the page page token.
+  string page_token = 2 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// QueryProductsResponse represents the response containing a list of products.
+message QueryProductsResponse {
+  // List of database products returned.
+  repeated Product products = 1;
+
+  // A token that can be sent as `page_token` to retrieve the next page.
+  // If this field is omitted, there are no subsequent pages
+  string next_page_token = 2;
+
+  // Unordered list. List of unreachable regions from where data could not be
+  // retrieved.
+  repeated string unreachable = 3
+      [(google.api.field_behavior) = UNORDERED_LIST];
+}
+
+// QueryDatabaseResourceGroupsRequest is the request to get a list of database
+// groups.
+message QueryDatabaseResourceGroupsRequest {
+  // Required. Parent can be a project, a folder, or an organization. The search
+  // is limited to the resources within the `scope`.
+  //
+  // The allowed values are:
+  //
+  // * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
+  // * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
+  // * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
+  // * organizations/{ORGANIZATION_NUMBER} (e.g., "organizations/123456")
+  string parent = 1 [(google.api.field_behavior) = REQUIRED];
+
+  // Optional. The expression to filter resources.
+  //
+  // The following fields are filterable:
+  //   * full_resource_name
+  //   * resource_type
+  //   * container
+  //   * product.type
+  //   * product.engine
+  //   * product.version
+  //   * location
+  //   * labels
+  //   * resource_category
+  //   * machine_config.cpu_count
+  //   * machine_config.memory_size_bytes
+  //   * machine_config.shard_count
+  //   * resource_name
+  //   * tags
+  //   * backupdr_config.backupdr_managed
+  //   * edition
+  //
+  // The expression is a list of zero or more restrictions combined via logical
+  // operators `AND` and `OR`. When `AND` and `OR` are both used in the
+  // expression, parentheses must be appropriately used to group the
+  // combinations.
+  //
+  // Example: `location="us-east1"`
+  // Example: `container="projects/123" OR container="projects/456"`
+  // Example: `(container="projects/123" OR
+  //           container="projects/456") AND location="us-east1"`
+  // Example: `full_resource_name=~"test"`
+  // Example: `full_resource_name=~"test.*master"`
+  string filter = 2 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Groups of signal types that are requested.
+  repeated SignalTypeGroup signal_type_groups = 3
+      [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Filters based on signals. The list will be ORed together and then
+  // ANDed with the `filters` field above.
+  repeated SignalFilter signal_filters = 4
+      [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. A field that specifies the sort order of the results.
+  //
+  // The following fields are sortable:
+  //   * full_resource_name
+  //   * product.type
+  //   * product.engine
+  //   * product.version
+  //   * container
+  //   * issue_count
+  //   * machine_config.vcpu_count
+  //   * machine_config.memory_size_bytes
+  //   * machine_config.shard_count
+  //   * resource_name
+  //   * issue_severity
+  //   * signal_type
+  //   * location
+  //   * resource_type
+  //   * instance_type
+  //   * edition
+  //   * metrics.p99_cpu_utilization
+  //   * metrics.p95_cpu_utilization
+  //   * metrics.current_storage_used_bytes
+  //   * metrics.node_count
+  //   * metrics.processing_unit_count
+  //   * metrics.current_memory_used_bytes
+  //   * metrics.peak_storage_utilization
+  //   * metrics.peak_number_connections
+  //   * metrics.peak_memory_utilization
+  //
+  // The default order is ascending. Add "DESC" after the field name to indicate
+  // descending order. Add "ASC" after the field name to indicate ascending
+  // order. It only supports a single field at a time.
+  //
+  // For example:
+  //  `order_by = "full_resource_name"` sorts response in ascending order
+  //  `order_by = "full_resource_name DESC"` sorts response in descending order
+  //  `order_by = "issue_count DESC"` sorts response in descending order of
+  //  count of all issues associated with a resource.
+  //
+  // More explicitly, `order_by = "full_resource_name, product"` is not
+  // supported.
+  string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. If unspecified, at most 50 resource groups will be returned.
+  // The maximum value is 1000; values above 1000 will be coerced to 1000.
+  int32 page_size = 6 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. A page token, received from a previous
+  // `QueryDatabaseResourceGroupsRequest` call. Provide this to retrieve the
+  // subsequent page. All parameters except page_token should match the
+  // parameters in the call that provided the page page token.
+  string page_token = 7 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// QueryDatabaseResourceGroupsResponse represents the response message
+// containing a list of resource groups.
+message QueryDatabaseResourceGroupsResponse {
+  // List of database resource groups that pass the filter.
+  repeated DatabaseResourceGroup resource_groups = 1;
+
+  // A token that can be sent as `page_token` to retrieve the next page.
+  // If this field is omitted, there are no subsequent pages.
+  string next_page_token = 2;
+
+  // Unordered list. List of unreachable regions from where data could not be
+  // retrieved.
+  repeated string unreachable = 3
+      [(google.api.field_behavior) = UNORDERED_LIST];
+}
+
+// DatabaseResourceGroup represents all resources that serve a common data set.
+// It is considered notionally as a single entity, powered by any number of
+// units of compute and storage.
+message DatabaseResourceGroup {
+  // A database resource that serves as a root of the group of database
+  // resources. It is repeated just in case we have the concept of multiple
+  // roots in the future, however, it will only be populated with a single value
+  // for now.
+  repeated DatabaseResource root_resources = 1;
+
+  // The filtered signal groups and the count of issues associated with the
+  // resources that have been filtered in.
+  repeated IssueCount signal_groups = 2;
+}
+
+// DatabaseResource represents every individually configured database unit
+// representing compute and/or storage.
+message DatabaseResource {
+  // List of children associated with a database group.
+  repeated DatabaseResource child_resources = 1;
+
+  // The full resource name, based on CAIS resource name format
+  // https://cloud.google.com/asset-inventory/docs/resource-name-format
+  //
+  // Example:
+  //
+  //  `//cloudsql.googleapis.com/projects/project-number/instances/mysql-1`
+  //  `//cloudsql.googleapis.com/projects/project-number/instances/postgres-1`
+  //  `//spanner.googleapis.com/projects/project-number/instances/spanner-instance-1`
+  //  `//alloydb.googleapis.com/projects/project-number/locations/us-central1/clusters/c1`
+  //  `//alloydb.googleapis.com/projects/project-number/locations/us-central1/clusters/c1/instances/i1`
+  string full_resource_name = 3;
+
+  // Specifies where the resource is created. For Google Cloud resources, it is
+  // the full name of the project.
+  string container = 4;
+
+  // The product this resource represents.
+  Product product = 5;
+
+  // The location of the resources. It supports returning only regional
+  // locations in Google Cloud. These are of the form: "us-central1",
+  // "us-east1", etc. See https://cloud.google.com/about/locations for a list of
+  // such regions.
+  string location = 6;
+
+  // Labels applied on the resource. The requirements for labels assigned to
+  // Google Cloud resources may be found at
+  // https://cloud.google.com/resource-manager/docs/labels-overview#requirements
+  repeated Label labels = 7;
+
+  // Tags applied on the resource. The requirements for tags assigned to
+  // Google Cloud resources may be found at
+  // https://cloud.google.com/resource-manager/docs/tags/tags-overview
+  repeated Tag tags = 16;
+
+  // The type of resource defined according to the pattern:
+  // {Service Name}/{Type}. Ex:
+  // sqladmin.googleapis.com/Instance
+  // alloydb.googleapis.com/Cluster
+  // alloydb.googleapis.com/Instance
+  // spanner.googleapis.com/Instance
+  string resource_type = 8;
+
+  // Subtype of the resource specified at creation time.
+  SubResourceType sub_resource_type = 9;
+
+  // Machine configuration like CPU, memory, etc for the resource.
+  MachineConfig machine_config = 12;
+
+  // The list of signal groups and count of issues related to the resource.
+  // Only those signals which have been requested would be included.
+  repeated SignalGroup signal_groups = 10;
+
+  // Observable metrics for the resource e.g. CPU utilization, memory
+  // utilization, etc.
+  Metrics metrics = 13;
+
+  // The category of the resource.
+  ResourceCategory resource_category = 14;
+
+  // The name of the resource(The last part of the full resource name).
+  // Example:
+  // For full resource name -
+  // `//cloudsql.googleapis.com/projects/project-number/instances/mysql-1`,
+  // resource name - `mysql-1`
+  // For full resource name -
+  // `//cloudsql.googleapis.com/projects/project-number/instances/postgres-1` ,
+  // resource name - `postgres-1`
+  // Note: In some cases, there might be more than one resource with the same
+  // resource name.
+  string resource_name = 15;
+
+  // Optional. Backup and disaster recovery details for the resource.
+  BackupDRConfig backupdr_config = 17 [(google.api.field_behavior) = OPTIONAL];
+
+  // The edition of the resource.
+  Edition edition = 18;
+
+  // Optional. The maintenance information of the resource.
+  MaintenanceInfo maintenance_info = 19
+      [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Affiliation details of the resource.
+  repeated Affiliation affiliations = 20
+      [(google.api.field_behavior) = OPTIONAL];
+}
+
+// AggregateIssueStatsRequest represents the input to the AggregateIssueStats
+// method.
+message AggregateIssueStatsRequest {
+  // Required. Parent can be a project, a folder, or an organization. The search
+  // is limited to the resources within the `scope`.
+  //
+  // The allowed values are:
+  //
+  // * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
+  // * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
+  // * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
+  // * organizations/{ORGANIZATION_NUMBER} (e.g., "organizations/123456")
+  string parent = 1 [(google.api.field_behavior) = REQUIRED];
+
+  // Optional. The expression to filter resources.
+  //
+  // Supported fields are: `full_resource_name`, `resource_type`, `container`,
+  //   `product.type`, `product.engine`, `product.version`, `location`,
+  //   `labels`, `issues`, fields of availability_info,
+  //   data_protection_info,'resource_name', etc.
+  //
+  // The expression is a list of zero or more restrictions combined via logical
+  // operators `AND` and `OR`. When `AND` and `OR` are both used in the
+  // expression, parentheses must be appropriately used to group the
+  // combinations.
+  //
+  // Example: `location="us-east1"`
+  // Example: `container="projects/123" OR container="projects/456"`
+  // Example: `(container="projects/123" OR
+  //           container="projects/456") AND location="us-east1"`
+  string filter = 2 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Lists of signal types that are issues.
+  repeated SignalTypeGroup signal_type_groups = 3
+      [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. The baseline date w.r.t. which the delta counts are calculated.
+  // If not set, delta counts are not included in the response and the response
+  // indicates the current state of the fleet.
+  optional google.type.Date baseline_date = 4
+      [(google.api.field_behavior) = OPTIONAL];
+}
+
+// The response message containing one of more group of relevant health issues
+// for database resources.
+message AggregateIssueStatsResponse {
+  // List of issue group stats where each group contains stats for resources
+  // having a particular combination of relevant issues.
+  repeated IssueGroupStats issue_group_stats = 1;
+
+  // Total count of the resources filtered in based on the user given filter.
+  int32 total_resources_count = 2;
+
+  // Total count of the resource filtered in based on the user given filter.
+  int32 total_resource_groups_count = 3;
+
+  // Unordered list. List of unreachable regions from where data could not be
+  // retrieved.
+  repeated string unreachable = 4
+      [(google.api.field_behavior) = UNORDERED_LIST];
+}
+
+// IssueGroupStats refers to stats for a particulare combination of relevant
+// health issues of database resources.
+message IssueGroupStats {
+  // Database resource level health card name. This will corresponds to one of
+  // the requested input group names.
+  string display_name = 1;
+
+  // Total count of the groups of resources returned by the filter that
+  // also have one or more resources for which any of the specified issues
+  // are applicable.
+  int32 resource_groups_count = 2;
+
+  // Total count of resources returned by the filter for which any of the
+  // specified issues are applicable.
+  int32 resources_count = 3;
+
+  // The number of resource groups from the total groups as defined above
+  // that are healthy with respect to all of the specified issues.
+  int32 healthy_resource_groups_count = 4;
+
+  // The number of resources from the total defined above in field
+  // total_resources_count that are healthy with respect to all of the specified
+  // issues.
+  int32 healthy_resources_count = 5;
+
+  // List of issues stats containing count of resources having particular issue
+  // category.
+  repeated IssueStats issue_stats = 6;
+}
+
+// IssueStats holds stats for a particular signal category.
+message IssueStats {
+  // Type of signal which is an issue.
+  SignalType signal_type = 1;
+
+  // Number of resources having issues of a given type.
+  int32 resource_count = 2;
+
+  // Optional. Delta counts and details of resources for which issue was raised
+  // or fixed.
+  optional DeltaDetails delta_details = 3
+      [(google.api.field_behavior) = OPTIONAL];
+
+  // Severity of the issue.
+  optional IssueSeverity issue_severity = 4;
+}
+
+// Label is a key value pair applied to a resource.
+message Label {
+  // The key part of the label.
+  string key = 1;
+
+  // The value part of the label.
+  string value = 2;
+
+  // The source of the Label. Source is empty if the label is directly attached
+  // to the resource and not inherited.
+  string source = 3;
+}
+
+// The request message to aggregate fleet which are grouped by a field.
+message AggregateFleetRequest {
+  // Required. Parent can be a project, a folder, or an organization. The search
+  // is limited to the resources within the `scope`.
+  //
+  // The allowed values are:
+  //
+  // * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
+  // * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
+  // * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
+  // * organizations/{ORGANIZATION_NUMBER} (e.g.,
+  // "organizations/123456")
+  string parent = 1 [(google.api.field_behavior) = REQUIRED];
+
+  // Optional. The expression to filter resources.
+  //
+  // Supported fields are: `full_resource_name`, `resource_type`, `container`,
+  //   `product.type`, `product.engine`, `product.version`, `location`,
+  //   `labels`, `issues`, fields of availability_info, data_protection_info,
+  //   'resource_name', etc.
+  //
+  // The expression is a list of zero or more restrictions combined via logical
+  // operators `AND` and `OR`. When `AND` and `OR` are both used in the
+  // expression, parentheses must be appropriately used to group the
+  // combinations.
+  //
+  // Example: `location="us-east1"`
+  // Example: `container="projects/123" OR container="projects/456"`
+  // Example: `(container="projects/123" OR
+  //           container="projects/456") AND location="us-east1"`
+  string filter = 2 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. A field that statistics are grouped by.
+  // Valid values are any combination of the following:
+  //   * container
+  //   * product.type
+  //   * product.engine
+  //   * product.version
+  //   * location
+  //   * sub_resource_type
+  //   * management_type
+  //   * tag.key
+  //   * tag.value
+  //   * tag.source
+  //   * tag.inherited
+  //   * label.key
+  //   * label.value
+  //   * label.source
+  //   * has_maintenance_schedule
+  //   * has_deny_maintenance_schedules
+  // Comma separated list.
+  string group_by = 3 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Valid values to order by are:
+  //   * resource_groups_count
+  //   * resources_count
+  //   * and all fields supported by `group_by`
+  // The default order is ascending. Add "DESC" after the field name to indicate
+  // descending order. Add "ASC" after the field name to indicate ascending
+  // order. It supports ordering using multiple fields.
+  // For example:
+  //  `order_by = "resource_groups_count"` sorts response in ascending order
+  //  `order_by = "resource_groups_count DESC"` sorts response in descending
+  //  order
+  //  `order_by = "product.type, product.version DESC, location"` orders by type
+  //  in ascending order, version in descending order and location in ascending
+  //  order
+  string order_by = 4 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. If unspecified, at most 50 items will be returned.
+  // The maximum value is 1000; values above 1000 will be coerced to 1000.
+  int32 page_size = 5 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. A page token, received from a previous `AggregateFleet` call.
+  // Provide this to retrieve the subsequent page.
+  // All other parameters should match the parameters in the call that provided
+  // the page token except for page_size which can be different.
+  string page_token = 6 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. The baseline date w.r.t. which the delta counts are calculated.
+  // If not set, delta counts are not included in the response and the response
+  // indicates the current state of the fleet.
+  optional google.type.Date baseline_date = 7
+      [(google.api.field_behavior) = OPTIONAL];
+}
+
+// The response message to aggregate a fleet by some group by
+// fields.
+message AggregateFleetResponse {
+  // Represents a row grouped by the fields in the input.
+  repeated AggregateFleetRow rows = 1;
+
+  // Count of all resource groups in the fleet. This includes counts from all
+  // pages.
+  int32 resource_groups_total_count = 2;
+
+  // Count of all resources in the fleet. This includes counts from all pages.
+  int32 resource_total_count = 3;
+
+  // A token that can be sent as `page_token` to retrieve the next page.
+  // If this field is omitted, there are no subsequent pages.
+  string next_page_token = 4;
+
+  // Unordered list. List of unreachable regions from where data could not be
+  // retrieved.
+  repeated string unreachable = 5
+      [(google.api.field_behavior) = UNORDERED_LIST];
+}
+
+// Individual row grouped by a particular dimension.
+message AggregateFleetRow {
+  // Group by dimension.
+  repeated Dimension dimension = 1;
+
+  // Number of resource groups that have a particular dimension.
+  int32 resource_groups_count = 2;
+
+  // Number of resources that have a particular dimension.
+  int32 resources_count = 3;
+
+  // Optional. Delta counts and details of resources which were added to/deleted
+  // from fleet.
+  optional DeltaDetails delta_details = 4
+      [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Dimension used to aggregate the fleet.
+message Dimension {
+  // Followings are the dimensions to be used to aggregate the fleet.
+  oneof dimension {
+    // Specifies where the resource is created. For Google Cloud resources, it
+    // is the full name of the project.
+    string container = 2;
+
+    // Type to identify a product
+    ProductType product_type = 3;
+
+    // Engine refers to underlying database binary running in an instance.
+    Engine product_engine = 4;
+
+    // Version of the underlying database engine
+    string product_version = 5;
+
+    // The location of the resources. It supports returning only regional
+    // locations in Google Cloud.
+    string location = 6;
+
+    // The type of resource defined according to the pattern:
+    // {Service Name}/{Type}. Ex:
+    // sqladmin.googleapis.com/Instance
+    // alloydb.googleapis.com/Cluster
+    // alloydb.googleapis.com/Instance
+    // spanner.googleapis.com/Instance
+    string resource_type = 7;
+
+    // Subtype of the resource specified at creation time.
+    SubResourceType sub_resource_type = 8;
+
+    // The category of the resource.
+    ResourceCategory resource_category = 9;
+
+    // The management type of the resource.
+    ManagementType management_type = 10;
+
+    // The edition of the resource.
+    Edition edition = 11;
+
+    // Tag key of the resource.
+    string tag_key = 12;
+
+    // Tag value of the resource.
+    string tag_value = 13;
+
+    // Tag source of the resource.
+    string tag_source = 14;
+
+    // Tag inheritance value of the resource.
+    bool tag_inherited = 15;
+
+    // Label key of the resource.
+    string label_key = 16;
+
+    // Label value of the resource.
+    string label_value = 17;
+
+    // Label source of the resource.
+    string label_source = 18;
+
+    // Whether the resource has a maintenance schedule.
+    bool has_maintenance_schedule = 19;
+
+    // Whether the resource has deny maintenance schedules.
+    bool has_deny_maintenance_schedules = 20;
+  }
+}
+
+// BackupDRConfig to capture the backup and disaster recovery details of
+// database resource.
+message BackupDRConfig {
+  // Indicates if the resource is managed by BackupDR.
+  optional bool backupdr_managed = 1;
+}
+
+// QueryIssuesRequest is the request to get a list of issues.
+message QueryIssuesRequest {
+  // Required. Parent can be a project, a folder, or an organization. The list
+  // is limited to the one attached to resources within the `scope` that a user
+  // has access to.
+  //
+  // The allowed values are:
+  //
+  // * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
+  // * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
+  // * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
+  // * organizations/{ORGANIZATION_NUMBER} (e.g., "organizations/123456")
+  string parent = 1 [(google.api.field_behavior) = REQUIRED];
+
+  // Optional.
+  // Supported fields are:
+  // 'product',
+  // `location`,
+  // `issue_severity`,
+  // 'tags',
+  // 'labels',
+  string filter = 2 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Filters based on signal and product. The filter list will be ORed
+  // across pairs and ANDed within a signal and products pair.
+  repeated SignalProductsFilters signal_products_filters = 3
+      [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Following fields are sortable:
+  // SignalType
+  // Product
+  // Location
+  // IssueSeverity
+  //
+  // The default order is ascending. Add "DESC" after the field name to indicate
+  // descending order. Add "ASC" after the field name to indicate ascending
+  // order. It only supports a single field at a time.
+  string order_by = 4 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. If unspecified, at most 50 issues will be returned.
+  // The maximum value is 1000; values above 1000 will be coerced to 1000.
+  int32 page_size = 5 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. A page token, received from a previous `QueryIssues` call.
+  // Provide this to retrieve the subsequent page.
+  // All parameters except page size should match the parameters used in the
+  // call that provided the page token.
+  string page_token = 6 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// SignalProductsFilters represents a signal and list of supported products.
+message SignalProductsFilters {
+  // Optional. The type of signal.
+  SignalType signal_type = 1 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Product type of the resource. The version of the product will be
+  // ignored in filtering.
+  repeated Product products = 2 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// QueryIssuesResponse is the response containing a list of issues.
+message QueryIssuesResponse {
+  // List of issues and resource details.
+  repeated DatabaseResourceIssue resource_issues = 1;
+
+  // A token that can be sent as `page_token` to retrieve the next page.
+  // If this field is omitted, there are no subsequent pages.
+  string next_page_token = 2;
+
+  // Unordered list. List of unreachable regions from where data could not be
+  // retrieved.
+  repeated string unreachable = 3
+      [(google.api.field_behavior) = UNORDERED_LIST];
+}
+
+// DatabaseResource and Issue associated with it.
+message DatabaseResourceIssue {
+  // Signal associated with the issue.
+  Signal signal = 1;
+
+  // Resource associated with the issue.
+  DatabaseResource resource = 2;
+}
+
+// Tag is a key value pair attached to a resource.
+message Tag {
+  string key = 1;
+
+  // The value part of the tag.
+  string value = 2;
+
+  // The source of the tag. According to
+  // https://cloud.google.com/resource-manager/docs/tags/tags-overview#tags_and_labels,
+  // tags can be created only at the project or organization level. Tags can be
+  // inherited from different project as well not just the current project where
+  // the database resource is present.
+  // Format:
+  // "projects/{PROJECT_ID}",
+  // "projects/{PROJECT_NUMBER}",
+  // "organizations/{ORGANIZATION_ID}"
+  string source = 3;
+
+  // Indicates the inheritance status of a tag value
+  // attached to the given resource. If the tag value is inherited from one of
+  // the resource's ancestors, inherited will be true. If false, then the tag
+  // value is directly attached to the resource.
+  bool inherited = 4;
+}
+
+// Capture the resource details for resources that are included in the delta
+// counts.
+message ResourceDetails {
+  // Full resource name of the resource.
+  string full_resource_name = 1;
+
+  // Specifies where the resource is created. For Google Cloud resources, it is
+  // the full name of the project.
+  string container = 2;
+
+  // Product type of the resource.
+  Product product = 3;
+
+  // Location of the resource.
+  string location = 4;
+}
+
+// Captures the details of items that have increased or decreased in some bucket
+// when compared to some point in history.
+// It is currently used to capture the delta of resources that have been added
+// or removed in the fleet as well as to capture the resources that have a
+// change in Issue/Signal status.
+message DeltaDetails {
+  // Details of resources that have increased.
+  repeated ResourceDetails increased_resources = 1;
+
+  // Details of resources that have decreased.
+  repeated ResourceDetails decreased_resources = 2;
+}
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/signals.proto b/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/signals.proto
new file mode 100644
index 000000000000..01c2f9ad1973
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/signals.proto
@@ -0,0 +1,789 @@
+// Copyright 2026 Google LLC
+//
+// 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.
+
+syntax = "proto3";
+
+package google.cloud.databasecenter.v1beta;
+
+import "google/api/field_behavior.proto";
+import "google/cloud/databasecenter/v1beta/maintenance.proto";
+import "google/cloud/databasecenter/v1beta/operation_error_type.proto";
+import "google/cloud/databasecenter/v1beta/product.proto";
+import "google/cloud/databasecenter/v1beta/suspension_reason.proto";
+import "google/protobuf/duration.proto";
+import "google/protobuf/timestamp.proto";
+import "google/protobuf/wrappers.proto";
+
+option csharp_namespace = "Google.Cloud.DatabaseCenter.V1Beta";
+option go_package = "cloud.google.com/go/databasecenter/apiv1beta/databasecenterpb;databasecenterpb";
+option java_multiple_files = true;
+option java_outer_classname = "SignalsProto";
+option java_package = "com.google.cloud.databasecenter.v1beta";
+option php_namespace = "Google\\Cloud\\DatabaseCenter\\V1beta";
+option ruby_package = "Google::Cloud::DatabaseCenter::V1beta";
+
+// Represents the state of a signal. More enum values are expected to be added
+// as needed.
+enum SignalStatus {
+  // Unspecified.
+  SIGNAL_STATUS_UNSPECIFIED = 0;
+
+  // Signal is not applicable to the resource.
+  SIGNAL_STATUS_NOT_APPLICABLE = 1;
+
+  // Signal is not an issue.
+  SIGNAL_STATUS_OK = 2;
+
+  // Signal is an issue.
+  SIGNAL_STATUS_ISSUE = 3;
+
+  // Signal is not enabled for the resource.
+  SIGNAL_STATUS_NOT_ENABLED = 4;
+}
+
+// Represents the source system from where a signal comes from.
+// More enum values are expected to be added as needed.
+enum SignalSource {
+  // Unspecified.
+  SIGNAL_SOURCE_UNSPECIFIED = 0;
+
+  // Signal comes from resource metadata.
+  SIGNAL_SOURCE_RESOURCE_METADATA = 1;
+
+  // Signal comes from SCC findings.
+  SIGNAL_SOURCE_SECURITY_FINDINGS = 2;
+
+  // Signal comes from recommender hub.
+  SIGNAL_SOURCE_RECOMMENDER = 3;
+
+  // Signal comes from modern observability platform.
+  SIGNAL_SOURCE_MODERN_OBSERVABILITY = 4;
+}
+
+// IssueSeverity represents the severity of an issue.
+enum IssueSeverity {
+  // Unspecified.
+  ISSUE_SEVERITY_UNSPECIFIED = 0;
+
+  // Low severity.
+  ISSUE_SEVERITY_LOW = 1;
+
+  // Medium severity.
+  ISSUE_SEVERITY_MEDIUM = 2;
+
+  // High severity.
+  ISSUE_SEVERITY_HIGH = 3;
+
+  // Critical severity.
+  ISSUE_SEVERITY_CRITICAL = 4;
+
+  // Irrelevant severity. This means the issue should not be surfaced at all.
+  ISSUE_SEVERITY_IRRELEVANT = 5;
+}
+
+// Represents the type of a signal. More values are expected to be added
+// as needed.
+enum SignalType {
+  // Unspecified.
+  SIGNAL_TYPE_UNSPECIFIED = 0;
+
+  // Represents if a resource is protected by automatic failover.
+  // Checks for resources that are configured to have redundancy
+  // within a region that enables automatic failover.
+  SIGNAL_TYPE_RESOURCE_FAILOVER_PROTECTED = 1;
+
+  // Represents if a group is replicating across regions.
+  // Checks for resources that are configured to have redundancy,
+  // and ongoing replication, across regions.
+  SIGNAL_TYPE_GROUP_MULTIREGIONAL = 2;
+
+  // Represents if a resource has an automated backup policy.
+  SIGNAL_TYPE_NO_AUTOMATED_BACKUP_POLICY = 4;
+
+  // Represents if a resources has a short backup retention period.
+  SIGNAL_TYPE_SHORT_BACKUP_RETENTION = 5;
+
+  // Represents if the last backup of a resource failed.
+  SIGNAL_TYPE_LAST_BACKUP_FAILED = 6;
+
+  // Represents if the last backup of a resource is older than some threshold
+  // value.
+  SIGNAL_TYPE_LAST_BACKUP_OLD = 7;
+
+  // Represents if a resource violates CIS Google Cloud Platform Foundation 2.0.
+  SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_2_0 = 8;
+
+  // Represents if a resource violates CIS Google Cloud Platform Foundation 1.3.
+  SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_3 = 9;
+
+  // Represents if a resource violates CIS Google Cloud Platform Foundation 1.2.
+  SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_2 = 10;
+
+  // Represents if a resource violates CIS Google Cloud Platform Foundation 1.1.
+  SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_1 = 11;
+
+  // Represents if a resource violates CIS Google Cloud Platform Foundation 1.0.
+  SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_0 = 12;
+
+  // Represents if a resource violates CIS Controls 8.0.
+  SIGNAL_TYPE_VIOLATES_CIS_CONTROLS_V8_0 = 76;
+
+  // Represents if a resource violates NIST 800-53.
+  SIGNAL_TYPE_VIOLATES_NIST_800_53 = 13;
+
+  // Represents if a resource violates NIST 800-53 R5.
+  SIGNAL_TYPE_VIOLATES_NIST_800_53_R5 = 69;
+
+  // Represents if a resource violates NIST Cybersecurity Framework 1.0.
+  SIGNAL_TYPE_VIOLATES_NIST_CYBERSECURITY_FRAMEWORK_V1_0 = 72;
+
+  // Represents if a resource violates ISO-27001.
+  SIGNAL_TYPE_VIOLATES_ISO_27001 = 14;
+
+  // Represents if a resource violates ISO 27001 2022.
+  SIGNAL_TYPE_VIOLATES_ISO_27001_V2022 = 70;
+
+  // Represents if a resource violates PCI-DSS v3.2.1.
+  SIGNAL_TYPE_VIOLATES_PCI_DSS_V3_2_1 = 15;
+
+  // Represents if a resource violates PCI-DSS v4.0.
+  SIGNAL_TYPE_VIOLATES_PCI_DSS_V4_0 = 71;
+
+  // Represents if a resource violates Cloud Controls Matrix v4.0.
+  SIGNAL_TYPE_VIOLATES_CLOUD_CONTROLS_MATRIX_V4 = 73;
+
+  // Represents if a resource violates HIPAA.
+  SIGNAL_TYPE_VIOLATES_HIPAA = 74;
+
+  // Represents if a resource violates SOC2 v2017.
+  SIGNAL_TYPE_VIOLATES_SOC2_V2017 = 75;
+
+  // Represents if log_checkpoints database flag for a Cloud SQL for PostgreSQL
+  // instance is not set to on.
+  SIGNAL_TYPE_LOGS_NOT_OPTIMIZED_FOR_TROUBLESHOOTING = 16;
+
+  // Represents if the log_duration database flag for a Cloud SQL for PostgreSQL
+  // instance is not set to on.
+  SIGNAL_TYPE_QUERY_DURATIONS_NOT_LOGGED = 17;
+
+  // Represents if the log_error_verbosity database flag for a Cloud SQL for
+  // PostgreSQL instance is not set to default or stricter (default or terse).
+  SIGNAL_TYPE_VERBOSE_ERROR_LOGGING = 18;
+
+  // Represents if the log_lock_waits database flag for a Cloud SQL for
+  // PostgreSQL instance is not set to on.
+  SIGNAL_TYPE_QUERY_LOCK_WAITS_NOT_LOGGED = 19;
+
+  // Represents if the log_min_error_statement database flag for a Cloud SQL
+  // for PostgreSQL instance is not set appropriately.
+  SIGNAL_TYPE_LOGGING_MOST_ERRORS = 20;
+
+  // Represents if the log_min_error_statement database flag for a Cloud SQL
+  // for PostgreSQL instance does not have an appropriate severity level.
+  SIGNAL_TYPE_LOGGING_ONLY_CRITICAL_ERRORS = 21;
+
+  // Represents if the log_min_messages database flag for a Cloud SQL for
+  // PostgreSQL instance is not set to warning or another recommended value.
+  SIGNAL_TYPE_MINIMAL_ERROR_LOGGING = 22;
+
+  // Represents if the databaseFlags property of instance metadata for
+  // the log_executor_status field is set to on.
+  SIGNAL_TYPE_QUERY_STATS_LOGGED = 23;
+
+  // Represents if the log_hostname database flag for a Cloud SQL for
+  // PostgreSQL instance is not set to off.
+  SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_CLIENT_HOSTNAME = 24;
+
+  // Represents if the log_parser_stats database flag for a Cloud SQL for
+  // PostgreSQL instance is not set to off.
+  SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PARSER_STATS = 25;
+
+  // Represents if the log_planner_stats database flag for a Cloud SQL for
+  // PostgreSQL instance is not set to off.
+  SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PLANNER_STATS = 26;
+
+  // Represents if the log_statement database flag for a Cloud SQL for
+  // PostgreSQL instance is not set to DDL (all data definition statements).
+  SIGNAL_TYPE_NOT_LOGGING_ONLY_DDL_STATEMENTS = 27;
+
+  // Represents if the log_statement_stats database flag for a Cloud SQL for
+  // PostgreSQL instance is not set to off.
+  SIGNAL_TYPE_LOGGING_QUERY_STATS = 28;
+
+  // Represents if the log_temp_files database flag for a Cloud SQL for
+  // PostgreSQL instance is not set to "0". (NOTE: 0 = ON)
+  SIGNAL_TYPE_NOT_LOGGING_TEMPORARY_FILES = 29;
+
+  // Represents if the user connections database flag for a Cloud SQL for SQL
+  // Server instance is configured.
+  SIGNAL_TYPE_CONNECTION_MAX_NOT_CONFIGURED = 30;
+
+  // Represents if the user options database flag for Cloud SQL SQL Server
+  // instance is configured or not.
+  SIGNAL_TYPE_USER_OPTIONS_CONFIGURED = 31;
+
+  // Represents if a resource is exposed to public access.
+  SIGNAL_TYPE_EXPOSED_TO_PUBLIC_ACCESS = 32;
+
+  // Represents if a resources requires all incoming connections to use SSL
+  // or not.
+  SIGNAL_TYPE_UNENCRYPTED_CONNECTIONS = 33;
+
+  // Represents if a Cloud SQL database has a password configured for the
+  // root account or not.
+  SIGNAL_TYPE_NO_ROOT_PASSWORD = 34;
+
+  // Represents if a Cloud SQL database has a weak password configured for the
+  // root account.
+  SIGNAL_TYPE_WEAK_ROOT_PASSWORD = 35;
+
+  // Represents if a SQL database instance is not encrypted with
+  // customer-managed encryption keys (CMEK).
+  SIGNAL_TYPE_ENCRYPTION_KEY_NOT_CUSTOMER_MANAGED = 36;
+
+  // Represents if The contained database authentication database flag for a
+  // Cloud SQL for SQL Server instance is not set to off.
+  SIGNAL_TYPE_SERVER_AUTHENTICATION_NOT_REQUIRED = 37;
+
+  // Represents if he external scripts enabled database flag for a Cloud SQL
+  // for SQL Server instance is not set to off.
+  SIGNAL_TYPE_EXPOSED_TO_EXTERNAL_SCRIPTS = 39;
+
+  // Represents if the local_infile database flag for a Cloud SQL for MySQL
+  // instance is not set to off.
+  SIGNAL_TYPE_EXPOSED_TO_LOCAL_DATA_LOADS = 40;
+
+  // Represents if the log_connections database flag for a Cloud SQL for
+  // PostgreSQL instance is not set to on.
+  SIGNAL_TYPE_CONNECTION_ATTEMPTS_NOT_LOGGED = 41;
+
+  // Represents if the log_disconnections database flag for a Cloud SQL for
+  // PostgreSQL instance is not set to on.
+  SIGNAL_TYPE_DISCONNECTIONS_NOT_LOGGED = 42;
+
+  // Represents if the log_min_duration_statement database flag for a Cloud SQL
+  // for PostgreSQL instance is not set to -1.
+  SIGNAL_TYPE_LOGGING_EXCESSIVE_STATEMENT_INFO = 43;
+
+  // Represents if the remote access database flag for a Cloud SQL for SQL
+  // Server instance is not set to off.
+  SIGNAL_TYPE_EXPOSED_TO_REMOTE_ACCESS = 44;
+
+  // Represents if the skip_show_database database flag for a Cloud SQL for
+  // MySQL instance is not set to on.
+  SIGNAL_TYPE_DATABASE_NAMES_EXPOSED = 45;
+
+  // Represents if the 3625 (trace flag) database flag for a Cloud SQL for
+  // SQL Server instance is not set to on.
+  SIGNAL_TYPE_SENSITIVE_TRACE_INFO_NOT_MASKED = 46;
+
+  // Represents if public IP is enabled.
+  SIGNAL_TYPE_PUBLIC_IP_ENABLED = 47;
+
+  // Represents idle instance helps to reduce costs.
+  SIGNAL_TYPE_IDLE = 48;
+
+  // Represents instances that are unnecessarily large for given workload.
+  SIGNAL_TYPE_OVERPROVISIONED = 49;
+
+  // Represents high number of concurrently opened tables.
+  SIGNAL_TYPE_HIGH_NUMBER_OF_OPEN_TABLES = 50;
+
+  // Represents high table count close to SLA limit.
+  SIGNAL_TYPE_HIGH_NUMBER_OF_TABLES = 51;
+
+  // Represents high number of unvacuumed transactions
+  SIGNAL_TYPE_HIGH_TRANSACTION_ID_UTILIZATION = 52;
+
+  // Represents need for more CPU and/or memory
+  SIGNAL_TYPE_UNDERPROVISIONED = 53;
+
+  // Represents out of disk.
+  SIGNAL_TYPE_OUT_OF_DISK = 54;
+
+  // Represents server certificate is near expiry.
+  SIGNAL_TYPE_SERVER_CERTIFICATE_NEAR_EXPIRY = 55;
+
+  // Represents database auditing is disabled.
+  SIGNAL_TYPE_DATABASE_AUDITING_DISABLED = 56;
+
+  // Represents not restricted to authorized networks.
+  SIGNAL_TYPE_RESTRICT_AUTHORIZED_NETWORKS = 57;
+
+  // Represents violate org policy restrict public ip.
+  SIGNAL_TYPE_VIOLATE_POLICY_RESTRICT_PUBLIC_IP = 58;
+
+  // Cluster nearing quota limit
+  SIGNAL_TYPE_QUOTA_LIMIT = 59;
+
+  // No password policy set on resources
+  SIGNAL_TYPE_NO_PASSWORD_POLICY = 60;
+
+  // Performance impact of connections settings
+  SIGNAL_TYPE_CONNECTIONS_PERFORMANCE_IMPACT = 61;
+
+  // Performance impact of temporary tables settings
+  SIGNAL_TYPE_TMP_TABLES_PERFORMANCE_IMPACT = 62;
+
+  // Performance impact of transaction logs settings
+  SIGNAL_TYPE_TRANS_LOGS_PERFORMANCE_IMPACT = 63;
+
+  // Performance impact of high joins without indexes
+  SIGNAL_TYPE_HIGH_JOINS_WITHOUT_INDEXES = 64;
+
+  // Detects events where a database superuser (postgres for PostgreSQL servers
+  // or root for MySQL users) writes to non-system tables.
+  SIGNAL_TYPE_SUPERUSER_WRITING_TO_USER_TABLES = 65;
+
+  // Detects events where a database user or role has been granted all
+  // privileges to a database, or to all tables, procedures, or functions in a
+  // schema.
+  SIGNAL_TYPE_USER_GRANTED_ALL_PERMISSIONS = 66;
+
+  // Detects if database instance data exported to a Cloud Storage bucket
+  // outside of the organization.
+  SIGNAL_TYPE_DATA_EXPORT_TO_EXTERNAL_CLOUD_STORAGE_BUCKET = 67;
+
+  // Detects if database instance data exported to a Cloud Storage bucket that
+  // is owned by the organization and is publicly accessible.
+  SIGNAL_TYPE_DATA_EXPORT_TO_PUBLIC_CLOUD_STORAGE_BUCKET = 68;
+
+  // Detects if a database instance is using a weak password hash algorithm.
+  SIGNAL_TYPE_WEAK_PASSWORD_HASH_ALGORITHM = 77;
+
+  // Detects if a database instance has no user password policy set.
+  SIGNAL_TYPE_NO_USER_PASSWORD_POLICY = 78;
+
+  // Detects if a database instance/cluster has a hot node.
+  SIGNAL_TYPE_HOT_NODE = 79;
+
+  // Deletion Protection Disabled for the resource
+  SIGNAL_TYPE_NO_DELETION_PROTECTION = 80;
+
+  // Detects if a database instance has no point in time recovery enabled.
+  SIGNAL_TYPE_NO_POINT_IN_TIME_RECOVERY = 81;
+
+  // Detects if a database instance/cluster has suspended resources.
+  SIGNAL_TYPE_RESOURCE_SUSPENDED = 82;
+
+  // Detects that expensive commands are being run on a database instance
+  // impacting overall performance.
+  SIGNAL_TYPE_EXPENSIVE_COMMANDS = 83;
+
+  // Indicates that the instance does not have a maintenance policy configured.
+  SIGNAL_TYPE_NO_MAINTENANCE_POLICY_CONFIGURED = 84;
+
+  // Indicates that the instance has inefficient queries detected.
+  SIGNAL_TYPE_INEFFICIENT_QUERY = 85;
+
+  // Indicates that the instance has read intensive workload.
+  SIGNAL_TYPE_READ_INTENSIVE_WORKLOAD = 86;
+
+  // Indicates that the instance is nearing memory limit.
+  SIGNAL_TYPE_MEMORY_LIMIT = 87;
+
+  // Indicates that the instance's max server memory is configured higher than
+  // the recommended value.
+  SIGNAL_TYPE_MAX_SERVER_MEMORY = 88;
+
+  // Indicates that the database has large rows beyond the recommended limit.
+  SIGNAL_TYPE_LARGE_ROWS = 89;
+
+  // Heavy write pressure on the database rows.
+  SIGNAL_TYPE_HIGH_WRITE_PRESSURE = 90;
+
+  // Heavy read pressure on the database rows.
+  SIGNAL_TYPE_HIGH_READ_PRESSURE = 91;
+
+  // Encryption org policy not satisfied.
+  SIGNAL_TYPE_ENCRYPTION_ORG_POLICY_NOT_SATISFIED = 92;
+
+  // Location org policy not satisfied.
+  SIGNAL_TYPE_LOCATION_ORG_POLICY_NOT_SATISFIED = 93;
+
+  // Outdated DB minor version.
+  SIGNAL_TYPE_OUTDATED_MINOR_VERSION = 94;
+
+  // Schema not optimized.
+  SIGNAL_TYPE_SCHEMA_NOT_OPTIMIZED = 95;
+
+  // Replication delay.
+  SIGNAL_TYPE_REPLICATION_LAG = 97;
+
+  // Outdated client.
+  SIGNAL_TYPE_OUTDATED_CLIENT = 99;
+
+  // Databoost is disabled.
+  SIGNAL_TYPE_DATABOOST_DISABLED = 100;
+
+  // Recommended maintenance policy.
+  SIGNAL_TYPE_RECOMMENDED_MAINTENANCE_POLICIES = 101;
+
+  // Resource version is in extended support.
+  SIGNAL_TYPE_EXTENDED_SUPPORT = 102;
+
+  // Represents a database version nearing end of life.
+  SIGNAL_TYPE_VERSION_NEARING_END_OF_LIFE = 104;
+}
+
+// A group of signal types that specifies what the user is interested in.
+//
+// Used by QueryDatabaseResourceGroups API.
+//
+// Example:
+//
+// signal_type_group {
+//   name = "AVAILABILITY"
+//   types = [SIGNAL_TYPE_NO_PROMOTABLE_REPLICA]
+// }
+message SignalTypeGroup {
+  // Required. The display name of a signal group.
+  string display_name = 1 [(google.api.field_behavior) = REQUIRED];
+
+  // Optional. List of signal types present in the group.
+  repeated SignalType signal_types = 2 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// A filter for Signals.
+//
+// If signal_type is left unset, all signals should be returned.
+// For example, the following filter returns all issues.
+//   signal_filter: {
+//     signal_status: SIGNAL_STATUS_ISSUE;
+//   }
+//
+// Another example, the following filter returns issues of the given type:
+// signal_filter: {
+//   type: SIGNAL_TYPE_NO_PROMOTABLE_REPLICA
+//   signal_status: ISSUE
+// }
+//
+// If signal_status is left unset or set to SIGNAL_STATE_UNSPECIFIED, an error
+// should be returned.
+message SignalFilter {
+  // Optional. Represents the type of the Signal for which the filter is for.
+  SignalType signal_type = 1 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Represents the status of the Signal for which the filter is for.
+  SignalStatus signal_status = 2 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// A group of signals and their counts.
+message SignalGroup {
+  // Title of a signal group corresponding to the request.
+  string display_name = 1;
+
+  // When applied to a DatabaseResource represents count of issues associated
+  // with the resource. A signal is an issue when its SignalStatus field is
+  // set to SIGNAL_STATUS_ISSUE.
+  int32 issue_count = 2;
+
+  // List of signals present in the group and associated with the resource.
+  //
+  // Only applies to a DatabaseResource.
+  repeated Signal signals = 3;
+}
+
+// Count of issues for a group of signals.
+message IssueCount {
+  // Title of a signal group corresponding to the request.
+  string display_name = 1;
+
+  // The count of the number of issues associated with those resources that
+  // are explicitly filtered in by the filters present in the request.
+  // A signal is an issue when its SignalStatus field is set to
+  // SIGNAL_STATUS_ISSUE.
+  int32 issue_count = 2;
+}
+
+// Details related to signal.
+message AdditionalDetail {
+  // Details related to signal.
+  oneof detail {
+    // Short backup retention information applies to signals with type
+    // SIGNAL_TYPE_SHORT_BACKUP_RETENTION.
+    RetentionSettingsInfo short_backup_retention_info = 2;
+
+    // Backup run information applies to signals with types
+    // SIGNAL_TYPE_LAST_BACKUP_FAILED and SIGNAL_TYPE_LAST_BACKUP_OLD.
+    BackupRunInfo backup_run_info = 3;
+
+    // SCC information applies to SCC signals.
+    SCCInfo scc_info = 4;
+
+    // Recommendation information applies to recommendations.
+    RecommendationInfo recommendation_info = 6;
+
+    // Automated backup policy information applies to signals with type
+    // SIGNAL_TYPE_NO_AUTOMATED_BACKUP_POLICY.
+    AutomatedBackupPolicyInfo automated_backup_policy_info = 8;
+
+    // Deletion protection information applies to signals with type
+    // [SIGNAL_TYPE_NO_DELETION_PROTECTION][google.cloud.databasecenter.v1beta.SignalType.SIGNAL_TYPE_NO_DELETION_PROTECTION]
+    DeletionProtectionInfo deletion_protection_info = 9;
+
+    // Resource suspension information applies to signals with type
+    // [SIGNAL_TYPE_RESOURCE_SUSPENDED][google.cloud.databasecenter.v1beta.SignalType.SIGNAL_TYPE_RESOURCE_SUSPENDED].
+    ResourceSuspensionInfo resource_suspension_info = 10;
+
+    // Inefficient query information applies to signals with type
+    // [SIGNAL_TYPE_INEFFICIENT_QUERY][google.cloud.databasecenter.v1beta.SignalType.SIGNAL_TYPE_INEFFICIENT_QUERY].
+    InefficientQueryInfo inefficient_query_info = 11;
+
+    // Outdated minor version information applies to signals with type
+    // SIGNAL_TYPE_OUTDATED_MINOR_VERSION.
+    OutdatedMinorVersionInfo outdated_minor_version_info = 12;
+
+    // Maintenance recommendation information applies to signals
+    // with type SIGNAL_TYPE_RECOMMENDED_MAINTENANCE_POLICIES.
+    MaintenanceRecommendationInfo maintenance_recommendation_info = 13;
+  }
+
+  // Where the signal is coming from.
+  SignalSource signal_source = 1;
+
+  // Type of the signal.
+  SignalType signal_type = 5;
+
+  // Event time when signal was recorded by source service.
+  google.protobuf.Timestamp signal_event_time = 7;
+}
+
+// Sub resource details
+// For Spanner/Bigtable instance certain data protection settings are at
+// sub resource level like database/table.
+// This message is used to capture such sub resource details.
+message SubResource {
+  // Optional. Resource type associated with the sub resource where backup
+  // settings are configured. E.g. "spanner.googleapis.com/Database" for Spanner
+  // where backup retention is configured on database within an instance
+  // OPTIONAL
+  string resource_type = 1 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Resource name associated with the sub resource where backup
+  // settings are configured.
+  // E.g."//spanner.googleapis.com/projects/project1/instances/inst1/databases/db1"
+  // for Spanner where backup retention is configured on database within
+  // an instance
+  // OPTIONAL
+  string full_resource_name = 2 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Product information associated with the sub resource where
+  // backup retention settings are configured.
+  // e.g.
+  // ```
+  // product: {
+  //  type   : PRODUCT_TYPE_SPANNER
+  //  engine : ENGINE_CLOUD_SPANNER_WITH_POSTGRES_DIALECT
+  // }
+  // ```
+  // for Spanner where backup is configured on database within
+  // an instance
+  // OPTIONAL
+  Product product = 3 [(google.api.field_behavior) = OPTIONAL];
+
+  // Specifies where the resource is created. For Google Cloud resources, it is
+  // the full name of the project.
+  string container = 4;
+}
+
+// Metadata about backup retention settings for a database resource.
+message RetentionSettingsInfo {
+  // Depending on the value of retention_unit, this is used to determine
+  // if a backup needs to be deleted.  If retention_unit is 'COUNT', we will
+  // retain this many backups.
+  oneof retention {
+    // Number of backups that will be retained.
+    google.protobuf.Int32Value quantity_based_retention = 3;
+
+    // Duration based retention period i.e. 172800 seconds (2 days)
+    google.protobuf.Duration duration_based_retention = 5;
+
+    // Timestamp based retention period i.e. till 2024-05-01T00:00:00Z
+    google.protobuf.Timestamp timestamp_based_retention_time = 6;
+  }
+
+  // Optional. Sub resource details associated with the backup configuration.
+  SubResource sub_resource = 4 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Automated backup policy signal info
+message AutomatedBackupPolicyInfo {
+  // Optional. Sub resource details associated with the signal.
+  SubResource sub_resource = 1 [(google.api.field_behavior) = OPTIONAL];
+
+  // Is automated policy enabled.
+  bool is_enabled = 2;
+}
+
+// Deletion protection signal info for a database resource.
+message DeletionProtectionInfo {
+  // Optional. Sub resource details associated with the signal.
+  SubResource sub_resource = 1 [(google.api.field_behavior) = OPTIONAL];
+
+  // Is deletion protection enabled.
+  bool deletion_protection_enabled = 2;
+}
+
+// Resource suspension info for a database resource.
+message ResourceSuspensionInfo {
+  // Is resource suspended.
+  bool resource_suspended = 1;
+
+  // Suspension reason for the resource.
+  SuspensionReason suspension_reason = 2;
+}
+
+// Metadata about latest backup run state for a database resource.
+message BackupRunInfo {
+  // The status of a backup run.
+  enum State {
+    // Unspecified.
+    STATE_UNSPECIFIED = 0;
+
+    // The backup succeeded.
+    SUCCEEDED = 1;
+
+    // The backup was unsuccessful.
+    FAILED = 2;
+  }
+
+  // The time the backup operation started.
+  google.protobuf.Timestamp start_time = 1;
+
+  // The time the backup operation completed.
+  google.protobuf.Timestamp end_time = 6;
+
+  // Output only. The state of this run.
+  State state = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+  // Additional information about the error encountered.
+  string error_message = 3;
+
+  // Optional. OperationErrorType to expose specific error when backup operation
+  // of database resource failed, that is state is FAILED.
+  OperationErrorType operation_error_type = 4
+      [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Sub resource details associated with the backup run.
+  SubResource sub_resource = 5 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Metadata about inefficient query signal info for a database resource.
+message InefficientQueryInfo {
+  // Name of the database where index is required. For example, "db1", which is
+  // the name of the database present in the instance.
+  string database = 1;
+
+  // Name of the table where index is required
+  string table = 2;
+
+  // SQL statement of the index. Based on the ddl type, this will be either
+  // CREATE INDEX or DROP INDEX.
+  string sql_index_statement = 3;
+
+  // Cost of additional disk usage in bytes
+  int64 storage_cost_bytes = 4;
+
+  // Count of queries to be impacted if index is applied
+  int64 impacted_queries_count = 5;
+}
+
+// Info associated with SCC signals.
+message SCCInfo {
+  // Name of the signal.
+  string signal = 1;
+
+  // Name by which SCC calls this signal.
+  string category = 2;
+
+  // Compliances that are associated with the signal.
+  repeated RegulatoryStandard regulatory_standards = 3;
+
+  // External URI which points to a SCC page associated with the signal.
+  string external_uri = 4;
+}
+
+// Info associated with recommendation.
+message RecommendationInfo {
+  // Name of recommendation.
+  // Examples:
+  // organizations/1234/locations/us-central1/recommenders/google.cloudsql.instance.PerformanceRecommender/recommendations/9876
+  string recommender = 1;
+
+  // ID of recommender.
+  // Examples: "google.cloudsql.instance.PerformanceRecommender"
+  string recommender_id = 2;
+
+  // Contains an identifier for a subtype of recommendations produced for the
+  // same recommender. Subtype is a function of content and impact, meaning a
+  // new subtype might be added when significant changes to `content` or
+  // `primary_impact.category` are introduced. See the Recommenders section
+  // to see a list of subtypes for a given Recommender.
+  //
+  // Examples:
+  //   For recommender = "google.cloudsql.instance.PerformanceRecommender",
+  //   recommender_subtype can be
+  //   "MYSQL_HIGH_NUMBER_OF_OPEN_TABLES_BEST_PRACTICE"/"POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION_BEST_PRACTICE"
+  string recommender_subtype = 3;
+}
+
+// Compliances associated with signals.
+message RegulatoryStandard {
+  // Name of industry compliance standards, such as such as CIS, PCI, and
+  // OWASP.
+  string standard = 1;
+
+  // Version of the standard or benchmark, for example, 1.1.
+  string version = 2;
+}
+
+// Info associated with outdated minor version.
+message OutdatedMinorVersionInfo {
+  // Recommended minor version of the underlying database engine. Example
+  // values: For MySQL, it could be "8.0.35", "5.7.25" etc. For PostgreSQL, it
+  // could be "14.4", "15.5" etc.
+  string recommended_minor_version = 1;
+}
+
+// Info associated with maintenance recommendation.
+message MaintenanceRecommendationInfo {
+  // Optional. List of recommended maintenance schedules for the database
+  // resource.
+  repeated ResourceMaintenanceSchedule resource_maintenance_schedules = 1
+      [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Represents a signal.
+message Signal {
+  // Type of the signal.
+  SignalType signal_type = 1;
+
+  // Status of the signal.
+  SignalStatus signal_status = 2;
+
+  // Additional information related to the signal.
+  // In the case of composite signals, this field encapsulates details
+  // associated with granular signals, having a signal status of "ISSUE";
+  // signals with a status of "OK" are not included.
+  // For granular signals, it encompasses information relevant to the signal,
+  // regardless of the signal status.
+  repeated AdditionalDetail additional_details = 3;
+
+  // Severity of the issue.
+  IssueSeverity issue_severity = 4;
+
+  // Timestamp when the issue was created (when signal status is ISSUE).
+  google.protobuf.Timestamp issue_create_time = 5;
+}
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/suspension_reason.proto b/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/suspension_reason.proto
new file mode 100644
index 000000000000..a47532a4602d
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/suspension_reason.proto
@@ -0,0 +1,49 @@
+// Copyright 2026 Google LLC
+//
+// 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.
+
+syntax = "proto3";
+
+package google.cloud.databasecenter.v1beta;
+
+option csharp_namespace = "Google.Cloud.DatabaseCenter.V1Beta";
+option go_package = "cloud.google.com/go/databasecenter/apiv1beta/databasecenterpb;databasecenterpb";
+option java_multiple_files = true;
+option java_outer_classname = "SuspensionReasonProto";
+option java_package = "com.google.cloud.databasecenter.v1beta";
+option php_namespace = "Google\\Cloud\\DatabaseCenter\\V1beta";
+option ruby_package = "Google::Cloud::DatabaseCenter::V1beta";
+
+// The reason for suspension of the database resource.
+enum SuspensionReason {
+  // Suspension reason is unspecified.
+  SUSPENSION_REASON_UNSPECIFIED = 0;
+
+  // Wipeout hide event.
+  WIPEOUT_HIDE_EVENT = 1;
+
+  // Wipeout purge event.
+  WIPEOUT_PURGE_EVENT = 2;
+
+  // Billing disabled for project
+  BILLING_DISABLED = 3;
+
+  // Abuse detected for resource
+  ABUSER_DETECTED = 4;
+
+  // Encryption key inaccessible.
+  ENCRYPTION_KEY_INACCESSIBLE = 5;
+
+  // Replicated cluster encryption key inaccessible.
+  REPLICATED_CLUSTER_ENCRYPTION_KEY_INACCESSIBLE = 6;
+}
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/protos.d.ts b/owl-bot-staging/google-cloud-databasecenter/protos/protos.d.ts
new file mode 100644
index 000000000000..4f9551624e3e
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/protos/protos.d.ts
@@ -0,0 +1,13810 @@
+// Copyright 2026 Google LLC
+//
+// 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 type {protobuf as $protobuf} from "google-gax";
+import Long = require("long");
+/** Namespace google. */
+export namespace google {
+
+    /** Namespace cloud. */
+    namespace cloud {
+
+        /** Namespace databasecenter. */
+        namespace databasecenter {
+
+            /** Namespace v1beta. */
+            namespace v1beta {
+
+                /** Properties of an Affiliation. */
+                interface IAffiliation {
+
+                    /** Affiliation resourceId */
+                    resourceId?: (string|null);
+
+                    /** Affiliation fullResourceName */
+                    fullResourceName?: (string|null);
+
+                    /** Affiliation lineages */
+                    lineages?: (google.cloud.databasecenter.v1beta.Affiliation.ILineage[]|null);
+                }
+
+                /** Represents an Affiliation. */
+                class Affiliation implements IAffiliation {
+
+                    /**
+                     * Constructs a new Affiliation.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IAffiliation);
+
+                    /** Affiliation resourceId. */
+                    public resourceId: string;
+
+                    /** Affiliation fullResourceName. */
+                    public fullResourceName: string;
+
+                    /** Affiliation lineages. */
+                    public lineages: google.cloud.databasecenter.v1beta.Affiliation.ILineage[];
+
+                    /**
+                     * Creates a new Affiliation instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns Affiliation instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IAffiliation): google.cloud.databasecenter.v1beta.Affiliation;
+
+                    /**
+                     * Encodes the specified Affiliation message. Does not implicitly {@link google.cloud.databasecenter.v1beta.Affiliation.verify|verify} messages.
+                     * @param message Affiliation message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IAffiliation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified Affiliation message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.Affiliation.verify|verify} messages.
+                     * @param message Affiliation message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IAffiliation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes an Affiliation message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns Affiliation
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.Affiliation;
+
+                    /**
+                     * Decodes an Affiliation message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns Affiliation
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.Affiliation;
+
+                    /**
+                     * Verifies an Affiliation message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates an Affiliation message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns Affiliation
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.Affiliation;
+
+                    /**
+                     * Creates a plain object from an Affiliation message. Also converts values to other types if specified.
+                     * @param message Affiliation
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.Affiliation, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this Affiliation to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for Affiliation
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                namespace Affiliation {
+
+                    /** Properties of a Lineage. */
+                    interface ILineage {
+
+                        /** Lineage sourceFqn */
+                        sourceFqn?: (string|null);
+
+                        /** Lineage targetFqn */
+                        targetFqn?: (string|null);
+
+                        /** Lineage processFqn */
+                        processFqn?: (string|null);
+
+                        /** Lineage processType */
+                        processType?: (google.cloud.databasecenter.v1beta.Affiliation.ProcessType|keyof typeof google.cloud.databasecenter.v1beta.Affiliation.ProcessType|null);
+                    }
+
+                    /** Represents a Lineage. */
+                    class Lineage implements ILineage {
+
+                        /**
+                         * Constructs a new Lineage.
+                         * @param [properties] Properties to set
+                         */
+                        constructor(properties?: google.cloud.databasecenter.v1beta.Affiliation.ILineage);
+
+                        /** Lineage sourceFqn. */
+                        public sourceFqn: string;
+
+                        /** Lineage targetFqn. */
+                        public targetFqn: string;
+
+                        /** Lineage processFqn. */
+                        public processFqn: string;
+
+                        /** Lineage processType. */
+                        public processType: (google.cloud.databasecenter.v1beta.Affiliation.ProcessType|keyof typeof google.cloud.databasecenter.v1beta.Affiliation.ProcessType);
+
+                        /**
+                         * Creates a new Lineage instance using the specified properties.
+                         * @param [properties] Properties to set
+                         * @returns Lineage instance
+                         */
+                        public static create(properties?: google.cloud.databasecenter.v1beta.Affiliation.ILineage): google.cloud.databasecenter.v1beta.Affiliation.Lineage;
+
+                        /**
+                         * Encodes the specified Lineage message. Does not implicitly {@link google.cloud.databasecenter.v1beta.Affiliation.Lineage.verify|verify} messages.
+                         * @param message Lineage message or plain object to encode
+                         * @param [writer] Writer to encode to
+                         * @returns Writer
+                         */
+                        public static encode(message: google.cloud.databasecenter.v1beta.Affiliation.ILineage, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                        /**
+                         * Encodes the specified Lineage message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.Affiliation.Lineage.verify|verify} messages.
+                         * @param message Lineage message or plain object to encode
+                         * @param [writer] Writer to encode to
+                         * @returns Writer
+                         */
+                        public static encodeDelimited(message: google.cloud.databasecenter.v1beta.Affiliation.ILineage, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                        /**
+                         * Decodes a Lineage message from the specified reader or buffer.
+                         * @param reader Reader or buffer to decode from
+                         * @param [length] Message length if known beforehand
+                         * @returns Lineage
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.Affiliation.Lineage;
+
+                        /**
+                         * Decodes a Lineage message from the specified reader or buffer, length delimited.
+                         * @param reader Reader or buffer to decode from
+                         * @returns Lineage
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.Affiliation.Lineage;
+
+                        /**
+                         * Verifies a Lineage message.
+                         * @param message Plain object to verify
+                         * @returns `null` if valid, otherwise the reason why it is not
+                         */
+                        public static verify(message: { [k: string]: any }): (string|null);
+
+                        /**
+                         * Creates a Lineage message from a plain object. Also converts values to their respective internal types.
+                         * @param object Plain object
+                         * @returns Lineage
+                         */
+                        public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.Affiliation.Lineage;
+
+                        /**
+                         * Creates a plain object from a Lineage message. Also converts values to other types if specified.
+                         * @param message Lineage
+                         * @param [options] Conversion options
+                         * @returns Plain object
+                         */
+                        public static toObject(message: google.cloud.databasecenter.v1beta.Affiliation.Lineage, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                        /**
+                         * Converts this Lineage to JSON.
+                         * @returns JSON object
+                         */
+                        public toJSON(): { [k: string]: any };
+
+                        /**
+                         * Gets the default type url for Lineage
+                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns The default type url
+                         */
+                        public static getTypeUrl(typeUrlPrefix?: string): string;
+                    }
+
+                    /** ProcessType enum. */
+                    enum ProcessType {
+                        PROCESS_TYPE_UNSPECIFIED = 0,
+                        COMPOSER = 1,
+                        DATASTREAM = 2,
+                        DATAFLOW = 3,
+                        BIGQUERY = 4,
+                        DATA_FUSION = 5,
+                        DATAPROC = 6
+                    }
+                }
+
+                /** Properties of a MachineConfig. */
+                interface IMachineConfig {
+
+                    /** MachineConfig memorySizeBytes */
+                    memorySizeBytes?: (number|Long|string|null);
+
+                    /** MachineConfig shardCount */
+                    shardCount?: (number|null);
+
+                    /** MachineConfig vcpuCount */
+                    vcpuCount?: (number|null);
+
+                    /** MachineConfig baselineSlotCount */
+                    baselineSlotCount?: (number|Long|string|null);
+
+                    /** MachineConfig maxReservationSlotCount */
+                    maxReservationSlotCount?: (number|Long|string|null);
+                }
+
+                /** Represents a MachineConfig. */
+                class MachineConfig implements IMachineConfig {
+
+                    /**
+                     * Constructs a new MachineConfig.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IMachineConfig);
+
+                    /** MachineConfig memorySizeBytes. */
+                    public memorySizeBytes: (number|Long|string);
+
+                    /** MachineConfig shardCount. */
+                    public shardCount?: (number|null);
+
+                    /** MachineConfig vcpuCount. */
+                    public vcpuCount?: (number|null);
+
+                    /** MachineConfig baselineSlotCount. */
+                    public baselineSlotCount?: (number|Long|string|null);
+
+                    /** MachineConfig maxReservationSlotCount. */
+                    public maxReservationSlotCount?: (number|Long|string|null);
+
+                    /**
+                     * Creates a new MachineConfig instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns MachineConfig instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IMachineConfig): google.cloud.databasecenter.v1beta.MachineConfig;
+
+                    /**
+                     * Encodes the specified MachineConfig message. Does not implicitly {@link google.cloud.databasecenter.v1beta.MachineConfig.verify|verify} messages.
+                     * @param message MachineConfig message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IMachineConfig, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified MachineConfig message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.MachineConfig.verify|verify} messages.
+                     * @param message MachineConfig message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IMachineConfig, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a MachineConfig message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns MachineConfig
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.MachineConfig;
+
+                    /**
+                     * Decodes a MachineConfig message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns MachineConfig
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.MachineConfig;
+
+                    /**
+                     * Verifies a MachineConfig message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a MachineConfig message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns MachineConfig
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.MachineConfig;
+
+                    /**
+                     * Creates a plain object from a MachineConfig message. Also converts values to other types if specified.
+                     * @param message MachineConfig
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.MachineConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this MachineConfig to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for MachineConfig
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Phase enum. */
+                enum Phase {
+                    PHASE_UNSPECIFIED = 0,
+                    PHASE_WEEK1 = 1,
+                    PHASE_WEEK2 = 2,
+                    PHASE_WEEK5 = 3,
+                    PHASE_ANY = 4
+                }
+
+                /** MaintenanceState enum. */
+                enum MaintenanceState {
+                    MAINTENANCE_STATE_UNSPECIFIED = 0,
+                    MAINTENANCE_STATE_SCHEDULED = 1,
+                    MAINTENANCE_STATE_IN_PROGRESS = 2,
+                    MAINTENANCE_STATE_COMPLETED = 3,
+                    MAINTENANCE_STATE_FAILED = 4
+                }
+
+                /** PossibleFailureReason enum. */
+                enum PossibleFailureReason {
+                    POSSIBLE_FAILURE_REASON_UNSPECIFIED = 0,
+                    POSSIBLE_FAILURE_REASON_DENY_POLICY_CONFLICT = 1,
+                    POSSIBLE_FAILURE_REASON_INSTANCE_IN_STOPPED_STATE = 2
+                }
+
+                /** Properties of a ResourceMaintenanceSchedule. */
+                interface IResourceMaintenanceSchedule {
+
+                    /** ResourceMaintenanceSchedule startTime */
+                    startTime?: (google.type.ITimeOfDay|null);
+
+                    /** ResourceMaintenanceSchedule day */
+                    day?: (google.type.DayOfWeek|keyof typeof google.type.DayOfWeek|null);
+
+                    /** ResourceMaintenanceSchedule phase */
+                    phase?: (google.cloud.databasecenter.v1beta.Phase|keyof typeof google.cloud.databasecenter.v1beta.Phase|null);
+                }
+
+                /** Represents a ResourceMaintenanceSchedule. */
+                class ResourceMaintenanceSchedule implements IResourceMaintenanceSchedule {
+
+                    /**
+                     * Constructs a new ResourceMaintenanceSchedule.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IResourceMaintenanceSchedule);
+
+                    /** ResourceMaintenanceSchedule startTime. */
+                    public startTime?: (google.type.ITimeOfDay|null);
+
+                    /** ResourceMaintenanceSchedule day. */
+                    public day: (google.type.DayOfWeek|keyof typeof google.type.DayOfWeek);
+
+                    /** ResourceMaintenanceSchedule phase. */
+                    public phase: (google.cloud.databasecenter.v1beta.Phase|keyof typeof google.cloud.databasecenter.v1beta.Phase);
+
+                    /**
+                     * Creates a new ResourceMaintenanceSchedule instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns ResourceMaintenanceSchedule instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IResourceMaintenanceSchedule): google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule;
+
+                    /**
+                     * Encodes the specified ResourceMaintenanceSchedule message. Does not implicitly {@link google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule.verify|verify} messages.
+                     * @param message ResourceMaintenanceSchedule message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IResourceMaintenanceSchedule, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified ResourceMaintenanceSchedule message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule.verify|verify} messages.
+                     * @param message ResourceMaintenanceSchedule message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IResourceMaintenanceSchedule, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a ResourceMaintenanceSchedule message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns ResourceMaintenanceSchedule
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule;
+
+                    /**
+                     * Decodes a ResourceMaintenanceSchedule message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns ResourceMaintenanceSchedule
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule;
+
+                    /**
+                     * Verifies a ResourceMaintenanceSchedule message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a ResourceMaintenanceSchedule message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns ResourceMaintenanceSchedule
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule;
+
+                    /**
+                     * Creates a plain object from a ResourceMaintenanceSchedule message. Also converts values to other types if specified.
+                     * @param message ResourceMaintenanceSchedule
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this ResourceMaintenanceSchedule to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for ResourceMaintenanceSchedule
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a ResourceMaintenanceDenySchedule. */
+                interface IResourceMaintenanceDenySchedule {
+
+                    /** ResourceMaintenanceDenySchedule startDate */
+                    startDate?: (google.type.IDate|null);
+
+                    /** ResourceMaintenanceDenySchedule endDate */
+                    endDate?: (google.type.IDate|null);
+
+                    /** ResourceMaintenanceDenySchedule time */
+                    time?: (google.type.ITimeOfDay|null);
+                }
+
+                /** Represents a ResourceMaintenanceDenySchedule. */
+                class ResourceMaintenanceDenySchedule implements IResourceMaintenanceDenySchedule {
+
+                    /**
+                     * Constructs a new ResourceMaintenanceDenySchedule.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IResourceMaintenanceDenySchedule);
+
+                    /** ResourceMaintenanceDenySchedule startDate. */
+                    public startDate?: (google.type.IDate|null);
+
+                    /** ResourceMaintenanceDenySchedule endDate. */
+                    public endDate?: (google.type.IDate|null);
+
+                    /** ResourceMaintenanceDenySchedule time. */
+                    public time?: (google.type.ITimeOfDay|null);
+
+                    /**
+                     * Creates a new ResourceMaintenanceDenySchedule instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns ResourceMaintenanceDenySchedule instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IResourceMaintenanceDenySchedule): google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule;
+
+                    /**
+                     * Encodes the specified ResourceMaintenanceDenySchedule message. Does not implicitly {@link google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule.verify|verify} messages.
+                     * @param message ResourceMaintenanceDenySchedule message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IResourceMaintenanceDenySchedule, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified ResourceMaintenanceDenySchedule message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule.verify|verify} messages.
+                     * @param message ResourceMaintenanceDenySchedule message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IResourceMaintenanceDenySchedule, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a ResourceMaintenanceDenySchedule message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns ResourceMaintenanceDenySchedule
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule;
+
+                    /**
+                     * Decodes a ResourceMaintenanceDenySchedule message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns ResourceMaintenanceDenySchedule
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule;
+
+                    /**
+                     * Verifies a ResourceMaintenanceDenySchedule message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a ResourceMaintenanceDenySchedule message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns ResourceMaintenanceDenySchedule
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule;
+
+                    /**
+                     * Creates a plain object from a ResourceMaintenanceDenySchedule message. Also converts values to other types if specified.
+                     * @param message ResourceMaintenanceDenySchedule
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this ResourceMaintenanceDenySchedule to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for ResourceMaintenanceDenySchedule
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of an UpcomingMaintenance. */
+                interface IUpcomingMaintenance {
+
+                    /** UpcomingMaintenance startTime */
+                    startTime?: (google.protobuf.ITimestamp|null);
+
+                    /** UpcomingMaintenance endTime */
+                    endTime?: (google.protobuf.ITimestamp|null);
+                }
+
+                /** Represents an UpcomingMaintenance. */
+                class UpcomingMaintenance implements IUpcomingMaintenance {
+
+                    /**
+                     * Constructs a new UpcomingMaintenance.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IUpcomingMaintenance);
+
+                    /** UpcomingMaintenance startTime. */
+                    public startTime?: (google.protobuf.ITimestamp|null);
+
+                    /** UpcomingMaintenance endTime. */
+                    public endTime?: (google.protobuf.ITimestamp|null);
+
+                    /**
+                     * Creates a new UpcomingMaintenance instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns UpcomingMaintenance instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IUpcomingMaintenance): google.cloud.databasecenter.v1beta.UpcomingMaintenance;
+
+                    /**
+                     * Encodes the specified UpcomingMaintenance message. Does not implicitly {@link google.cloud.databasecenter.v1beta.UpcomingMaintenance.verify|verify} messages.
+                     * @param message UpcomingMaintenance message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IUpcomingMaintenance, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified UpcomingMaintenance message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.UpcomingMaintenance.verify|verify} messages.
+                     * @param message UpcomingMaintenance message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IUpcomingMaintenance, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes an UpcomingMaintenance message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns UpcomingMaintenance
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.UpcomingMaintenance;
+
+                    /**
+                     * Decodes an UpcomingMaintenance message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns UpcomingMaintenance
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.UpcomingMaintenance;
+
+                    /**
+                     * Verifies an UpcomingMaintenance message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates an UpcomingMaintenance message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns UpcomingMaintenance
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.UpcomingMaintenance;
+
+                    /**
+                     * Creates a plain object from an UpcomingMaintenance message. Also converts values to other types if specified.
+                     * @param message UpcomingMaintenance
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.UpcomingMaintenance, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this UpcomingMaintenance to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for UpcomingMaintenance
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a MaintenanceInfo. */
+                interface IMaintenanceInfo {
+
+                    /** MaintenanceInfo maintenanceSchedule */
+                    maintenanceSchedule?: (google.cloud.databasecenter.v1beta.IResourceMaintenanceSchedule|null);
+
+                    /** MaintenanceInfo denyMaintenanceSchedules */
+                    denyMaintenanceSchedules?: (google.cloud.databasecenter.v1beta.IResourceMaintenanceDenySchedule[]|null);
+
+                    /** MaintenanceInfo maintenanceVersion */
+                    maintenanceVersion?: (string|null);
+
+                    /** MaintenanceInfo currentVersionReleaseDate */
+                    currentVersionReleaseDate?: (google.type.IDate|null);
+
+                    /** MaintenanceInfo upcomingMaintenance */
+                    upcomingMaintenance?: (google.cloud.databasecenter.v1beta.IUpcomingMaintenance|null);
+
+                    /** MaintenanceInfo state */
+                    state?: (google.cloud.databasecenter.v1beta.MaintenanceState|keyof typeof google.cloud.databasecenter.v1beta.MaintenanceState|null);
+
+                    /** MaintenanceInfo possibleFailureReasons */
+                    possibleFailureReasons?: (google.cloud.databasecenter.v1beta.PossibleFailureReason[]|null);
+
+                    /** MaintenanceInfo previousMaintenanceVersion */
+                    previousMaintenanceVersion?: (string|null);
+                }
+
+                /** Represents a MaintenanceInfo. */
+                class MaintenanceInfo implements IMaintenanceInfo {
+
+                    /**
+                     * Constructs a new MaintenanceInfo.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IMaintenanceInfo);
+
+                    /** MaintenanceInfo maintenanceSchedule. */
+                    public maintenanceSchedule?: (google.cloud.databasecenter.v1beta.IResourceMaintenanceSchedule|null);
+
+                    /** MaintenanceInfo denyMaintenanceSchedules. */
+                    public denyMaintenanceSchedules: google.cloud.databasecenter.v1beta.IResourceMaintenanceDenySchedule[];
+
+                    /** MaintenanceInfo maintenanceVersion. */
+                    public maintenanceVersion: string;
+
+                    /** MaintenanceInfo currentVersionReleaseDate. */
+                    public currentVersionReleaseDate?: (google.type.IDate|null);
+
+                    /** MaintenanceInfo upcomingMaintenance. */
+                    public upcomingMaintenance?: (google.cloud.databasecenter.v1beta.IUpcomingMaintenance|null);
+
+                    /** MaintenanceInfo state. */
+                    public state: (google.cloud.databasecenter.v1beta.MaintenanceState|keyof typeof google.cloud.databasecenter.v1beta.MaintenanceState);
+
+                    /** MaintenanceInfo possibleFailureReasons. */
+                    public possibleFailureReasons: google.cloud.databasecenter.v1beta.PossibleFailureReason[];
+
+                    /** MaintenanceInfo previousMaintenanceVersion. */
+                    public previousMaintenanceVersion: string;
+
+                    /**
+                     * Creates a new MaintenanceInfo instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns MaintenanceInfo instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IMaintenanceInfo): google.cloud.databasecenter.v1beta.MaintenanceInfo;
+
+                    /**
+                     * Encodes the specified MaintenanceInfo message. Does not implicitly {@link google.cloud.databasecenter.v1beta.MaintenanceInfo.verify|verify} messages.
+                     * @param message MaintenanceInfo message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IMaintenanceInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified MaintenanceInfo message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.MaintenanceInfo.verify|verify} messages.
+                     * @param message MaintenanceInfo message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IMaintenanceInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a MaintenanceInfo message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns MaintenanceInfo
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.MaintenanceInfo;
+
+                    /**
+                     * Decodes a MaintenanceInfo message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns MaintenanceInfo
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.MaintenanceInfo;
+
+                    /**
+                     * Verifies a MaintenanceInfo message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a MaintenanceInfo message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns MaintenanceInfo
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.MaintenanceInfo;
+
+                    /**
+                     * Creates a plain object from a MaintenanceInfo message. Also converts values to other types if specified.
+                     * @param message MaintenanceInfo
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.MaintenanceInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this MaintenanceInfo to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for MaintenanceInfo
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a Metrics. */
+                interface IMetrics {
+
+                    /** Metrics p99CpuUtilization */
+                    p99CpuUtilization?: (google.cloud.databasecenter.v1beta.IMetricData|null);
+
+                    /** Metrics p95CpuUtilization */
+                    p95CpuUtilization?: (google.cloud.databasecenter.v1beta.IMetricData|null);
+
+                    /** Metrics currentStorageUsedBytes */
+                    currentStorageUsedBytes?: (google.cloud.databasecenter.v1beta.IMetricData|null);
+
+                    /** Metrics peakStorageUtilization */
+                    peakStorageUtilization?: (google.cloud.databasecenter.v1beta.IMetricData|null);
+
+                    /** Metrics peakMemoryUtilization */
+                    peakMemoryUtilization?: (google.cloud.databasecenter.v1beta.IMetricData|null);
+
+                    /** Metrics peakNumberConnections */
+                    peakNumberConnections?: (google.cloud.databasecenter.v1beta.IMetricData|null);
+
+                    /** Metrics nodeCount */
+                    nodeCount?: (google.cloud.databasecenter.v1beta.IMetricData|null);
+
+                    /** Metrics processingUnitCount */
+                    processingUnitCount?: (google.cloud.databasecenter.v1beta.IMetricData|null);
+
+                    /** Metrics currentMemoryUsedBytes */
+                    currentMemoryUsedBytes?: (google.cloud.databasecenter.v1beta.IMetricData|null);
+                }
+
+                /** Represents a Metrics. */
+                class Metrics implements IMetrics {
+
+                    /**
+                     * Constructs a new Metrics.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IMetrics);
+
+                    /** Metrics p99CpuUtilization. */
+                    public p99CpuUtilization?: (google.cloud.databasecenter.v1beta.IMetricData|null);
+
+                    /** Metrics p95CpuUtilization. */
+                    public p95CpuUtilization?: (google.cloud.databasecenter.v1beta.IMetricData|null);
+
+                    /** Metrics currentStorageUsedBytes. */
+                    public currentStorageUsedBytes?: (google.cloud.databasecenter.v1beta.IMetricData|null);
+
+                    /** Metrics peakStorageUtilization. */
+                    public peakStorageUtilization?: (google.cloud.databasecenter.v1beta.IMetricData|null);
+
+                    /** Metrics peakMemoryUtilization. */
+                    public peakMemoryUtilization?: (google.cloud.databasecenter.v1beta.IMetricData|null);
+
+                    /** Metrics peakNumberConnections. */
+                    public peakNumberConnections?: (google.cloud.databasecenter.v1beta.IMetricData|null);
+
+                    /** Metrics nodeCount. */
+                    public nodeCount?: (google.cloud.databasecenter.v1beta.IMetricData|null);
+
+                    /** Metrics processingUnitCount. */
+                    public processingUnitCount?: (google.cloud.databasecenter.v1beta.IMetricData|null);
+
+                    /** Metrics currentMemoryUsedBytes. */
+                    public currentMemoryUsedBytes?: (google.cloud.databasecenter.v1beta.IMetricData|null);
+
+                    /**
+                     * Creates a new Metrics instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns Metrics instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IMetrics): google.cloud.databasecenter.v1beta.Metrics;
+
+                    /**
+                     * Encodes the specified Metrics message. Does not implicitly {@link google.cloud.databasecenter.v1beta.Metrics.verify|verify} messages.
+                     * @param message Metrics message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IMetrics, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified Metrics message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.Metrics.verify|verify} messages.
+                     * @param message Metrics message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IMetrics, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a Metrics message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns Metrics
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.Metrics;
+
+                    /**
+                     * Decodes a Metrics message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns Metrics
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.Metrics;
+
+                    /**
+                     * Verifies a Metrics message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a Metrics message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns Metrics
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.Metrics;
+
+                    /**
+                     * Creates a plain object from a Metrics message. Also converts values to other types if specified.
+                     * @param message Metrics
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.Metrics, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this Metrics to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for Metrics
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a MetricData. */
+                interface IMetricData {
+
+                    /** MetricData value */
+                    value?: (google.cloud.databasecenter.v1beta.ITypedValue|null);
+
+                    /** MetricData observationTime */
+                    observationTime?: (google.protobuf.ITimestamp|null);
+                }
+
+                /** Represents a MetricData. */
+                class MetricData implements IMetricData {
+
+                    /**
+                     * Constructs a new MetricData.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IMetricData);
+
+                    /** MetricData value. */
+                    public value?: (google.cloud.databasecenter.v1beta.ITypedValue|null);
+
+                    /** MetricData observationTime. */
+                    public observationTime?: (google.protobuf.ITimestamp|null);
+
+                    /**
+                     * Creates a new MetricData instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns MetricData instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IMetricData): google.cloud.databasecenter.v1beta.MetricData;
+
+                    /**
+                     * Encodes the specified MetricData message. Does not implicitly {@link google.cloud.databasecenter.v1beta.MetricData.verify|verify} messages.
+                     * @param message MetricData message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IMetricData, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified MetricData message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.MetricData.verify|verify} messages.
+                     * @param message MetricData message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IMetricData, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a MetricData message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns MetricData
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.MetricData;
+
+                    /**
+                     * Decodes a MetricData message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns MetricData
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.MetricData;
+
+                    /**
+                     * Verifies a MetricData message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a MetricData message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns MetricData
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.MetricData;
+
+                    /**
+                     * Creates a plain object from a MetricData message. Also converts values to other types if specified.
+                     * @param message MetricData
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.MetricData, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this MetricData to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for MetricData
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a TypedValue. */
+                interface ITypedValue {
+
+                    /** TypedValue doubleValue */
+                    doubleValue?: (number|null);
+
+                    /** TypedValue int64Value */
+                    int64Value?: (number|Long|string|null);
+                }
+
+                /** Represents a TypedValue. */
+                class TypedValue implements ITypedValue {
+
+                    /**
+                     * Constructs a new TypedValue.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.ITypedValue);
+
+                    /** TypedValue doubleValue. */
+                    public doubleValue?: (number|null);
+
+                    /** TypedValue int64Value. */
+                    public int64Value?: (number|Long|string|null);
+
+                    /** TypedValue value. */
+                    public value?: ("doubleValue"|"int64Value");
+
+                    /**
+                     * Creates a new TypedValue instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns TypedValue instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.ITypedValue): google.cloud.databasecenter.v1beta.TypedValue;
+
+                    /**
+                     * Encodes the specified TypedValue message. Does not implicitly {@link google.cloud.databasecenter.v1beta.TypedValue.verify|verify} messages.
+                     * @param message TypedValue message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.ITypedValue, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified TypedValue message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.TypedValue.verify|verify} messages.
+                     * @param message TypedValue message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.ITypedValue, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a TypedValue message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns TypedValue
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.TypedValue;
+
+                    /**
+                     * Decodes a TypedValue message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns TypedValue
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.TypedValue;
+
+                    /**
+                     * Verifies a TypedValue message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a TypedValue message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns TypedValue
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.TypedValue;
+
+                    /**
+                     * Creates a plain object from a TypedValue message. Also converts values to other types if specified.
+                     * @param message TypedValue
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.TypedValue, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this TypedValue to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for TypedValue
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** OperationErrorType enum. */
+                enum OperationErrorType {
+                    OPERATION_ERROR_TYPE_UNSPECIFIED = 0,
+                    KMS_KEY_ERROR = 1,
+                    DATABASE_ERROR = 2,
+                    STOCKOUT_ERROR = 3,
+                    CANCELLATION_ERROR = 4,
+                    SQLSERVER_ERROR = 5,
+                    INTERNAL_ERROR = 6
+                }
+
+                /** Engine enum. */
+                enum Engine {
+                    ENGINE_UNSPECIFIED = 0,
+                    ENGINE_MYSQL = 1,
+                    ENGINE_POSTGRES = 2,
+                    ENGINE_SQL_SERVER = 3,
+                    ENGINE_NATIVE = 4,
+                    ENGINE_MEMORYSTORE_FOR_REDIS = 8,
+                    ENGINE_MEMORYSTORE_FOR_REDIS_CLUSTER = 9,
+                    ENGINE_FIRESTORE_WITH_NATIVE_MODE = 10,
+                    ENGINE_FIRESTORE_WITH_DATASTORE_MODE = 11,
+                    ENGINE_EXADATA_ORACLE = 12,
+                    ENGINE_ADB_SERVERLESS_ORACLE = 13,
+                    ENGINE_FIRESTORE_WITH_MONGODB_COMPATIBILITY_MODE = 14,
+                    ENGINE_OTHER = 6
+                }
+
+                /** ProductType enum. */
+                enum ProductType {
+                    PRODUCT_TYPE_UNSPECIFIED = 0,
+                    PRODUCT_TYPE_CLOUD_SQL = 1,
+                    PRODUCT_TYPE_ALLOYDB = 2,
+                    PRODUCT_TYPE_SPANNER = 3,
+                    PRODUCT_TYPE_BIGTABLE = 6,
+                    PRODUCT_TYPE_MEMORYSTORE = 7,
+                    PRODUCT_TYPE_FIRESTORE = 8,
+                    PRODUCT_TYPE_COMPUTE_ENGINE = 9,
+                    PRODUCT_TYPE_ORACLE_ON_GCP = 10,
+                    PRODUCT_TYPE_BIGQUERY = 11,
+                    PRODUCT_TYPE_OTHER = 5
+                }
+
+                /** Properties of a Product. */
+                interface IProduct {
+
+                    /** Product type */
+                    type?: (google.cloud.databasecenter.v1beta.ProductType|keyof typeof google.cloud.databasecenter.v1beta.ProductType|null);
+
+                    /** Product engine */
+                    engine?: (google.cloud.databasecenter.v1beta.Engine|keyof typeof google.cloud.databasecenter.v1beta.Engine|null);
+
+                    /** Product version */
+                    version?: (string|null);
+
+                    /** Product minorVersion */
+                    minorVersion?: (string|null);
+                }
+
+                /** Represents a Product. */
+                class Product implements IProduct {
+
+                    /**
+                     * Constructs a new Product.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IProduct);
+
+                    /** Product type. */
+                    public type: (google.cloud.databasecenter.v1beta.ProductType|keyof typeof google.cloud.databasecenter.v1beta.ProductType);
+
+                    /** Product engine. */
+                    public engine: (google.cloud.databasecenter.v1beta.Engine|keyof typeof google.cloud.databasecenter.v1beta.Engine);
+
+                    /** Product version. */
+                    public version: string;
+
+                    /** Product minorVersion. */
+                    public minorVersion: string;
+
+                    /**
+                     * Creates a new Product instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns Product instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IProduct): google.cloud.databasecenter.v1beta.Product;
+
+                    /**
+                     * Encodes the specified Product message. Does not implicitly {@link google.cloud.databasecenter.v1beta.Product.verify|verify} messages.
+                     * @param message Product message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IProduct, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified Product message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.Product.verify|verify} messages.
+                     * @param message Product message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IProduct, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a Product message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns Product
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.Product;
+
+                    /**
+                     * Decodes a Product message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns Product
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.Product;
+
+                    /**
+                     * Verifies a Product message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a Product message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns Product
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.Product;
+
+                    /**
+                     * Creates a plain object from a Product message. Also converts values to other types if specified.
+                     * @param message Product
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.Product, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this Product to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for Product
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Represents a DatabaseCenter */
+                class DatabaseCenter extends $protobuf.rpc.Service {
+
+                    /**
+                     * Constructs a new DatabaseCenter service.
+                     * @param rpcImpl RPC implementation
+                     * @param [requestDelimited=false] Whether requests are length-delimited
+                     * @param [responseDelimited=false] Whether responses are length-delimited
+                     */
+                    constructor(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean);
+
+                    /**
+                     * Creates new DatabaseCenter service using the specified rpc implementation.
+                     * @param rpcImpl RPC implementation
+                     * @param [requestDelimited=false] Whether requests are length-delimited
+                     * @param [responseDelimited=false] Whether responses are length-delimited
+                     * @returns RPC service. Useful where requests and/or responses are streamed.
+                     */
+                    public static create(rpcImpl: $protobuf.RPCImpl, requestDelimited?: boolean, responseDelimited?: boolean): DatabaseCenter;
+
+                    /**
+                     * Calls QueryProducts.
+                     * @param request QueryProductsRequest message or plain object
+                     * @param callback Node-style callback called with the error, if any, and QueryProductsResponse
+                     */
+                    public queryProducts(request: google.cloud.databasecenter.v1beta.IQueryProductsRequest, callback: google.cloud.databasecenter.v1beta.DatabaseCenter.QueryProductsCallback): void;
+
+                    /**
+                     * Calls QueryProducts.
+                     * @param request QueryProductsRequest message or plain object
+                     * @returns Promise
+                     */
+                    public queryProducts(request: google.cloud.databasecenter.v1beta.IQueryProductsRequest): Promise<google.cloud.databasecenter.v1beta.QueryProductsResponse>;
+
+                    /**
+                     * Calls AggregateFleet.
+                     * @param request AggregateFleetRequest message or plain object
+                     * @param callback Node-style callback called with the error, if any, and AggregateFleetResponse
+                     */
+                    public aggregateFleet(request: google.cloud.databasecenter.v1beta.IAggregateFleetRequest, callback: google.cloud.databasecenter.v1beta.DatabaseCenter.AggregateFleetCallback): void;
+
+                    /**
+                     * Calls AggregateFleet.
+                     * @param request AggregateFleetRequest message or plain object
+                     * @returns Promise
+                     */
+                    public aggregateFleet(request: google.cloud.databasecenter.v1beta.IAggregateFleetRequest): Promise<google.cloud.databasecenter.v1beta.AggregateFleetResponse>;
+
+                    /**
+                     * Calls QueryDatabaseResourceGroups.
+                     * @param request QueryDatabaseResourceGroupsRequest message or plain object
+                     * @param callback Node-style callback called with the error, if any, and QueryDatabaseResourceGroupsResponse
+                     */
+                    public queryDatabaseResourceGroups(request: google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsRequest, callback: google.cloud.databasecenter.v1beta.DatabaseCenter.QueryDatabaseResourceGroupsCallback): void;
+
+                    /**
+                     * Calls QueryDatabaseResourceGroups.
+                     * @param request QueryDatabaseResourceGroupsRequest message or plain object
+                     * @returns Promise
+                     */
+                    public queryDatabaseResourceGroups(request: google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsRequest): Promise<google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse>;
+
+                    /**
+                     * Calls AggregateIssueStats.
+                     * @param request AggregateIssueStatsRequest message or plain object
+                     * @param callback Node-style callback called with the error, if any, and AggregateIssueStatsResponse
+                     */
+                    public aggregateIssueStats(request: google.cloud.databasecenter.v1beta.IAggregateIssueStatsRequest, callback: google.cloud.databasecenter.v1beta.DatabaseCenter.AggregateIssueStatsCallback): void;
+
+                    /**
+                     * Calls AggregateIssueStats.
+                     * @param request AggregateIssueStatsRequest message or plain object
+                     * @returns Promise
+                     */
+                    public aggregateIssueStats(request: google.cloud.databasecenter.v1beta.IAggregateIssueStatsRequest): Promise<google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse>;
+
+                    /**
+                     * Calls QueryIssues.
+                     * @param request QueryIssuesRequest message or plain object
+                     * @param callback Node-style callback called with the error, if any, and QueryIssuesResponse
+                     */
+                    public queryIssues(request: google.cloud.databasecenter.v1beta.IQueryIssuesRequest, callback: google.cloud.databasecenter.v1beta.DatabaseCenter.QueryIssuesCallback): void;
+
+                    /**
+                     * Calls QueryIssues.
+                     * @param request QueryIssuesRequest message or plain object
+                     * @returns Promise
+                     */
+                    public queryIssues(request: google.cloud.databasecenter.v1beta.IQueryIssuesRequest): Promise<google.cloud.databasecenter.v1beta.QueryIssuesResponse>;
+                }
+
+                namespace DatabaseCenter {
+
+                    /**
+                     * Callback as used by {@link google.cloud.databasecenter.v1beta.DatabaseCenter|queryProducts}.
+                     * @param error Error, if any
+                     * @param [response] QueryProductsResponse
+                     */
+                    type QueryProductsCallback = (error: (Error|null), response?: google.cloud.databasecenter.v1beta.QueryProductsResponse) => void;
+
+                    /**
+                     * Callback as used by {@link google.cloud.databasecenter.v1beta.DatabaseCenter|aggregateFleet}.
+                     * @param error Error, if any
+                     * @param [response] AggregateFleetResponse
+                     */
+                    type AggregateFleetCallback = (error: (Error|null), response?: google.cloud.databasecenter.v1beta.AggregateFleetResponse) => void;
+
+                    /**
+                     * Callback as used by {@link google.cloud.databasecenter.v1beta.DatabaseCenter|queryDatabaseResourceGroups}.
+                     * @param error Error, if any
+                     * @param [response] QueryDatabaseResourceGroupsResponse
+                     */
+                    type QueryDatabaseResourceGroupsCallback = (error: (Error|null), response?: google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse) => void;
+
+                    /**
+                     * Callback as used by {@link google.cloud.databasecenter.v1beta.DatabaseCenter|aggregateIssueStats}.
+                     * @param error Error, if any
+                     * @param [response] AggregateIssueStatsResponse
+                     */
+                    type AggregateIssueStatsCallback = (error: (Error|null), response?: google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse) => void;
+
+                    /**
+                     * Callback as used by {@link google.cloud.databasecenter.v1beta.DatabaseCenter|queryIssues}.
+                     * @param error Error, if any
+                     * @param [response] QueryIssuesResponse
+                     */
+                    type QueryIssuesCallback = (error: (Error|null), response?: google.cloud.databasecenter.v1beta.QueryIssuesResponse) => void;
+                }
+
+                /** Edition enum. */
+                enum Edition {
+                    EDITION_UNSPECIFIED = 0,
+                    EDITION_ENTERPRISE = 1,
+                    EDITION_ENTERPRISE_PLUS = 2,
+                    EDITION_STANDARD = 3
+                }
+
+                /** SubResourceType enum. */
+                enum SubResourceType {
+                    SUB_RESOURCE_TYPE_UNSPECIFIED = 0,
+                    SUB_RESOURCE_TYPE_PRIMARY = 1,
+                    SUB_RESOURCE_TYPE_SECONDARY = 2,
+                    SUB_RESOURCE_TYPE_READ_REPLICA = 3,
+                    SUB_RESOURCE_TYPE_EXTERNAL_PRIMARY = 5,
+                    SUB_RESOURCE_TYPE_READ_POOL = 6,
+                    SUB_RESOURCE_TYPE_RESERVATION = 7,
+                    SUB_RESOURCE_TYPE_DATASET = 8,
+                    SUB_RESOURCE_TYPE_OTHER = 4
+                }
+
+                /** ManagementType enum. */
+                enum ManagementType {
+                    MANAGEMENT_TYPE_UNSPECIFIED = 0,
+                    MANAGEMENT_TYPE_GCP_MANAGED = 1,
+                    MANAGEMENT_TYPE_SELF_MANAGED = 2
+                }
+
+                /** ResourceCategory enum. */
+                enum ResourceCategory {
+                    RESOURCE_CATEGORY_UNSPECIFIED = 0,
+                    INSTANCE = 1,
+                    CLUSTER = 2,
+                    DATABASE = 3,
+                    DATASET = 4,
+                    RESERVATION = 5
+                }
+
+                /** Properties of a QueryProductsRequest. */
+                interface IQueryProductsRequest {
+
+                    /** QueryProductsRequest parent */
+                    parent?: (string|null);
+
+                    /** QueryProductsRequest pageSize */
+                    pageSize?: (number|null);
+
+                    /** QueryProductsRequest pageToken */
+                    pageToken?: (string|null);
+                }
+
+                /** Represents a QueryProductsRequest. */
+                class QueryProductsRequest implements IQueryProductsRequest {
+
+                    /**
+                     * Constructs a new QueryProductsRequest.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IQueryProductsRequest);
+
+                    /** QueryProductsRequest parent. */
+                    public parent: string;
+
+                    /** QueryProductsRequest pageSize. */
+                    public pageSize: number;
+
+                    /** QueryProductsRequest pageToken. */
+                    public pageToken: string;
+
+                    /**
+                     * Creates a new QueryProductsRequest instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns QueryProductsRequest instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IQueryProductsRequest): google.cloud.databasecenter.v1beta.QueryProductsRequest;
+
+                    /**
+                     * Encodes the specified QueryProductsRequest message. Does not implicitly {@link google.cloud.databasecenter.v1beta.QueryProductsRequest.verify|verify} messages.
+                     * @param message QueryProductsRequest message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IQueryProductsRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified QueryProductsRequest message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.QueryProductsRequest.verify|verify} messages.
+                     * @param message QueryProductsRequest message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IQueryProductsRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a QueryProductsRequest message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns QueryProductsRequest
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.QueryProductsRequest;
+
+                    /**
+                     * Decodes a QueryProductsRequest message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns QueryProductsRequest
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.QueryProductsRequest;
+
+                    /**
+                     * Verifies a QueryProductsRequest message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a QueryProductsRequest message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns QueryProductsRequest
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.QueryProductsRequest;
+
+                    /**
+                     * Creates a plain object from a QueryProductsRequest message. Also converts values to other types if specified.
+                     * @param message QueryProductsRequest
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.QueryProductsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this QueryProductsRequest to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for QueryProductsRequest
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a QueryProductsResponse. */
+                interface IQueryProductsResponse {
+
+                    /** QueryProductsResponse products */
+                    products?: (google.cloud.databasecenter.v1beta.IProduct[]|null);
+
+                    /** QueryProductsResponse nextPageToken */
+                    nextPageToken?: (string|null);
+
+                    /** QueryProductsResponse unreachable */
+                    unreachable?: (string[]|null);
+                }
+
+                /** Represents a QueryProductsResponse. */
+                class QueryProductsResponse implements IQueryProductsResponse {
+
+                    /**
+                     * Constructs a new QueryProductsResponse.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IQueryProductsResponse);
+
+                    /** QueryProductsResponse products. */
+                    public products: google.cloud.databasecenter.v1beta.IProduct[];
+
+                    /** QueryProductsResponse nextPageToken. */
+                    public nextPageToken: string;
+
+                    /** QueryProductsResponse unreachable. */
+                    public unreachable: string[];
+
+                    /**
+                     * Creates a new QueryProductsResponse instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns QueryProductsResponse instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IQueryProductsResponse): google.cloud.databasecenter.v1beta.QueryProductsResponse;
+
+                    /**
+                     * Encodes the specified QueryProductsResponse message. Does not implicitly {@link google.cloud.databasecenter.v1beta.QueryProductsResponse.verify|verify} messages.
+                     * @param message QueryProductsResponse message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IQueryProductsResponse, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified QueryProductsResponse message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.QueryProductsResponse.verify|verify} messages.
+                     * @param message QueryProductsResponse message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IQueryProductsResponse, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a QueryProductsResponse message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns QueryProductsResponse
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.QueryProductsResponse;
+
+                    /**
+                     * Decodes a QueryProductsResponse message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns QueryProductsResponse
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.QueryProductsResponse;
+
+                    /**
+                     * Verifies a QueryProductsResponse message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a QueryProductsResponse message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns QueryProductsResponse
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.QueryProductsResponse;
+
+                    /**
+                     * Creates a plain object from a QueryProductsResponse message. Also converts values to other types if specified.
+                     * @param message QueryProductsResponse
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.QueryProductsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this QueryProductsResponse to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for QueryProductsResponse
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a QueryDatabaseResourceGroupsRequest. */
+                interface IQueryDatabaseResourceGroupsRequest {
+
+                    /** QueryDatabaseResourceGroupsRequest parent */
+                    parent?: (string|null);
+
+                    /** QueryDatabaseResourceGroupsRequest filter */
+                    filter?: (string|null);
+
+                    /** QueryDatabaseResourceGroupsRequest signalTypeGroups */
+                    signalTypeGroups?: (google.cloud.databasecenter.v1beta.ISignalTypeGroup[]|null);
+
+                    /** QueryDatabaseResourceGroupsRequest signalFilters */
+                    signalFilters?: (google.cloud.databasecenter.v1beta.ISignalFilter[]|null);
+
+                    /** QueryDatabaseResourceGroupsRequest orderBy */
+                    orderBy?: (string|null);
+
+                    /** QueryDatabaseResourceGroupsRequest pageSize */
+                    pageSize?: (number|null);
+
+                    /** QueryDatabaseResourceGroupsRequest pageToken */
+                    pageToken?: (string|null);
+                }
+
+                /** Represents a QueryDatabaseResourceGroupsRequest. */
+                class QueryDatabaseResourceGroupsRequest implements IQueryDatabaseResourceGroupsRequest {
+
+                    /**
+                     * Constructs a new QueryDatabaseResourceGroupsRequest.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsRequest);
+
+                    /** QueryDatabaseResourceGroupsRequest parent. */
+                    public parent: string;
+
+                    /** QueryDatabaseResourceGroupsRequest filter. */
+                    public filter: string;
+
+                    /** QueryDatabaseResourceGroupsRequest signalTypeGroups. */
+                    public signalTypeGroups: google.cloud.databasecenter.v1beta.ISignalTypeGroup[];
+
+                    /** QueryDatabaseResourceGroupsRequest signalFilters. */
+                    public signalFilters: google.cloud.databasecenter.v1beta.ISignalFilter[];
+
+                    /** QueryDatabaseResourceGroupsRequest orderBy. */
+                    public orderBy: string;
+
+                    /** QueryDatabaseResourceGroupsRequest pageSize. */
+                    public pageSize: number;
+
+                    /** QueryDatabaseResourceGroupsRequest pageToken. */
+                    public pageToken: string;
+
+                    /**
+                     * Creates a new QueryDatabaseResourceGroupsRequest instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns QueryDatabaseResourceGroupsRequest instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsRequest): google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest;
+
+                    /**
+                     * Encodes the specified QueryDatabaseResourceGroupsRequest message. Does not implicitly {@link google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest.verify|verify} messages.
+                     * @param message QueryDatabaseResourceGroupsRequest message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified QueryDatabaseResourceGroupsRequest message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest.verify|verify} messages.
+                     * @param message QueryDatabaseResourceGroupsRequest message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a QueryDatabaseResourceGroupsRequest message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns QueryDatabaseResourceGroupsRequest
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest;
+
+                    /**
+                     * Decodes a QueryDatabaseResourceGroupsRequest message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns QueryDatabaseResourceGroupsRequest
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest;
+
+                    /**
+                     * Verifies a QueryDatabaseResourceGroupsRequest message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a QueryDatabaseResourceGroupsRequest message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns QueryDatabaseResourceGroupsRequest
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest;
+
+                    /**
+                     * Creates a plain object from a QueryDatabaseResourceGroupsRequest message. Also converts values to other types if specified.
+                     * @param message QueryDatabaseResourceGroupsRequest
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this QueryDatabaseResourceGroupsRequest to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for QueryDatabaseResourceGroupsRequest
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a QueryDatabaseResourceGroupsResponse. */
+                interface IQueryDatabaseResourceGroupsResponse {
+
+                    /** QueryDatabaseResourceGroupsResponse resourceGroups */
+                    resourceGroups?: (google.cloud.databasecenter.v1beta.IDatabaseResourceGroup[]|null);
+
+                    /** QueryDatabaseResourceGroupsResponse nextPageToken */
+                    nextPageToken?: (string|null);
+
+                    /** QueryDatabaseResourceGroupsResponse unreachable */
+                    unreachable?: (string[]|null);
+                }
+
+                /** Represents a QueryDatabaseResourceGroupsResponse. */
+                class QueryDatabaseResourceGroupsResponse implements IQueryDatabaseResourceGroupsResponse {
+
+                    /**
+                     * Constructs a new QueryDatabaseResourceGroupsResponse.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsResponse);
+
+                    /** QueryDatabaseResourceGroupsResponse resourceGroups. */
+                    public resourceGroups: google.cloud.databasecenter.v1beta.IDatabaseResourceGroup[];
+
+                    /** QueryDatabaseResourceGroupsResponse nextPageToken. */
+                    public nextPageToken: string;
+
+                    /** QueryDatabaseResourceGroupsResponse unreachable. */
+                    public unreachable: string[];
+
+                    /**
+                     * Creates a new QueryDatabaseResourceGroupsResponse instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns QueryDatabaseResourceGroupsResponse instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsResponse): google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse;
+
+                    /**
+                     * Encodes the specified QueryDatabaseResourceGroupsResponse message. Does not implicitly {@link google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse.verify|verify} messages.
+                     * @param message QueryDatabaseResourceGroupsResponse message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsResponse, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified QueryDatabaseResourceGroupsResponse message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse.verify|verify} messages.
+                     * @param message QueryDatabaseResourceGroupsResponse message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsResponse, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a QueryDatabaseResourceGroupsResponse message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns QueryDatabaseResourceGroupsResponse
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse;
+
+                    /**
+                     * Decodes a QueryDatabaseResourceGroupsResponse message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns QueryDatabaseResourceGroupsResponse
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse;
+
+                    /**
+                     * Verifies a QueryDatabaseResourceGroupsResponse message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a QueryDatabaseResourceGroupsResponse message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns QueryDatabaseResourceGroupsResponse
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse;
+
+                    /**
+                     * Creates a plain object from a QueryDatabaseResourceGroupsResponse message. Also converts values to other types if specified.
+                     * @param message QueryDatabaseResourceGroupsResponse
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this QueryDatabaseResourceGroupsResponse to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for QueryDatabaseResourceGroupsResponse
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a DatabaseResourceGroup. */
+                interface IDatabaseResourceGroup {
+
+                    /** DatabaseResourceGroup rootResources */
+                    rootResources?: (google.cloud.databasecenter.v1beta.IDatabaseResource[]|null);
+
+                    /** DatabaseResourceGroup signalGroups */
+                    signalGroups?: (google.cloud.databasecenter.v1beta.IIssueCount[]|null);
+                }
+
+                /** Represents a DatabaseResourceGroup. */
+                class DatabaseResourceGroup implements IDatabaseResourceGroup {
+
+                    /**
+                     * Constructs a new DatabaseResourceGroup.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IDatabaseResourceGroup);
+
+                    /** DatabaseResourceGroup rootResources. */
+                    public rootResources: google.cloud.databasecenter.v1beta.IDatabaseResource[];
+
+                    /** DatabaseResourceGroup signalGroups. */
+                    public signalGroups: google.cloud.databasecenter.v1beta.IIssueCount[];
+
+                    /**
+                     * Creates a new DatabaseResourceGroup instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns DatabaseResourceGroup instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IDatabaseResourceGroup): google.cloud.databasecenter.v1beta.DatabaseResourceGroup;
+
+                    /**
+                     * Encodes the specified DatabaseResourceGroup message. Does not implicitly {@link google.cloud.databasecenter.v1beta.DatabaseResourceGroup.verify|verify} messages.
+                     * @param message DatabaseResourceGroup message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IDatabaseResourceGroup, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified DatabaseResourceGroup message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.DatabaseResourceGroup.verify|verify} messages.
+                     * @param message DatabaseResourceGroup message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IDatabaseResourceGroup, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a DatabaseResourceGroup message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns DatabaseResourceGroup
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.DatabaseResourceGroup;
+
+                    /**
+                     * Decodes a DatabaseResourceGroup message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns DatabaseResourceGroup
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.DatabaseResourceGroup;
+
+                    /**
+                     * Verifies a DatabaseResourceGroup message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a DatabaseResourceGroup message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns DatabaseResourceGroup
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.DatabaseResourceGroup;
+
+                    /**
+                     * Creates a plain object from a DatabaseResourceGroup message. Also converts values to other types if specified.
+                     * @param message DatabaseResourceGroup
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.DatabaseResourceGroup, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this DatabaseResourceGroup to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for DatabaseResourceGroup
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a DatabaseResource. */
+                interface IDatabaseResource {
+
+                    /** DatabaseResource childResources */
+                    childResources?: (google.cloud.databasecenter.v1beta.IDatabaseResource[]|null);
+
+                    /** DatabaseResource fullResourceName */
+                    fullResourceName?: (string|null);
+
+                    /** DatabaseResource container */
+                    container?: (string|null);
+
+                    /** DatabaseResource product */
+                    product?: (google.cloud.databasecenter.v1beta.IProduct|null);
+
+                    /** DatabaseResource location */
+                    location?: (string|null);
+
+                    /** DatabaseResource labels */
+                    labels?: (google.cloud.databasecenter.v1beta.ILabel[]|null);
+
+                    /** DatabaseResource tags */
+                    tags?: (google.cloud.databasecenter.v1beta.ITag[]|null);
+
+                    /** DatabaseResource resourceType */
+                    resourceType?: (string|null);
+
+                    /** DatabaseResource subResourceType */
+                    subResourceType?: (google.cloud.databasecenter.v1beta.SubResourceType|keyof typeof google.cloud.databasecenter.v1beta.SubResourceType|null);
+
+                    /** DatabaseResource machineConfig */
+                    machineConfig?: (google.cloud.databasecenter.v1beta.IMachineConfig|null);
+
+                    /** DatabaseResource signalGroups */
+                    signalGroups?: (google.cloud.databasecenter.v1beta.ISignalGroup[]|null);
+
+                    /** DatabaseResource metrics */
+                    metrics?: (google.cloud.databasecenter.v1beta.IMetrics|null);
+
+                    /** DatabaseResource resourceCategory */
+                    resourceCategory?: (google.cloud.databasecenter.v1beta.ResourceCategory|keyof typeof google.cloud.databasecenter.v1beta.ResourceCategory|null);
+
+                    /** DatabaseResource resourceName */
+                    resourceName?: (string|null);
+
+                    /** DatabaseResource backupdrConfig */
+                    backupdrConfig?: (google.cloud.databasecenter.v1beta.IBackupDRConfig|null);
+
+                    /** DatabaseResource edition */
+                    edition?: (google.cloud.databasecenter.v1beta.Edition|keyof typeof google.cloud.databasecenter.v1beta.Edition|null);
+
+                    /** DatabaseResource maintenanceInfo */
+                    maintenanceInfo?: (google.cloud.databasecenter.v1beta.IMaintenanceInfo|null);
+
+                    /** DatabaseResource affiliations */
+                    affiliations?: (google.cloud.databasecenter.v1beta.IAffiliation[]|null);
+                }
+
+                /** Represents a DatabaseResource. */
+                class DatabaseResource implements IDatabaseResource {
+
+                    /**
+                     * Constructs a new DatabaseResource.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IDatabaseResource);
+
+                    /** DatabaseResource childResources. */
+                    public childResources: google.cloud.databasecenter.v1beta.IDatabaseResource[];
+
+                    /** DatabaseResource fullResourceName. */
+                    public fullResourceName: string;
+
+                    /** DatabaseResource container. */
+                    public container: string;
+
+                    /** DatabaseResource product. */
+                    public product?: (google.cloud.databasecenter.v1beta.IProduct|null);
+
+                    /** DatabaseResource location. */
+                    public location: string;
+
+                    /** DatabaseResource labels. */
+                    public labels: google.cloud.databasecenter.v1beta.ILabel[];
+
+                    /** DatabaseResource tags. */
+                    public tags: google.cloud.databasecenter.v1beta.ITag[];
+
+                    /** DatabaseResource resourceType. */
+                    public resourceType: string;
+
+                    /** DatabaseResource subResourceType. */
+                    public subResourceType: (google.cloud.databasecenter.v1beta.SubResourceType|keyof typeof google.cloud.databasecenter.v1beta.SubResourceType);
+
+                    /** DatabaseResource machineConfig. */
+                    public machineConfig?: (google.cloud.databasecenter.v1beta.IMachineConfig|null);
+
+                    /** DatabaseResource signalGroups. */
+                    public signalGroups: google.cloud.databasecenter.v1beta.ISignalGroup[];
+
+                    /** DatabaseResource metrics. */
+                    public metrics?: (google.cloud.databasecenter.v1beta.IMetrics|null);
+
+                    /** DatabaseResource resourceCategory. */
+                    public resourceCategory: (google.cloud.databasecenter.v1beta.ResourceCategory|keyof typeof google.cloud.databasecenter.v1beta.ResourceCategory);
+
+                    /** DatabaseResource resourceName. */
+                    public resourceName: string;
+
+                    /** DatabaseResource backupdrConfig. */
+                    public backupdrConfig?: (google.cloud.databasecenter.v1beta.IBackupDRConfig|null);
+
+                    /** DatabaseResource edition. */
+                    public edition: (google.cloud.databasecenter.v1beta.Edition|keyof typeof google.cloud.databasecenter.v1beta.Edition);
+
+                    /** DatabaseResource maintenanceInfo. */
+                    public maintenanceInfo?: (google.cloud.databasecenter.v1beta.IMaintenanceInfo|null);
+
+                    /** DatabaseResource affiliations. */
+                    public affiliations: google.cloud.databasecenter.v1beta.IAffiliation[];
+
+                    /**
+                     * Creates a new DatabaseResource instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns DatabaseResource instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IDatabaseResource): google.cloud.databasecenter.v1beta.DatabaseResource;
+
+                    /**
+                     * Encodes the specified DatabaseResource message. Does not implicitly {@link google.cloud.databasecenter.v1beta.DatabaseResource.verify|verify} messages.
+                     * @param message DatabaseResource message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IDatabaseResource, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified DatabaseResource message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.DatabaseResource.verify|verify} messages.
+                     * @param message DatabaseResource message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IDatabaseResource, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a DatabaseResource message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns DatabaseResource
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.DatabaseResource;
+
+                    /**
+                     * Decodes a DatabaseResource message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns DatabaseResource
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.DatabaseResource;
+
+                    /**
+                     * Verifies a DatabaseResource message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a DatabaseResource message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns DatabaseResource
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.DatabaseResource;
+
+                    /**
+                     * Creates a plain object from a DatabaseResource message. Also converts values to other types if specified.
+                     * @param message DatabaseResource
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.DatabaseResource, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this DatabaseResource to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for DatabaseResource
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of an AggregateIssueStatsRequest. */
+                interface IAggregateIssueStatsRequest {
+
+                    /** AggregateIssueStatsRequest parent */
+                    parent?: (string|null);
+
+                    /** AggregateIssueStatsRequest filter */
+                    filter?: (string|null);
+
+                    /** AggregateIssueStatsRequest signalTypeGroups */
+                    signalTypeGroups?: (google.cloud.databasecenter.v1beta.ISignalTypeGroup[]|null);
+
+                    /** AggregateIssueStatsRequest baselineDate */
+                    baselineDate?: (google.type.IDate|null);
+                }
+
+                /** Represents an AggregateIssueStatsRequest. */
+                class AggregateIssueStatsRequest implements IAggregateIssueStatsRequest {
+
+                    /**
+                     * Constructs a new AggregateIssueStatsRequest.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IAggregateIssueStatsRequest);
+
+                    /** AggregateIssueStatsRequest parent. */
+                    public parent: string;
+
+                    /** AggregateIssueStatsRequest filter. */
+                    public filter: string;
+
+                    /** AggregateIssueStatsRequest signalTypeGroups. */
+                    public signalTypeGroups: google.cloud.databasecenter.v1beta.ISignalTypeGroup[];
+
+                    /** AggregateIssueStatsRequest baselineDate. */
+                    public baselineDate?: (google.type.IDate|null);
+
+                    /**
+                     * Creates a new AggregateIssueStatsRequest instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns AggregateIssueStatsRequest instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IAggregateIssueStatsRequest): google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest;
+
+                    /**
+                     * Encodes the specified AggregateIssueStatsRequest message. Does not implicitly {@link google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest.verify|verify} messages.
+                     * @param message AggregateIssueStatsRequest message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IAggregateIssueStatsRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified AggregateIssueStatsRequest message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest.verify|verify} messages.
+                     * @param message AggregateIssueStatsRequest message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IAggregateIssueStatsRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes an AggregateIssueStatsRequest message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns AggregateIssueStatsRequest
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest;
+
+                    /**
+                     * Decodes an AggregateIssueStatsRequest message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns AggregateIssueStatsRequest
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest;
+
+                    /**
+                     * Verifies an AggregateIssueStatsRequest message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates an AggregateIssueStatsRequest message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns AggregateIssueStatsRequest
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest;
+
+                    /**
+                     * Creates a plain object from an AggregateIssueStatsRequest message. Also converts values to other types if specified.
+                     * @param message AggregateIssueStatsRequest
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this AggregateIssueStatsRequest to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for AggregateIssueStatsRequest
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of an AggregateIssueStatsResponse. */
+                interface IAggregateIssueStatsResponse {
+
+                    /** AggregateIssueStatsResponse issueGroupStats */
+                    issueGroupStats?: (google.cloud.databasecenter.v1beta.IIssueGroupStats[]|null);
+
+                    /** AggregateIssueStatsResponse totalResourcesCount */
+                    totalResourcesCount?: (number|null);
+
+                    /** AggregateIssueStatsResponse totalResourceGroupsCount */
+                    totalResourceGroupsCount?: (number|null);
+
+                    /** AggregateIssueStatsResponse unreachable */
+                    unreachable?: (string[]|null);
+                }
+
+                /** Represents an AggregateIssueStatsResponse. */
+                class AggregateIssueStatsResponse implements IAggregateIssueStatsResponse {
+
+                    /**
+                     * Constructs a new AggregateIssueStatsResponse.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IAggregateIssueStatsResponse);
+
+                    /** AggregateIssueStatsResponse issueGroupStats. */
+                    public issueGroupStats: google.cloud.databasecenter.v1beta.IIssueGroupStats[];
+
+                    /** AggregateIssueStatsResponse totalResourcesCount. */
+                    public totalResourcesCount: number;
+
+                    /** AggregateIssueStatsResponse totalResourceGroupsCount. */
+                    public totalResourceGroupsCount: number;
+
+                    /** AggregateIssueStatsResponse unreachable. */
+                    public unreachable: string[];
+
+                    /**
+                     * Creates a new AggregateIssueStatsResponse instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns AggregateIssueStatsResponse instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IAggregateIssueStatsResponse): google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse;
+
+                    /**
+                     * Encodes the specified AggregateIssueStatsResponse message. Does not implicitly {@link google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse.verify|verify} messages.
+                     * @param message AggregateIssueStatsResponse message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IAggregateIssueStatsResponse, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified AggregateIssueStatsResponse message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse.verify|verify} messages.
+                     * @param message AggregateIssueStatsResponse message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IAggregateIssueStatsResponse, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes an AggregateIssueStatsResponse message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns AggregateIssueStatsResponse
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse;
+
+                    /**
+                     * Decodes an AggregateIssueStatsResponse message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns AggregateIssueStatsResponse
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse;
+
+                    /**
+                     * Verifies an AggregateIssueStatsResponse message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates an AggregateIssueStatsResponse message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns AggregateIssueStatsResponse
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse;
+
+                    /**
+                     * Creates a plain object from an AggregateIssueStatsResponse message. Also converts values to other types if specified.
+                     * @param message AggregateIssueStatsResponse
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this AggregateIssueStatsResponse to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for AggregateIssueStatsResponse
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of an IssueGroupStats. */
+                interface IIssueGroupStats {
+
+                    /** IssueGroupStats displayName */
+                    displayName?: (string|null);
+
+                    /** IssueGroupStats resourceGroupsCount */
+                    resourceGroupsCount?: (number|null);
+
+                    /** IssueGroupStats resourcesCount */
+                    resourcesCount?: (number|null);
+
+                    /** IssueGroupStats healthyResourceGroupsCount */
+                    healthyResourceGroupsCount?: (number|null);
+
+                    /** IssueGroupStats healthyResourcesCount */
+                    healthyResourcesCount?: (number|null);
+
+                    /** IssueGroupStats issueStats */
+                    issueStats?: (google.cloud.databasecenter.v1beta.IIssueStats[]|null);
+                }
+
+                /** Represents an IssueGroupStats. */
+                class IssueGroupStats implements IIssueGroupStats {
+
+                    /**
+                     * Constructs a new IssueGroupStats.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IIssueGroupStats);
+
+                    /** IssueGroupStats displayName. */
+                    public displayName: string;
+
+                    /** IssueGroupStats resourceGroupsCount. */
+                    public resourceGroupsCount: number;
+
+                    /** IssueGroupStats resourcesCount. */
+                    public resourcesCount: number;
+
+                    /** IssueGroupStats healthyResourceGroupsCount. */
+                    public healthyResourceGroupsCount: number;
+
+                    /** IssueGroupStats healthyResourcesCount. */
+                    public healthyResourcesCount: number;
+
+                    /** IssueGroupStats issueStats. */
+                    public issueStats: google.cloud.databasecenter.v1beta.IIssueStats[];
+
+                    /**
+                     * Creates a new IssueGroupStats instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns IssueGroupStats instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IIssueGroupStats): google.cloud.databasecenter.v1beta.IssueGroupStats;
+
+                    /**
+                     * Encodes the specified IssueGroupStats message. Does not implicitly {@link google.cloud.databasecenter.v1beta.IssueGroupStats.verify|verify} messages.
+                     * @param message IssueGroupStats message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IIssueGroupStats, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified IssueGroupStats message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.IssueGroupStats.verify|verify} messages.
+                     * @param message IssueGroupStats message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IIssueGroupStats, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes an IssueGroupStats message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns IssueGroupStats
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.IssueGroupStats;
+
+                    /**
+                     * Decodes an IssueGroupStats message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns IssueGroupStats
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.IssueGroupStats;
+
+                    /**
+                     * Verifies an IssueGroupStats message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates an IssueGroupStats message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns IssueGroupStats
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.IssueGroupStats;
+
+                    /**
+                     * Creates a plain object from an IssueGroupStats message. Also converts values to other types if specified.
+                     * @param message IssueGroupStats
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.IssueGroupStats, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this IssueGroupStats to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for IssueGroupStats
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of an IssueStats. */
+                interface IIssueStats {
+
+                    /** IssueStats signalType */
+                    signalType?: (google.cloud.databasecenter.v1beta.SignalType|keyof typeof google.cloud.databasecenter.v1beta.SignalType|null);
+
+                    /** IssueStats resourceCount */
+                    resourceCount?: (number|null);
+
+                    /** IssueStats deltaDetails */
+                    deltaDetails?: (google.cloud.databasecenter.v1beta.IDeltaDetails|null);
+
+                    /** IssueStats issueSeverity */
+                    issueSeverity?: (google.cloud.databasecenter.v1beta.IssueSeverity|keyof typeof google.cloud.databasecenter.v1beta.IssueSeverity|null);
+                }
+
+                /** Represents an IssueStats. */
+                class IssueStats implements IIssueStats {
+
+                    /**
+                     * Constructs a new IssueStats.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IIssueStats);
+
+                    /** IssueStats signalType. */
+                    public signalType: (google.cloud.databasecenter.v1beta.SignalType|keyof typeof google.cloud.databasecenter.v1beta.SignalType);
+
+                    /** IssueStats resourceCount. */
+                    public resourceCount: number;
+
+                    /** IssueStats deltaDetails. */
+                    public deltaDetails?: (google.cloud.databasecenter.v1beta.IDeltaDetails|null);
+
+                    /** IssueStats issueSeverity. */
+                    public issueSeverity?: (google.cloud.databasecenter.v1beta.IssueSeverity|keyof typeof google.cloud.databasecenter.v1beta.IssueSeverity|null);
+
+                    /**
+                     * Creates a new IssueStats instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns IssueStats instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IIssueStats): google.cloud.databasecenter.v1beta.IssueStats;
+
+                    /**
+                     * Encodes the specified IssueStats message. Does not implicitly {@link google.cloud.databasecenter.v1beta.IssueStats.verify|verify} messages.
+                     * @param message IssueStats message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IIssueStats, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified IssueStats message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.IssueStats.verify|verify} messages.
+                     * @param message IssueStats message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IIssueStats, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes an IssueStats message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns IssueStats
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.IssueStats;
+
+                    /**
+                     * Decodes an IssueStats message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns IssueStats
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.IssueStats;
+
+                    /**
+                     * Verifies an IssueStats message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates an IssueStats message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns IssueStats
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.IssueStats;
+
+                    /**
+                     * Creates a plain object from an IssueStats message. Also converts values to other types if specified.
+                     * @param message IssueStats
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.IssueStats, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this IssueStats to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for IssueStats
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a Label. */
+                interface ILabel {
+
+                    /** Label key */
+                    key?: (string|null);
+
+                    /** Label value */
+                    value?: (string|null);
+
+                    /** Label source */
+                    source?: (string|null);
+                }
+
+                /** Represents a Label. */
+                class Label implements ILabel {
+
+                    /**
+                     * Constructs a new Label.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.ILabel);
+
+                    /** Label key. */
+                    public key: string;
+
+                    /** Label value. */
+                    public value: string;
+
+                    /** Label source. */
+                    public source: string;
+
+                    /**
+                     * Creates a new Label instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns Label instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.ILabel): google.cloud.databasecenter.v1beta.Label;
+
+                    /**
+                     * Encodes the specified Label message. Does not implicitly {@link google.cloud.databasecenter.v1beta.Label.verify|verify} messages.
+                     * @param message Label message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.ILabel, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified Label message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.Label.verify|verify} messages.
+                     * @param message Label message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.ILabel, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a Label message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns Label
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.Label;
+
+                    /**
+                     * Decodes a Label message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns Label
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.Label;
+
+                    /**
+                     * Verifies a Label message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a Label message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns Label
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.Label;
+
+                    /**
+                     * Creates a plain object from a Label message. Also converts values to other types if specified.
+                     * @param message Label
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.Label, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this Label to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for Label
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of an AggregateFleetRequest. */
+                interface IAggregateFleetRequest {
+
+                    /** AggregateFleetRequest parent */
+                    parent?: (string|null);
+
+                    /** AggregateFleetRequest filter */
+                    filter?: (string|null);
+
+                    /** AggregateFleetRequest groupBy */
+                    groupBy?: (string|null);
+
+                    /** AggregateFleetRequest orderBy */
+                    orderBy?: (string|null);
+
+                    /** AggregateFleetRequest pageSize */
+                    pageSize?: (number|null);
+
+                    /** AggregateFleetRequest pageToken */
+                    pageToken?: (string|null);
+
+                    /** AggregateFleetRequest baselineDate */
+                    baselineDate?: (google.type.IDate|null);
+                }
+
+                /** Represents an AggregateFleetRequest. */
+                class AggregateFleetRequest implements IAggregateFleetRequest {
+
+                    /**
+                     * Constructs a new AggregateFleetRequest.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IAggregateFleetRequest);
+
+                    /** AggregateFleetRequest parent. */
+                    public parent: string;
+
+                    /** AggregateFleetRequest filter. */
+                    public filter: string;
+
+                    /** AggregateFleetRequest groupBy. */
+                    public groupBy: string;
+
+                    /** AggregateFleetRequest orderBy. */
+                    public orderBy: string;
+
+                    /** AggregateFleetRequest pageSize. */
+                    public pageSize: number;
+
+                    /** AggregateFleetRequest pageToken. */
+                    public pageToken: string;
+
+                    /** AggregateFleetRequest baselineDate. */
+                    public baselineDate?: (google.type.IDate|null);
+
+                    /**
+                     * Creates a new AggregateFleetRequest instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns AggregateFleetRequest instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IAggregateFleetRequest): google.cloud.databasecenter.v1beta.AggregateFleetRequest;
+
+                    /**
+                     * Encodes the specified AggregateFleetRequest message. Does not implicitly {@link google.cloud.databasecenter.v1beta.AggregateFleetRequest.verify|verify} messages.
+                     * @param message AggregateFleetRequest message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IAggregateFleetRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified AggregateFleetRequest message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.AggregateFleetRequest.verify|verify} messages.
+                     * @param message AggregateFleetRequest message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IAggregateFleetRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes an AggregateFleetRequest message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns AggregateFleetRequest
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.AggregateFleetRequest;
+
+                    /**
+                     * Decodes an AggregateFleetRequest message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns AggregateFleetRequest
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.AggregateFleetRequest;
+
+                    /**
+                     * Verifies an AggregateFleetRequest message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates an AggregateFleetRequest message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns AggregateFleetRequest
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.AggregateFleetRequest;
+
+                    /**
+                     * Creates a plain object from an AggregateFleetRequest message. Also converts values to other types if specified.
+                     * @param message AggregateFleetRequest
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.AggregateFleetRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this AggregateFleetRequest to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for AggregateFleetRequest
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of an AggregateFleetResponse. */
+                interface IAggregateFleetResponse {
+
+                    /** AggregateFleetResponse rows */
+                    rows?: (google.cloud.databasecenter.v1beta.IAggregateFleetRow[]|null);
+
+                    /** AggregateFleetResponse resourceGroupsTotalCount */
+                    resourceGroupsTotalCount?: (number|null);
+
+                    /** AggregateFleetResponse resourceTotalCount */
+                    resourceTotalCount?: (number|null);
+
+                    /** AggregateFleetResponse nextPageToken */
+                    nextPageToken?: (string|null);
+
+                    /** AggregateFleetResponse unreachable */
+                    unreachable?: (string[]|null);
+                }
+
+                /** Represents an AggregateFleetResponse. */
+                class AggregateFleetResponse implements IAggregateFleetResponse {
+
+                    /**
+                     * Constructs a new AggregateFleetResponse.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IAggregateFleetResponse);
+
+                    /** AggregateFleetResponse rows. */
+                    public rows: google.cloud.databasecenter.v1beta.IAggregateFleetRow[];
+
+                    /** AggregateFleetResponse resourceGroupsTotalCount. */
+                    public resourceGroupsTotalCount: number;
+
+                    /** AggregateFleetResponse resourceTotalCount. */
+                    public resourceTotalCount: number;
+
+                    /** AggregateFleetResponse nextPageToken. */
+                    public nextPageToken: string;
+
+                    /** AggregateFleetResponse unreachable. */
+                    public unreachable: string[];
+
+                    /**
+                     * Creates a new AggregateFleetResponse instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns AggregateFleetResponse instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IAggregateFleetResponse): google.cloud.databasecenter.v1beta.AggregateFleetResponse;
+
+                    /**
+                     * Encodes the specified AggregateFleetResponse message. Does not implicitly {@link google.cloud.databasecenter.v1beta.AggregateFleetResponse.verify|verify} messages.
+                     * @param message AggregateFleetResponse message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IAggregateFleetResponse, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified AggregateFleetResponse message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.AggregateFleetResponse.verify|verify} messages.
+                     * @param message AggregateFleetResponse message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IAggregateFleetResponse, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes an AggregateFleetResponse message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns AggregateFleetResponse
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.AggregateFleetResponse;
+
+                    /**
+                     * Decodes an AggregateFleetResponse message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns AggregateFleetResponse
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.AggregateFleetResponse;
+
+                    /**
+                     * Verifies an AggregateFleetResponse message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates an AggregateFleetResponse message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns AggregateFleetResponse
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.AggregateFleetResponse;
+
+                    /**
+                     * Creates a plain object from an AggregateFleetResponse message. Also converts values to other types if specified.
+                     * @param message AggregateFleetResponse
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.AggregateFleetResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this AggregateFleetResponse to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for AggregateFleetResponse
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of an AggregateFleetRow. */
+                interface IAggregateFleetRow {
+
+                    /** AggregateFleetRow dimension */
+                    dimension?: (google.cloud.databasecenter.v1beta.IDimension[]|null);
+
+                    /** AggregateFleetRow resourceGroupsCount */
+                    resourceGroupsCount?: (number|null);
+
+                    /** AggregateFleetRow resourcesCount */
+                    resourcesCount?: (number|null);
+
+                    /** AggregateFleetRow deltaDetails */
+                    deltaDetails?: (google.cloud.databasecenter.v1beta.IDeltaDetails|null);
+                }
+
+                /** Represents an AggregateFleetRow. */
+                class AggregateFleetRow implements IAggregateFleetRow {
+
+                    /**
+                     * Constructs a new AggregateFleetRow.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IAggregateFleetRow);
+
+                    /** AggregateFleetRow dimension. */
+                    public dimension: google.cloud.databasecenter.v1beta.IDimension[];
+
+                    /** AggregateFleetRow resourceGroupsCount. */
+                    public resourceGroupsCount: number;
+
+                    /** AggregateFleetRow resourcesCount. */
+                    public resourcesCount: number;
+
+                    /** AggregateFleetRow deltaDetails. */
+                    public deltaDetails?: (google.cloud.databasecenter.v1beta.IDeltaDetails|null);
+
+                    /**
+                     * Creates a new AggregateFleetRow instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns AggregateFleetRow instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IAggregateFleetRow): google.cloud.databasecenter.v1beta.AggregateFleetRow;
+
+                    /**
+                     * Encodes the specified AggregateFleetRow message. Does not implicitly {@link google.cloud.databasecenter.v1beta.AggregateFleetRow.verify|verify} messages.
+                     * @param message AggregateFleetRow message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IAggregateFleetRow, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified AggregateFleetRow message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.AggregateFleetRow.verify|verify} messages.
+                     * @param message AggregateFleetRow message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IAggregateFleetRow, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes an AggregateFleetRow message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns AggregateFleetRow
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.AggregateFleetRow;
+
+                    /**
+                     * Decodes an AggregateFleetRow message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns AggregateFleetRow
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.AggregateFleetRow;
+
+                    /**
+                     * Verifies an AggregateFleetRow message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates an AggregateFleetRow message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns AggregateFleetRow
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.AggregateFleetRow;
+
+                    /**
+                     * Creates a plain object from an AggregateFleetRow message. Also converts values to other types if specified.
+                     * @param message AggregateFleetRow
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.AggregateFleetRow, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this AggregateFleetRow to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for AggregateFleetRow
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a Dimension. */
+                interface IDimension {
+
+                    /** Dimension container */
+                    container?: (string|null);
+
+                    /** Dimension productType */
+                    productType?: (google.cloud.databasecenter.v1beta.ProductType|keyof typeof google.cloud.databasecenter.v1beta.ProductType|null);
+
+                    /** Dimension productEngine */
+                    productEngine?: (google.cloud.databasecenter.v1beta.Engine|keyof typeof google.cloud.databasecenter.v1beta.Engine|null);
+
+                    /** Dimension productVersion */
+                    productVersion?: (string|null);
+
+                    /** Dimension location */
+                    location?: (string|null);
+
+                    /** Dimension resourceType */
+                    resourceType?: (string|null);
+
+                    /** Dimension subResourceType */
+                    subResourceType?: (google.cloud.databasecenter.v1beta.SubResourceType|keyof typeof google.cloud.databasecenter.v1beta.SubResourceType|null);
+
+                    /** Dimension resourceCategory */
+                    resourceCategory?: (google.cloud.databasecenter.v1beta.ResourceCategory|keyof typeof google.cloud.databasecenter.v1beta.ResourceCategory|null);
+
+                    /** Dimension managementType */
+                    managementType?: (google.cloud.databasecenter.v1beta.ManagementType|keyof typeof google.cloud.databasecenter.v1beta.ManagementType|null);
+
+                    /** Dimension edition */
+                    edition?: (google.cloud.databasecenter.v1beta.Edition|keyof typeof google.cloud.databasecenter.v1beta.Edition|null);
+
+                    /** Dimension tagKey */
+                    tagKey?: (string|null);
+
+                    /** Dimension tagValue */
+                    tagValue?: (string|null);
+
+                    /** Dimension tagSource */
+                    tagSource?: (string|null);
+
+                    /** Dimension tagInherited */
+                    tagInherited?: (boolean|null);
+
+                    /** Dimension labelKey */
+                    labelKey?: (string|null);
+
+                    /** Dimension labelValue */
+                    labelValue?: (string|null);
+
+                    /** Dimension labelSource */
+                    labelSource?: (string|null);
+
+                    /** Dimension hasMaintenanceSchedule */
+                    hasMaintenanceSchedule?: (boolean|null);
+
+                    /** Dimension hasDenyMaintenanceSchedules */
+                    hasDenyMaintenanceSchedules?: (boolean|null);
+                }
+
+                /** Represents a Dimension. */
+                class Dimension implements IDimension {
+
+                    /**
+                     * Constructs a new Dimension.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IDimension);
+
+                    /** Dimension container. */
+                    public container?: (string|null);
+
+                    /** Dimension productType. */
+                    public productType?: (google.cloud.databasecenter.v1beta.ProductType|keyof typeof google.cloud.databasecenter.v1beta.ProductType|null);
+
+                    /** Dimension productEngine. */
+                    public productEngine?: (google.cloud.databasecenter.v1beta.Engine|keyof typeof google.cloud.databasecenter.v1beta.Engine|null);
+
+                    /** Dimension productVersion. */
+                    public productVersion?: (string|null);
+
+                    /** Dimension location. */
+                    public location?: (string|null);
+
+                    /** Dimension resourceType. */
+                    public resourceType?: (string|null);
+
+                    /** Dimension subResourceType. */
+                    public subResourceType?: (google.cloud.databasecenter.v1beta.SubResourceType|keyof typeof google.cloud.databasecenter.v1beta.SubResourceType|null);
+
+                    /** Dimension resourceCategory. */
+                    public resourceCategory?: (google.cloud.databasecenter.v1beta.ResourceCategory|keyof typeof google.cloud.databasecenter.v1beta.ResourceCategory|null);
+
+                    /** Dimension managementType. */
+                    public managementType?: (google.cloud.databasecenter.v1beta.ManagementType|keyof typeof google.cloud.databasecenter.v1beta.ManagementType|null);
+
+                    /** Dimension edition. */
+                    public edition?: (google.cloud.databasecenter.v1beta.Edition|keyof typeof google.cloud.databasecenter.v1beta.Edition|null);
+
+                    /** Dimension tagKey. */
+                    public tagKey?: (string|null);
+
+                    /** Dimension tagValue. */
+                    public tagValue?: (string|null);
+
+                    /** Dimension tagSource. */
+                    public tagSource?: (string|null);
+
+                    /** Dimension tagInherited. */
+                    public tagInherited?: (boolean|null);
+
+                    /** Dimension labelKey. */
+                    public labelKey?: (string|null);
+
+                    /** Dimension labelValue. */
+                    public labelValue?: (string|null);
+
+                    /** Dimension labelSource. */
+                    public labelSource?: (string|null);
+
+                    /** Dimension hasMaintenanceSchedule. */
+                    public hasMaintenanceSchedule?: (boolean|null);
+
+                    /** Dimension hasDenyMaintenanceSchedules. */
+                    public hasDenyMaintenanceSchedules?: (boolean|null);
+
+                    /** Dimension dimension. */
+                    public dimension?: ("container"|"productType"|"productEngine"|"productVersion"|"location"|"resourceType"|"subResourceType"|"resourceCategory"|"managementType"|"edition"|"tagKey"|"tagValue"|"tagSource"|"tagInherited"|"labelKey"|"labelValue"|"labelSource"|"hasMaintenanceSchedule"|"hasDenyMaintenanceSchedules");
+
+                    /**
+                     * Creates a new Dimension instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns Dimension instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IDimension): google.cloud.databasecenter.v1beta.Dimension;
+
+                    /**
+                     * Encodes the specified Dimension message. Does not implicitly {@link google.cloud.databasecenter.v1beta.Dimension.verify|verify} messages.
+                     * @param message Dimension message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IDimension, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified Dimension message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.Dimension.verify|verify} messages.
+                     * @param message Dimension message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IDimension, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a Dimension message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns Dimension
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.Dimension;
+
+                    /**
+                     * Decodes a Dimension message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns Dimension
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.Dimension;
+
+                    /**
+                     * Verifies a Dimension message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a Dimension message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns Dimension
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.Dimension;
+
+                    /**
+                     * Creates a plain object from a Dimension message. Also converts values to other types if specified.
+                     * @param message Dimension
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.Dimension, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this Dimension to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for Dimension
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a BackupDRConfig. */
+                interface IBackupDRConfig {
+
+                    /** BackupDRConfig backupdrManaged */
+                    backupdrManaged?: (boolean|null);
+                }
+
+                /** Represents a BackupDRConfig. */
+                class BackupDRConfig implements IBackupDRConfig {
+
+                    /**
+                     * Constructs a new BackupDRConfig.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IBackupDRConfig);
+
+                    /** BackupDRConfig backupdrManaged. */
+                    public backupdrManaged?: (boolean|null);
+
+                    /**
+                     * Creates a new BackupDRConfig instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns BackupDRConfig instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IBackupDRConfig): google.cloud.databasecenter.v1beta.BackupDRConfig;
+
+                    /**
+                     * Encodes the specified BackupDRConfig message. Does not implicitly {@link google.cloud.databasecenter.v1beta.BackupDRConfig.verify|verify} messages.
+                     * @param message BackupDRConfig message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IBackupDRConfig, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified BackupDRConfig message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.BackupDRConfig.verify|verify} messages.
+                     * @param message BackupDRConfig message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IBackupDRConfig, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a BackupDRConfig message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns BackupDRConfig
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.BackupDRConfig;
+
+                    /**
+                     * Decodes a BackupDRConfig message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns BackupDRConfig
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.BackupDRConfig;
+
+                    /**
+                     * Verifies a BackupDRConfig message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a BackupDRConfig message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns BackupDRConfig
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.BackupDRConfig;
+
+                    /**
+                     * Creates a plain object from a BackupDRConfig message. Also converts values to other types if specified.
+                     * @param message BackupDRConfig
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.BackupDRConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this BackupDRConfig to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for BackupDRConfig
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a QueryIssuesRequest. */
+                interface IQueryIssuesRequest {
+
+                    /** QueryIssuesRequest parent */
+                    parent?: (string|null);
+
+                    /** QueryIssuesRequest filter */
+                    filter?: (string|null);
+
+                    /** QueryIssuesRequest signalProductsFilters */
+                    signalProductsFilters?: (google.cloud.databasecenter.v1beta.ISignalProductsFilters[]|null);
+
+                    /** QueryIssuesRequest orderBy */
+                    orderBy?: (string|null);
+
+                    /** QueryIssuesRequest pageSize */
+                    pageSize?: (number|null);
+
+                    /** QueryIssuesRequest pageToken */
+                    pageToken?: (string|null);
+                }
+
+                /** Represents a QueryIssuesRequest. */
+                class QueryIssuesRequest implements IQueryIssuesRequest {
+
+                    /**
+                     * Constructs a new QueryIssuesRequest.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IQueryIssuesRequest);
+
+                    /** QueryIssuesRequest parent. */
+                    public parent: string;
+
+                    /** QueryIssuesRequest filter. */
+                    public filter: string;
+
+                    /** QueryIssuesRequest signalProductsFilters. */
+                    public signalProductsFilters: google.cloud.databasecenter.v1beta.ISignalProductsFilters[];
+
+                    /** QueryIssuesRequest orderBy. */
+                    public orderBy: string;
+
+                    /** QueryIssuesRequest pageSize. */
+                    public pageSize: number;
+
+                    /** QueryIssuesRequest pageToken. */
+                    public pageToken: string;
+
+                    /**
+                     * Creates a new QueryIssuesRequest instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns QueryIssuesRequest instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IQueryIssuesRequest): google.cloud.databasecenter.v1beta.QueryIssuesRequest;
+
+                    /**
+                     * Encodes the specified QueryIssuesRequest message. Does not implicitly {@link google.cloud.databasecenter.v1beta.QueryIssuesRequest.verify|verify} messages.
+                     * @param message QueryIssuesRequest message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IQueryIssuesRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified QueryIssuesRequest message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.QueryIssuesRequest.verify|verify} messages.
+                     * @param message QueryIssuesRequest message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IQueryIssuesRequest, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a QueryIssuesRequest message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns QueryIssuesRequest
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.QueryIssuesRequest;
+
+                    /**
+                     * Decodes a QueryIssuesRequest message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns QueryIssuesRequest
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.QueryIssuesRequest;
+
+                    /**
+                     * Verifies a QueryIssuesRequest message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a QueryIssuesRequest message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns QueryIssuesRequest
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.QueryIssuesRequest;
+
+                    /**
+                     * Creates a plain object from a QueryIssuesRequest message. Also converts values to other types if specified.
+                     * @param message QueryIssuesRequest
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.QueryIssuesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this QueryIssuesRequest to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for QueryIssuesRequest
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a SignalProductsFilters. */
+                interface ISignalProductsFilters {
+
+                    /** SignalProductsFilters signalType */
+                    signalType?: (google.cloud.databasecenter.v1beta.SignalType|keyof typeof google.cloud.databasecenter.v1beta.SignalType|null);
+
+                    /** SignalProductsFilters products */
+                    products?: (google.cloud.databasecenter.v1beta.IProduct[]|null);
+                }
+
+                /** Represents a SignalProductsFilters. */
+                class SignalProductsFilters implements ISignalProductsFilters {
+
+                    /**
+                     * Constructs a new SignalProductsFilters.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.ISignalProductsFilters);
+
+                    /** SignalProductsFilters signalType. */
+                    public signalType: (google.cloud.databasecenter.v1beta.SignalType|keyof typeof google.cloud.databasecenter.v1beta.SignalType);
+
+                    /** SignalProductsFilters products. */
+                    public products: google.cloud.databasecenter.v1beta.IProduct[];
+
+                    /**
+                     * Creates a new SignalProductsFilters instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns SignalProductsFilters instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.ISignalProductsFilters): google.cloud.databasecenter.v1beta.SignalProductsFilters;
+
+                    /**
+                     * Encodes the specified SignalProductsFilters message. Does not implicitly {@link google.cloud.databasecenter.v1beta.SignalProductsFilters.verify|verify} messages.
+                     * @param message SignalProductsFilters message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.ISignalProductsFilters, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified SignalProductsFilters message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.SignalProductsFilters.verify|verify} messages.
+                     * @param message SignalProductsFilters message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.ISignalProductsFilters, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a SignalProductsFilters message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns SignalProductsFilters
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.SignalProductsFilters;
+
+                    /**
+                     * Decodes a SignalProductsFilters message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns SignalProductsFilters
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.SignalProductsFilters;
+
+                    /**
+                     * Verifies a SignalProductsFilters message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a SignalProductsFilters message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns SignalProductsFilters
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.SignalProductsFilters;
+
+                    /**
+                     * Creates a plain object from a SignalProductsFilters message. Also converts values to other types if specified.
+                     * @param message SignalProductsFilters
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.SignalProductsFilters, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this SignalProductsFilters to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for SignalProductsFilters
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a QueryIssuesResponse. */
+                interface IQueryIssuesResponse {
+
+                    /** QueryIssuesResponse resourceIssues */
+                    resourceIssues?: (google.cloud.databasecenter.v1beta.IDatabaseResourceIssue[]|null);
+
+                    /** QueryIssuesResponse nextPageToken */
+                    nextPageToken?: (string|null);
+
+                    /** QueryIssuesResponse unreachable */
+                    unreachable?: (string[]|null);
+                }
+
+                /** Represents a QueryIssuesResponse. */
+                class QueryIssuesResponse implements IQueryIssuesResponse {
+
+                    /**
+                     * Constructs a new QueryIssuesResponse.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IQueryIssuesResponse);
+
+                    /** QueryIssuesResponse resourceIssues. */
+                    public resourceIssues: google.cloud.databasecenter.v1beta.IDatabaseResourceIssue[];
+
+                    /** QueryIssuesResponse nextPageToken. */
+                    public nextPageToken: string;
+
+                    /** QueryIssuesResponse unreachable. */
+                    public unreachable: string[];
+
+                    /**
+                     * Creates a new QueryIssuesResponse instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns QueryIssuesResponse instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IQueryIssuesResponse): google.cloud.databasecenter.v1beta.QueryIssuesResponse;
+
+                    /**
+                     * Encodes the specified QueryIssuesResponse message. Does not implicitly {@link google.cloud.databasecenter.v1beta.QueryIssuesResponse.verify|verify} messages.
+                     * @param message QueryIssuesResponse message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IQueryIssuesResponse, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified QueryIssuesResponse message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.QueryIssuesResponse.verify|verify} messages.
+                     * @param message QueryIssuesResponse message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IQueryIssuesResponse, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a QueryIssuesResponse message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns QueryIssuesResponse
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.QueryIssuesResponse;
+
+                    /**
+                     * Decodes a QueryIssuesResponse message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns QueryIssuesResponse
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.QueryIssuesResponse;
+
+                    /**
+                     * Verifies a QueryIssuesResponse message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a QueryIssuesResponse message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns QueryIssuesResponse
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.QueryIssuesResponse;
+
+                    /**
+                     * Creates a plain object from a QueryIssuesResponse message. Also converts values to other types if specified.
+                     * @param message QueryIssuesResponse
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.QueryIssuesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this QueryIssuesResponse to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for QueryIssuesResponse
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a DatabaseResourceIssue. */
+                interface IDatabaseResourceIssue {
+
+                    /** DatabaseResourceIssue signal */
+                    signal?: (google.cloud.databasecenter.v1beta.ISignal|null);
+
+                    /** DatabaseResourceIssue resource */
+                    resource?: (google.cloud.databasecenter.v1beta.IDatabaseResource|null);
+                }
+
+                /** Represents a DatabaseResourceIssue. */
+                class DatabaseResourceIssue implements IDatabaseResourceIssue {
+
+                    /**
+                     * Constructs a new DatabaseResourceIssue.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IDatabaseResourceIssue);
+
+                    /** DatabaseResourceIssue signal. */
+                    public signal?: (google.cloud.databasecenter.v1beta.ISignal|null);
+
+                    /** DatabaseResourceIssue resource. */
+                    public resource?: (google.cloud.databasecenter.v1beta.IDatabaseResource|null);
+
+                    /**
+                     * Creates a new DatabaseResourceIssue instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns DatabaseResourceIssue instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IDatabaseResourceIssue): google.cloud.databasecenter.v1beta.DatabaseResourceIssue;
+
+                    /**
+                     * Encodes the specified DatabaseResourceIssue message. Does not implicitly {@link google.cloud.databasecenter.v1beta.DatabaseResourceIssue.verify|verify} messages.
+                     * @param message DatabaseResourceIssue message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IDatabaseResourceIssue, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified DatabaseResourceIssue message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.DatabaseResourceIssue.verify|verify} messages.
+                     * @param message DatabaseResourceIssue message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IDatabaseResourceIssue, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a DatabaseResourceIssue message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns DatabaseResourceIssue
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.DatabaseResourceIssue;
+
+                    /**
+                     * Decodes a DatabaseResourceIssue message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns DatabaseResourceIssue
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.DatabaseResourceIssue;
+
+                    /**
+                     * Verifies a DatabaseResourceIssue message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a DatabaseResourceIssue message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns DatabaseResourceIssue
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.DatabaseResourceIssue;
+
+                    /**
+                     * Creates a plain object from a DatabaseResourceIssue message. Also converts values to other types if specified.
+                     * @param message DatabaseResourceIssue
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.DatabaseResourceIssue, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this DatabaseResourceIssue to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for DatabaseResourceIssue
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a Tag. */
+                interface ITag {
+
+                    /** Tag key */
+                    key?: (string|null);
+
+                    /** Tag value */
+                    value?: (string|null);
+
+                    /** Tag source */
+                    source?: (string|null);
+
+                    /** Tag inherited */
+                    inherited?: (boolean|null);
+                }
+
+                /** Represents a Tag. */
+                class Tag implements ITag {
+
+                    /**
+                     * Constructs a new Tag.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.ITag);
+
+                    /** Tag key. */
+                    public key: string;
+
+                    /** Tag value. */
+                    public value: string;
+
+                    /** Tag source. */
+                    public source: string;
+
+                    /** Tag inherited. */
+                    public inherited: boolean;
+
+                    /**
+                     * Creates a new Tag instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns Tag instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.ITag): google.cloud.databasecenter.v1beta.Tag;
+
+                    /**
+                     * Encodes the specified Tag message. Does not implicitly {@link google.cloud.databasecenter.v1beta.Tag.verify|verify} messages.
+                     * @param message Tag message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.ITag, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified Tag message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.Tag.verify|verify} messages.
+                     * @param message Tag message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.ITag, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a Tag message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns Tag
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.Tag;
+
+                    /**
+                     * Decodes a Tag message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns Tag
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.Tag;
+
+                    /**
+                     * Verifies a Tag message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a Tag message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns Tag
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.Tag;
+
+                    /**
+                     * Creates a plain object from a Tag message. Also converts values to other types if specified.
+                     * @param message Tag
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.Tag, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this Tag to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for Tag
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a ResourceDetails. */
+                interface IResourceDetails {
+
+                    /** ResourceDetails fullResourceName */
+                    fullResourceName?: (string|null);
+
+                    /** ResourceDetails container */
+                    container?: (string|null);
+
+                    /** ResourceDetails product */
+                    product?: (google.cloud.databasecenter.v1beta.IProduct|null);
+
+                    /** ResourceDetails location */
+                    location?: (string|null);
+                }
+
+                /** Represents a ResourceDetails. */
+                class ResourceDetails implements IResourceDetails {
+
+                    /**
+                     * Constructs a new ResourceDetails.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IResourceDetails);
+
+                    /** ResourceDetails fullResourceName. */
+                    public fullResourceName: string;
+
+                    /** ResourceDetails container. */
+                    public container: string;
+
+                    /** ResourceDetails product. */
+                    public product?: (google.cloud.databasecenter.v1beta.IProduct|null);
+
+                    /** ResourceDetails location. */
+                    public location: string;
+
+                    /**
+                     * Creates a new ResourceDetails instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns ResourceDetails instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IResourceDetails): google.cloud.databasecenter.v1beta.ResourceDetails;
+
+                    /**
+                     * Encodes the specified ResourceDetails message. Does not implicitly {@link google.cloud.databasecenter.v1beta.ResourceDetails.verify|verify} messages.
+                     * @param message ResourceDetails message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IResourceDetails, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified ResourceDetails message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.ResourceDetails.verify|verify} messages.
+                     * @param message ResourceDetails message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IResourceDetails, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a ResourceDetails message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns ResourceDetails
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.ResourceDetails;
+
+                    /**
+                     * Decodes a ResourceDetails message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns ResourceDetails
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.ResourceDetails;
+
+                    /**
+                     * Verifies a ResourceDetails message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a ResourceDetails message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns ResourceDetails
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.ResourceDetails;
+
+                    /**
+                     * Creates a plain object from a ResourceDetails message. Also converts values to other types if specified.
+                     * @param message ResourceDetails
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.ResourceDetails, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this ResourceDetails to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for ResourceDetails
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a DeltaDetails. */
+                interface IDeltaDetails {
+
+                    /** DeltaDetails increasedResources */
+                    increasedResources?: (google.cloud.databasecenter.v1beta.IResourceDetails[]|null);
+
+                    /** DeltaDetails decreasedResources */
+                    decreasedResources?: (google.cloud.databasecenter.v1beta.IResourceDetails[]|null);
+                }
+
+                /** Represents a DeltaDetails. */
+                class DeltaDetails implements IDeltaDetails {
+
+                    /**
+                     * Constructs a new DeltaDetails.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IDeltaDetails);
+
+                    /** DeltaDetails increasedResources. */
+                    public increasedResources: google.cloud.databasecenter.v1beta.IResourceDetails[];
+
+                    /** DeltaDetails decreasedResources. */
+                    public decreasedResources: google.cloud.databasecenter.v1beta.IResourceDetails[];
+
+                    /**
+                     * Creates a new DeltaDetails instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns DeltaDetails instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IDeltaDetails): google.cloud.databasecenter.v1beta.DeltaDetails;
+
+                    /**
+                     * Encodes the specified DeltaDetails message. Does not implicitly {@link google.cloud.databasecenter.v1beta.DeltaDetails.verify|verify} messages.
+                     * @param message DeltaDetails message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IDeltaDetails, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified DeltaDetails message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.DeltaDetails.verify|verify} messages.
+                     * @param message DeltaDetails message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IDeltaDetails, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a DeltaDetails message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns DeltaDetails
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.DeltaDetails;
+
+                    /**
+                     * Decodes a DeltaDetails message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns DeltaDetails
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.DeltaDetails;
+
+                    /**
+                     * Verifies a DeltaDetails message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a DeltaDetails message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns DeltaDetails
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.DeltaDetails;
+
+                    /**
+                     * Creates a plain object from a DeltaDetails message. Also converts values to other types if specified.
+                     * @param message DeltaDetails
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.DeltaDetails, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this DeltaDetails to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for DeltaDetails
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** SignalStatus enum. */
+                enum SignalStatus {
+                    SIGNAL_STATUS_UNSPECIFIED = 0,
+                    SIGNAL_STATUS_NOT_APPLICABLE = 1,
+                    SIGNAL_STATUS_OK = 2,
+                    SIGNAL_STATUS_ISSUE = 3,
+                    SIGNAL_STATUS_NOT_ENABLED = 4
+                }
+
+                /** SignalSource enum. */
+                enum SignalSource {
+                    SIGNAL_SOURCE_UNSPECIFIED = 0,
+                    SIGNAL_SOURCE_RESOURCE_METADATA = 1,
+                    SIGNAL_SOURCE_SECURITY_FINDINGS = 2,
+                    SIGNAL_SOURCE_RECOMMENDER = 3,
+                    SIGNAL_SOURCE_MODERN_OBSERVABILITY = 4
+                }
+
+                /** IssueSeverity enum. */
+                enum IssueSeverity {
+                    ISSUE_SEVERITY_UNSPECIFIED = 0,
+                    ISSUE_SEVERITY_LOW = 1,
+                    ISSUE_SEVERITY_MEDIUM = 2,
+                    ISSUE_SEVERITY_HIGH = 3,
+                    ISSUE_SEVERITY_CRITICAL = 4,
+                    ISSUE_SEVERITY_IRRELEVANT = 5
+                }
+
+                /** SignalType enum. */
+                enum SignalType {
+                    SIGNAL_TYPE_UNSPECIFIED = 0,
+                    SIGNAL_TYPE_RESOURCE_FAILOVER_PROTECTED = 1,
+                    SIGNAL_TYPE_GROUP_MULTIREGIONAL = 2,
+                    SIGNAL_TYPE_NO_AUTOMATED_BACKUP_POLICY = 4,
+                    SIGNAL_TYPE_SHORT_BACKUP_RETENTION = 5,
+                    SIGNAL_TYPE_LAST_BACKUP_FAILED = 6,
+                    SIGNAL_TYPE_LAST_BACKUP_OLD = 7,
+                    SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_2_0 = 8,
+                    SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_3 = 9,
+                    SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_2 = 10,
+                    SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_1 = 11,
+                    SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_0 = 12,
+                    SIGNAL_TYPE_VIOLATES_CIS_CONTROLS_V8_0 = 76,
+                    SIGNAL_TYPE_VIOLATES_NIST_800_53 = 13,
+                    SIGNAL_TYPE_VIOLATES_NIST_800_53_R5 = 69,
+                    SIGNAL_TYPE_VIOLATES_NIST_CYBERSECURITY_FRAMEWORK_V1_0 = 72,
+                    SIGNAL_TYPE_VIOLATES_ISO_27001 = 14,
+                    SIGNAL_TYPE_VIOLATES_ISO_27001_V2022 = 70,
+                    SIGNAL_TYPE_VIOLATES_PCI_DSS_V3_2_1 = 15,
+                    SIGNAL_TYPE_VIOLATES_PCI_DSS_V4_0 = 71,
+                    SIGNAL_TYPE_VIOLATES_CLOUD_CONTROLS_MATRIX_V4 = 73,
+                    SIGNAL_TYPE_VIOLATES_HIPAA = 74,
+                    SIGNAL_TYPE_VIOLATES_SOC2_V2017 = 75,
+                    SIGNAL_TYPE_LOGS_NOT_OPTIMIZED_FOR_TROUBLESHOOTING = 16,
+                    SIGNAL_TYPE_QUERY_DURATIONS_NOT_LOGGED = 17,
+                    SIGNAL_TYPE_VERBOSE_ERROR_LOGGING = 18,
+                    SIGNAL_TYPE_QUERY_LOCK_WAITS_NOT_LOGGED = 19,
+                    SIGNAL_TYPE_LOGGING_MOST_ERRORS = 20,
+                    SIGNAL_TYPE_LOGGING_ONLY_CRITICAL_ERRORS = 21,
+                    SIGNAL_TYPE_MINIMAL_ERROR_LOGGING = 22,
+                    SIGNAL_TYPE_QUERY_STATS_LOGGED = 23,
+                    SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_CLIENT_HOSTNAME = 24,
+                    SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PARSER_STATS = 25,
+                    SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PLANNER_STATS = 26,
+                    SIGNAL_TYPE_NOT_LOGGING_ONLY_DDL_STATEMENTS = 27,
+                    SIGNAL_TYPE_LOGGING_QUERY_STATS = 28,
+                    SIGNAL_TYPE_NOT_LOGGING_TEMPORARY_FILES = 29,
+                    SIGNAL_TYPE_CONNECTION_MAX_NOT_CONFIGURED = 30,
+                    SIGNAL_TYPE_USER_OPTIONS_CONFIGURED = 31,
+                    SIGNAL_TYPE_EXPOSED_TO_PUBLIC_ACCESS = 32,
+                    SIGNAL_TYPE_UNENCRYPTED_CONNECTIONS = 33,
+                    SIGNAL_TYPE_NO_ROOT_PASSWORD = 34,
+                    SIGNAL_TYPE_WEAK_ROOT_PASSWORD = 35,
+                    SIGNAL_TYPE_ENCRYPTION_KEY_NOT_CUSTOMER_MANAGED = 36,
+                    SIGNAL_TYPE_SERVER_AUTHENTICATION_NOT_REQUIRED = 37,
+                    SIGNAL_TYPE_EXPOSED_TO_EXTERNAL_SCRIPTS = 39,
+                    SIGNAL_TYPE_EXPOSED_TO_LOCAL_DATA_LOADS = 40,
+                    SIGNAL_TYPE_CONNECTION_ATTEMPTS_NOT_LOGGED = 41,
+                    SIGNAL_TYPE_DISCONNECTIONS_NOT_LOGGED = 42,
+                    SIGNAL_TYPE_LOGGING_EXCESSIVE_STATEMENT_INFO = 43,
+                    SIGNAL_TYPE_EXPOSED_TO_REMOTE_ACCESS = 44,
+                    SIGNAL_TYPE_DATABASE_NAMES_EXPOSED = 45,
+                    SIGNAL_TYPE_SENSITIVE_TRACE_INFO_NOT_MASKED = 46,
+                    SIGNAL_TYPE_PUBLIC_IP_ENABLED = 47,
+                    SIGNAL_TYPE_IDLE = 48,
+                    SIGNAL_TYPE_OVERPROVISIONED = 49,
+                    SIGNAL_TYPE_HIGH_NUMBER_OF_OPEN_TABLES = 50,
+                    SIGNAL_TYPE_HIGH_NUMBER_OF_TABLES = 51,
+                    SIGNAL_TYPE_HIGH_TRANSACTION_ID_UTILIZATION = 52,
+                    SIGNAL_TYPE_UNDERPROVISIONED = 53,
+                    SIGNAL_TYPE_OUT_OF_DISK = 54,
+                    SIGNAL_TYPE_SERVER_CERTIFICATE_NEAR_EXPIRY = 55,
+                    SIGNAL_TYPE_DATABASE_AUDITING_DISABLED = 56,
+                    SIGNAL_TYPE_RESTRICT_AUTHORIZED_NETWORKS = 57,
+                    SIGNAL_TYPE_VIOLATE_POLICY_RESTRICT_PUBLIC_IP = 58,
+                    SIGNAL_TYPE_QUOTA_LIMIT = 59,
+                    SIGNAL_TYPE_NO_PASSWORD_POLICY = 60,
+                    SIGNAL_TYPE_CONNECTIONS_PERFORMANCE_IMPACT = 61,
+                    SIGNAL_TYPE_TMP_TABLES_PERFORMANCE_IMPACT = 62,
+                    SIGNAL_TYPE_TRANS_LOGS_PERFORMANCE_IMPACT = 63,
+                    SIGNAL_TYPE_HIGH_JOINS_WITHOUT_INDEXES = 64,
+                    SIGNAL_TYPE_SUPERUSER_WRITING_TO_USER_TABLES = 65,
+                    SIGNAL_TYPE_USER_GRANTED_ALL_PERMISSIONS = 66,
+                    SIGNAL_TYPE_DATA_EXPORT_TO_EXTERNAL_CLOUD_STORAGE_BUCKET = 67,
+                    SIGNAL_TYPE_DATA_EXPORT_TO_PUBLIC_CLOUD_STORAGE_BUCKET = 68,
+                    SIGNAL_TYPE_WEAK_PASSWORD_HASH_ALGORITHM = 77,
+                    SIGNAL_TYPE_NO_USER_PASSWORD_POLICY = 78,
+                    SIGNAL_TYPE_HOT_NODE = 79,
+                    SIGNAL_TYPE_NO_DELETION_PROTECTION = 80,
+                    SIGNAL_TYPE_NO_POINT_IN_TIME_RECOVERY = 81,
+                    SIGNAL_TYPE_RESOURCE_SUSPENDED = 82,
+                    SIGNAL_TYPE_EXPENSIVE_COMMANDS = 83,
+                    SIGNAL_TYPE_NO_MAINTENANCE_POLICY_CONFIGURED = 84,
+                    SIGNAL_TYPE_INEFFICIENT_QUERY = 85,
+                    SIGNAL_TYPE_READ_INTENSIVE_WORKLOAD = 86,
+                    SIGNAL_TYPE_MEMORY_LIMIT = 87,
+                    SIGNAL_TYPE_MAX_SERVER_MEMORY = 88,
+                    SIGNAL_TYPE_LARGE_ROWS = 89,
+                    SIGNAL_TYPE_HIGH_WRITE_PRESSURE = 90,
+                    SIGNAL_TYPE_HIGH_READ_PRESSURE = 91,
+                    SIGNAL_TYPE_ENCRYPTION_ORG_POLICY_NOT_SATISFIED = 92,
+                    SIGNAL_TYPE_LOCATION_ORG_POLICY_NOT_SATISFIED = 93,
+                    SIGNAL_TYPE_OUTDATED_MINOR_VERSION = 94,
+                    SIGNAL_TYPE_SCHEMA_NOT_OPTIMIZED = 95,
+                    SIGNAL_TYPE_REPLICATION_LAG = 97,
+                    SIGNAL_TYPE_OUTDATED_CLIENT = 99,
+                    SIGNAL_TYPE_DATABOOST_DISABLED = 100,
+                    SIGNAL_TYPE_RECOMMENDED_MAINTENANCE_POLICIES = 101,
+                    SIGNAL_TYPE_EXTENDED_SUPPORT = 102,
+                    SIGNAL_TYPE_VERSION_NEARING_END_OF_LIFE = 104
+                }
+
+                /** Properties of a SignalTypeGroup. */
+                interface ISignalTypeGroup {
+
+                    /** SignalTypeGroup displayName */
+                    displayName?: (string|null);
+
+                    /** SignalTypeGroup signalTypes */
+                    signalTypes?: (google.cloud.databasecenter.v1beta.SignalType[]|null);
+                }
+
+                /** Represents a SignalTypeGroup. */
+                class SignalTypeGroup implements ISignalTypeGroup {
+
+                    /**
+                     * Constructs a new SignalTypeGroup.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.ISignalTypeGroup);
+
+                    /** SignalTypeGroup displayName. */
+                    public displayName: string;
+
+                    /** SignalTypeGroup signalTypes. */
+                    public signalTypes: google.cloud.databasecenter.v1beta.SignalType[];
+
+                    /**
+                     * Creates a new SignalTypeGroup instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns SignalTypeGroup instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.ISignalTypeGroup): google.cloud.databasecenter.v1beta.SignalTypeGroup;
+
+                    /**
+                     * Encodes the specified SignalTypeGroup message. Does not implicitly {@link google.cloud.databasecenter.v1beta.SignalTypeGroup.verify|verify} messages.
+                     * @param message SignalTypeGroup message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.ISignalTypeGroup, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified SignalTypeGroup message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.SignalTypeGroup.verify|verify} messages.
+                     * @param message SignalTypeGroup message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.ISignalTypeGroup, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a SignalTypeGroup message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns SignalTypeGroup
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.SignalTypeGroup;
+
+                    /**
+                     * Decodes a SignalTypeGroup message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns SignalTypeGroup
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.SignalTypeGroup;
+
+                    /**
+                     * Verifies a SignalTypeGroup message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a SignalTypeGroup message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns SignalTypeGroup
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.SignalTypeGroup;
+
+                    /**
+                     * Creates a plain object from a SignalTypeGroup message. Also converts values to other types if specified.
+                     * @param message SignalTypeGroup
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.SignalTypeGroup, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this SignalTypeGroup to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for SignalTypeGroup
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a SignalFilter. */
+                interface ISignalFilter {
+
+                    /** SignalFilter signalType */
+                    signalType?: (google.cloud.databasecenter.v1beta.SignalType|keyof typeof google.cloud.databasecenter.v1beta.SignalType|null);
+
+                    /** SignalFilter signalStatus */
+                    signalStatus?: (google.cloud.databasecenter.v1beta.SignalStatus|keyof typeof google.cloud.databasecenter.v1beta.SignalStatus|null);
+                }
+
+                /** Represents a SignalFilter. */
+                class SignalFilter implements ISignalFilter {
+
+                    /**
+                     * Constructs a new SignalFilter.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.ISignalFilter);
+
+                    /** SignalFilter signalType. */
+                    public signalType: (google.cloud.databasecenter.v1beta.SignalType|keyof typeof google.cloud.databasecenter.v1beta.SignalType);
+
+                    /** SignalFilter signalStatus. */
+                    public signalStatus: (google.cloud.databasecenter.v1beta.SignalStatus|keyof typeof google.cloud.databasecenter.v1beta.SignalStatus);
+
+                    /**
+                     * Creates a new SignalFilter instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns SignalFilter instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.ISignalFilter): google.cloud.databasecenter.v1beta.SignalFilter;
+
+                    /**
+                     * Encodes the specified SignalFilter message. Does not implicitly {@link google.cloud.databasecenter.v1beta.SignalFilter.verify|verify} messages.
+                     * @param message SignalFilter message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.ISignalFilter, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified SignalFilter message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.SignalFilter.verify|verify} messages.
+                     * @param message SignalFilter message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.ISignalFilter, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a SignalFilter message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns SignalFilter
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.SignalFilter;
+
+                    /**
+                     * Decodes a SignalFilter message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns SignalFilter
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.SignalFilter;
+
+                    /**
+                     * Verifies a SignalFilter message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a SignalFilter message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns SignalFilter
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.SignalFilter;
+
+                    /**
+                     * Creates a plain object from a SignalFilter message. Also converts values to other types if specified.
+                     * @param message SignalFilter
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.SignalFilter, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this SignalFilter to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for SignalFilter
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a SignalGroup. */
+                interface ISignalGroup {
+
+                    /** SignalGroup displayName */
+                    displayName?: (string|null);
+
+                    /** SignalGroup issueCount */
+                    issueCount?: (number|null);
+
+                    /** SignalGroup signals */
+                    signals?: (google.cloud.databasecenter.v1beta.ISignal[]|null);
+                }
+
+                /** Represents a SignalGroup. */
+                class SignalGroup implements ISignalGroup {
+
+                    /**
+                     * Constructs a new SignalGroup.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.ISignalGroup);
+
+                    /** SignalGroup displayName. */
+                    public displayName: string;
+
+                    /** SignalGroup issueCount. */
+                    public issueCount: number;
+
+                    /** SignalGroup signals. */
+                    public signals: google.cloud.databasecenter.v1beta.ISignal[];
+
+                    /**
+                     * Creates a new SignalGroup instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns SignalGroup instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.ISignalGroup): google.cloud.databasecenter.v1beta.SignalGroup;
+
+                    /**
+                     * Encodes the specified SignalGroup message. Does not implicitly {@link google.cloud.databasecenter.v1beta.SignalGroup.verify|verify} messages.
+                     * @param message SignalGroup message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.ISignalGroup, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified SignalGroup message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.SignalGroup.verify|verify} messages.
+                     * @param message SignalGroup message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.ISignalGroup, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a SignalGroup message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns SignalGroup
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.SignalGroup;
+
+                    /**
+                     * Decodes a SignalGroup message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns SignalGroup
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.SignalGroup;
+
+                    /**
+                     * Verifies a SignalGroup message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a SignalGroup message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns SignalGroup
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.SignalGroup;
+
+                    /**
+                     * Creates a plain object from a SignalGroup message. Also converts values to other types if specified.
+                     * @param message SignalGroup
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.SignalGroup, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this SignalGroup to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for SignalGroup
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of an IssueCount. */
+                interface IIssueCount {
+
+                    /** IssueCount displayName */
+                    displayName?: (string|null);
+
+                    /** IssueCount issueCount */
+                    issueCount?: (number|null);
+                }
+
+                /** Represents an IssueCount. */
+                class IssueCount implements IIssueCount {
+
+                    /**
+                     * Constructs a new IssueCount.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IIssueCount);
+
+                    /** IssueCount displayName. */
+                    public displayName: string;
+
+                    /** IssueCount issueCount. */
+                    public issueCount: number;
+
+                    /**
+                     * Creates a new IssueCount instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns IssueCount instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IIssueCount): google.cloud.databasecenter.v1beta.IssueCount;
+
+                    /**
+                     * Encodes the specified IssueCount message. Does not implicitly {@link google.cloud.databasecenter.v1beta.IssueCount.verify|verify} messages.
+                     * @param message IssueCount message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IIssueCount, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified IssueCount message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.IssueCount.verify|verify} messages.
+                     * @param message IssueCount message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IIssueCount, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes an IssueCount message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns IssueCount
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.IssueCount;
+
+                    /**
+                     * Decodes an IssueCount message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns IssueCount
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.IssueCount;
+
+                    /**
+                     * Verifies an IssueCount message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates an IssueCount message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns IssueCount
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.IssueCount;
+
+                    /**
+                     * Creates a plain object from an IssueCount message. Also converts values to other types if specified.
+                     * @param message IssueCount
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.IssueCount, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this IssueCount to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for IssueCount
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of an AdditionalDetail. */
+                interface IAdditionalDetail {
+
+                    /** AdditionalDetail shortBackupRetentionInfo */
+                    shortBackupRetentionInfo?: (google.cloud.databasecenter.v1beta.IRetentionSettingsInfo|null);
+
+                    /** AdditionalDetail backupRunInfo */
+                    backupRunInfo?: (google.cloud.databasecenter.v1beta.IBackupRunInfo|null);
+
+                    /** AdditionalDetail sccInfo */
+                    sccInfo?: (google.cloud.databasecenter.v1beta.ISCCInfo|null);
+
+                    /** AdditionalDetail recommendationInfo */
+                    recommendationInfo?: (google.cloud.databasecenter.v1beta.IRecommendationInfo|null);
+
+                    /** AdditionalDetail automatedBackupPolicyInfo */
+                    automatedBackupPolicyInfo?: (google.cloud.databasecenter.v1beta.IAutomatedBackupPolicyInfo|null);
+
+                    /** AdditionalDetail deletionProtectionInfo */
+                    deletionProtectionInfo?: (google.cloud.databasecenter.v1beta.IDeletionProtectionInfo|null);
+
+                    /** AdditionalDetail resourceSuspensionInfo */
+                    resourceSuspensionInfo?: (google.cloud.databasecenter.v1beta.IResourceSuspensionInfo|null);
+
+                    /** AdditionalDetail inefficientQueryInfo */
+                    inefficientQueryInfo?: (google.cloud.databasecenter.v1beta.IInefficientQueryInfo|null);
+
+                    /** AdditionalDetail outdatedMinorVersionInfo */
+                    outdatedMinorVersionInfo?: (google.cloud.databasecenter.v1beta.IOutdatedMinorVersionInfo|null);
+
+                    /** AdditionalDetail maintenanceRecommendationInfo */
+                    maintenanceRecommendationInfo?: (google.cloud.databasecenter.v1beta.IMaintenanceRecommendationInfo|null);
+
+                    /** AdditionalDetail signalSource */
+                    signalSource?: (google.cloud.databasecenter.v1beta.SignalSource|keyof typeof google.cloud.databasecenter.v1beta.SignalSource|null);
+
+                    /** AdditionalDetail signalType */
+                    signalType?: (google.cloud.databasecenter.v1beta.SignalType|keyof typeof google.cloud.databasecenter.v1beta.SignalType|null);
+
+                    /** AdditionalDetail signalEventTime */
+                    signalEventTime?: (google.protobuf.ITimestamp|null);
+                }
+
+                /** Represents an AdditionalDetail. */
+                class AdditionalDetail implements IAdditionalDetail {
+
+                    /**
+                     * Constructs a new AdditionalDetail.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IAdditionalDetail);
+
+                    /** AdditionalDetail shortBackupRetentionInfo. */
+                    public shortBackupRetentionInfo?: (google.cloud.databasecenter.v1beta.IRetentionSettingsInfo|null);
+
+                    /** AdditionalDetail backupRunInfo. */
+                    public backupRunInfo?: (google.cloud.databasecenter.v1beta.IBackupRunInfo|null);
+
+                    /** AdditionalDetail sccInfo. */
+                    public sccInfo?: (google.cloud.databasecenter.v1beta.ISCCInfo|null);
+
+                    /** AdditionalDetail recommendationInfo. */
+                    public recommendationInfo?: (google.cloud.databasecenter.v1beta.IRecommendationInfo|null);
+
+                    /** AdditionalDetail automatedBackupPolicyInfo. */
+                    public automatedBackupPolicyInfo?: (google.cloud.databasecenter.v1beta.IAutomatedBackupPolicyInfo|null);
+
+                    /** AdditionalDetail deletionProtectionInfo. */
+                    public deletionProtectionInfo?: (google.cloud.databasecenter.v1beta.IDeletionProtectionInfo|null);
+
+                    /** AdditionalDetail resourceSuspensionInfo. */
+                    public resourceSuspensionInfo?: (google.cloud.databasecenter.v1beta.IResourceSuspensionInfo|null);
+
+                    /** AdditionalDetail inefficientQueryInfo. */
+                    public inefficientQueryInfo?: (google.cloud.databasecenter.v1beta.IInefficientQueryInfo|null);
+
+                    /** AdditionalDetail outdatedMinorVersionInfo. */
+                    public outdatedMinorVersionInfo?: (google.cloud.databasecenter.v1beta.IOutdatedMinorVersionInfo|null);
+
+                    /** AdditionalDetail maintenanceRecommendationInfo. */
+                    public maintenanceRecommendationInfo?: (google.cloud.databasecenter.v1beta.IMaintenanceRecommendationInfo|null);
+
+                    /** AdditionalDetail signalSource. */
+                    public signalSource: (google.cloud.databasecenter.v1beta.SignalSource|keyof typeof google.cloud.databasecenter.v1beta.SignalSource);
+
+                    /** AdditionalDetail signalType. */
+                    public signalType: (google.cloud.databasecenter.v1beta.SignalType|keyof typeof google.cloud.databasecenter.v1beta.SignalType);
+
+                    /** AdditionalDetail signalEventTime. */
+                    public signalEventTime?: (google.protobuf.ITimestamp|null);
+
+                    /** AdditionalDetail detail. */
+                    public detail?: ("shortBackupRetentionInfo"|"backupRunInfo"|"sccInfo"|"recommendationInfo"|"automatedBackupPolicyInfo"|"deletionProtectionInfo"|"resourceSuspensionInfo"|"inefficientQueryInfo"|"outdatedMinorVersionInfo"|"maintenanceRecommendationInfo");
+
+                    /**
+                     * Creates a new AdditionalDetail instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns AdditionalDetail instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IAdditionalDetail): google.cloud.databasecenter.v1beta.AdditionalDetail;
+
+                    /**
+                     * Encodes the specified AdditionalDetail message. Does not implicitly {@link google.cloud.databasecenter.v1beta.AdditionalDetail.verify|verify} messages.
+                     * @param message AdditionalDetail message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IAdditionalDetail, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified AdditionalDetail message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.AdditionalDetail.verify|verify} messages.
+                     * @param message AdditionalDetail message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IAdditionalDetail, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes an AdditionalDetail message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns AdditionalDetail
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.AdditionalDetail;
+
+                    /**
+                     * Decodes an AdditionalDetail message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns AdditionalDetail
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.AdditionalDetail;
+
+                    /**
+                     * Verifies an AdditionalDetail message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates an AdditionalDetail message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns AdditionalDetail
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.AdditionalDetail;
+
+                    /**
+                     * Creates a plain object from an AdditionalDetail message. Also converts values to other types if specified.
+                     * @param message AdditionalDetail
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.AdditionalDetail, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this AdditionalDetail to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for AdditionalDetail
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a SubResource. */
+                interface ISubResource {
+
+                    /** SubResource resourceType */
+                    resourceType?: (string|null);
+
+                    /** SubResource fullResourceName */
+                    fullResourceName?: (string|null);
+
+                    /** SubResource product */
+                    product?: (google.cloud.databasecenter.v1beta.IProduct|null);
+
+                    /** SubResource container */
+                    container?: (string|null);
+                }
+
+                /** Represents a SubResource. */
+                class SubResource implements ISubResource {
+
+                    /**
+                     * Constructs a new SubResource.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.ISubResource);
+
+                    /** SubResource resourceType. */
+                    public resourceType: string;
+
+                    /** SubResource fullResourceName. */
+                    public fullResourceName: string;
+
+                    /** SubResource product. */
+                    public product?: (google.cloud.databasecenter.v1beta.IProduct|null);
+
+                    /** SubResource container. */
+                    public container: string;
+
+                    /**
+                     * Creates a new SubResource instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns SubResource instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.ISubResource): google.cloud.databasecenter.v1beta.SubResource;
+
+                    /**
+                     * Encodes the specified SubResource message. Does not implicitly {@link google.cloud.databasecenter.v1beta.SubResource.verify|verify} messages.
+                     * @param message SubResource message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.ISubResource, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified SubResource message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.SubResource.verify|verify} messages.
+                     * @param message SubResource message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.ISubResource, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a SubResource message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns SubResource
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.SubResource;
+
+                    /**
+                     * Decodes a SubResource message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns SubResource
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.SubResource;
+
+                    /**
+                     * Verifies a SubResource message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a SubResource message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns SubResource
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.SubResource;
+
+                    /**
+                     * Creates a plain object from a SubResource message. Also converts values to other types if specified.
+                     * @param message SubResource
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.SubResource, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this SubResource to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for SubResource
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a RetentionSettingsInfo. */
+                interface IRetentionSettingsInfo {
+
+                    /** RetentionSettingsInfo quantityBasedRetention */
+                    quantityBasedRetention?: (google.protobuf.IInt32Value|null);
+
+                    /** RetentionSettingsInfo durationBasedRetention */
+                    durationBasedRetention?: (google.protobuf.IDuration|null);
+
+                    /** RetentionSettingsInfo timestampBasedRetentionTime */
+                    timestampBasedRetentionTime?: (google.protobuf.ITimestamp|null);
+
+                    /** RetentionSettingsInfo subResource */
+                    subResource?: (google.cloud.databasecenter.v1beta.ISubResource|null);
+                }
+
+                /** Represents a RetentionSettingsInfo. */
+                class RetentionSettingsInfo implements IRetentionSettingsInfo {
+
+                    /**
+                     * Constructs a new RetentionSettingsInfo.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IRetentionSettingsInfo);
+
+                    /** RetentionSettingsInfo quantityBasedRetention. */
+                    public quantityBasedRetention?: (google.protobuf.IInt32Value|null);
+
+                    /** RetentionSettingsInfo durationBasedRetention. */
+                    public durationBasedRetention?: (google.protobuf.IDuration|null);
+
+                    /** RetentionSettingsInfo timestampBasedRetentionTime. */
+                    public timestampBasedRetentionTime?: (google.protobuf.ITimestamp|null);
+
+                    /** RetentionSettingsInfo subResource. */
+                    public subResource?: (google.cloud.databasecenter.v1beta.ISubResource|null);
+
+                    /** RetentionSettingsInfo retention. */
+                    public retention?: ("quantityBasedRetention"|"durationBasedRetention"|"timestampBasedRetentionTime");
+
+                    /**
+                     * Creates a new RetentionSettingsInfo instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns RetentionSettingsInfo instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IRetentionSettingsInfo): google.cloud.databasecenter.v1beta.RetentionSettingsInfo;
+
+                    /**
+                     * Encodes the specified RetentionSettingsInfo message. Does not implicitly {@link google.cloud.databasecenter.v1beta.RetentionSettingsInfo.verify|verify} messages.
+                     * @param message RetentionSettingsInfo message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IRetentionSettingsInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified RetentionSettingsInfo message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.RetentionSettingsInfo.verify|verify} messages.
+                     * @param message RetentionSettingsInfo message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IRetentionSettingsInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a RetentionSettingsInfo message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns RetentionSettingsInfo
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.RetentionSettingsInfo;
+
+                    /**
+                     * Decodes a RetentionSettingsInfo message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns RetentionSettingsInfo
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.RetentionSettingsInfo;
+
+                    /**
+                     * Verifies a RetentionSettingsInfo message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a RetentionSettingsInfo message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns RetentionSettingsInfo
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.RetentionSettingsInfo;
+
+                    /**
+                     * Creates a plain object from a RetentionSettingsInfo message. Also converts values to other types if specified.
+                     * @param message RetentionSettingsInfo
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.RetentionSettingsInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this RetentionSettingsInfo to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for RetentionSettingsInfo
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of an AutomatedBackupPolicyInfo. */
+                interface IAutomatedBackupPolicyInfo {
+
+                    /** AutomatedBackupPolicyInfo subResource */
+                    subResource?: (google.cloud.databasecenter.v1beta.ISubResource|null);
+
+                    /** AutomatedBackupPolicyInfo isEnabled */
+                    isEnabled?: (boolean|null);
+                }
+
+                /** Represents an AutomatedBackupPolicyInfo. */
+                class AutomatedBackupPolicyInfo implements IAutomatedBackupPolicyInfo {
+
+                    /**
+                     * Constructs a new AutomatedBackupPolicyInfo.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IAutomatedBackupPolicyInfo);
+
+                    /** AutomatedBackupPolicyInfo subResource. */
+                    public subResource?: (google.cloud.databasecenter.v1beta.ISubResource|null);
+
+                    /** AutomatedBackupPolicyInfo isEnabled. */
+                    public isEnabled: boolean;
+
+                    /**
+                     * Creates a new AutomatedBackupPolicyInfo instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns AutomatedBackupPolicyInfo instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IAutomatedBackupPolicyInfo): google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo;
+
+                    /**
+                     * Encodes the specified AutomatedBackupPolicyInfo message. Does not implicitly {@link google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo.verify|verify} messages.
+                     * @param message AutomatedBackupPolicyInfo message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IAutomatedBackupPolicyInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified AutomatedBackupPolicyInfo message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo.verify|verify} messages.
+                     * @param message AutomatedBackupPolicyInfo message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IAutomatedBackupPolicyInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes an AutomatedBackupPolicyInfo message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns AutomatedBackupPolicyInfo
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo;
+
+                    /**
+                     * Decodes an AutomatedBackupPolicyInfo message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns AutomatedBackupPolicyInfo
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo;
+
+                    /**
+                     * Verifies an AutomatedBackupPolicyInfo message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates an AutomatedBackupPolicyInfo message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns AutomatedBackupPolicyInfo
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo;
+
+                    /**
+                     * Creates a plain object from an AutomatedBackupPolicyInfo message. Also converts values to other types if specified.
+                     * @param message AutomatedBackupPolicyInfo
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this AutomatedBackupPolicyInfo to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for AutomatedBackupPolicyInfo
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a DeletionProtectionInfo. */
+                interface IDeletionProtectionInfo {
+
+                    /** DeletionProtectionInfo subResource */
+                    subResource?: (google.cloud.databasecenter.v1beta.ISubResource|null);
+
+                    /** DeletionProtectionInfo deletionProtectionEnabled */
+                    deletionProtectionEnabled?: (boolean|null);
+                }
+
+                /** Represents a DeletionProtectionInfo. */
+                class DeletionProtectionInfo implements IDeletionProtectionInfo {
+
+                    /**
+                     * Constructs a new DeletionProtectionInfo.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IDeletionProtectionInfo);
+
+                    /** DeletionProtectionInfo subResource. */
+                    public subResource?: (google.cloud.databasecenter.v1beta.ISubResource|null);
+
+                    /** DeletionProtectionInfo deletionProtectionEnabled. */
+                    public deletionProtectionEnabled: boolean;
+
+                    /**
+                     * Creates a new DeletionProtectionInfo instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns DeletionProtectionInfo instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IDeletionProtectionInfo): google.cloud.databasecenter.v1beta.DeletionProtectionInfo;
+
+                    /**
+                     * Encodes the specified DeletionProtectionInfo message. Does not implicitly {@link google.cloud.databasecenter.v1beta.DeletionProtectionInfo.verify|verify} messages.
+                     * @param message DeletionProtectionInfo message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IDeletionProtectionInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified DeletionProtectionInfo message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.DeletionProtectionInfo.verify|verify} messages.
+                     * @param message DeletionProtectionInfo message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IDeletionProtectionInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a DeletionProtectionInfo message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns DeletionProtectionInfo
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.DeletionProtectionInfo;
+
+                    /**
+                     * Decodes a DeletionProtectionInfo message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns DeletionProtectionInfo
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.DeletionProtectionInfo;
+
+                    /**
+                     * Verifies a DeletionProtectionInfo message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a DeletionProtectionInfo message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns DeletionProtectionInfo
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.DeletionProtectionInfo;
+
+                    /**
+                     * Creates a plain object from a DeletionProtectionInfo message. Also converts values to other types if specified.
+                     * @param message DeletionProtectionInfo
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.DeletionProtectionInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this DeletionProtectionInfo to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for DeletionProtectionInfo
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a ResourceSuspensionInfo. */
+                interface IResourceSuspensionInfo {
+
+                    /** ResourceSuspensionInfo resourceSuspended */
+                    resourceSuspended?: (boolean|null);
+
+                    /** ResourceSuspensionInfo suspensionReason */
+                    suspensionReason?: (google.cloud.databasecenter.v1beta.SuspensionReason|keyof typeof google.cloud.databasecenter.v1beta.SuspensionReason|null);
+                }
+
+                /** Represents a ResourceSuspensionInfo. */
+                class ResourceSuspensionInfo implements IResourceSuspensionInfo {
+
+                    /**
+                     * Constructs a new ResourceSuspensionInfo.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IResourceSuspensionInfo);
+
+                    /** ResourceSuspensionInfo resourceSuspended. */
+                    public resourceSuspended: boolean;
+
+                    /** ResourceSuspensionInfo suspensionReason. */
+                    public suspensionReason: (google.cloud.databasecenter.v1beta.SuspensionReason|keyof typeof google.cloud.databasecenter.v1beta.SuspensionReason);
+
+                    /**
+                     * Creates a new ResourceSuspensionInfo instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns ResourceSuspensionInfo instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IResourceSuspensionInfo): google.cloud.databasecenter.v1beta.ResourceSuspensionInfo;
+
+                    /**
+                     * Encodes the specified ResourceSuspensionInfo message. Does not implicitly {@link google.cloud.databasecenter.v1beta.ResourceSuspensionInfo.verify|verify} messages.
+                     * @param message ResourceSuspensionInfo message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IResourceSuspensionInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified ResourceSuspensionInfo message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.ResourceSuspensionInfo.verify|verify} messages.
+                     * @param message ResourceSuspensionInfo message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IResourceSuspensionInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a ResourceSuspensionInfo message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns ResourceSuspensionInfo
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.ResourceSuspensionInfo;
+
+                    /**
+                     * Decodes a ResourceSuspensionInfo message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns ResourceSuspensionInfo
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.ResourceSuspensionInfo;
+
+                    /**
+                     * Verifies a ResourceSuspensionInfo message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a ResourceSuspensionInfo message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns ResourceSuspensionInfo
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.ResourceSuspensionInfo;
+
+                    /**
+                     * Creates a plain object from a ResourceSuspensionInfo message. Also converts values to other types if specified.
+                     * @param message ResourceSuspensionInfo
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.ResourceSuspensionInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this ResourceSuspensionInfo to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for ResourceSuspensionInfo
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a BackupRunInfo. */
+                interface IBackupRunInfo {
+
+                    /** BackupRunInfo startTime */
+                    startTime?: (google.protobuf.ITimestamp|null);
+
+                    /** BackupRunInfo endTime */
+                    endTime?: (google.protobuf.ITimestamp|null);
+
+                    /** BackupRunInfo state */
+                    state?: (google.cloud.databasecenter.v1beta.BackupRunInfo.State|keyof typeof google.cloud.databasecenter.v1beta.BackupRunInfo.State|null);
+
+                    /** BackupRunInfo errorMessage */
+                    errorMessage?: (string|null);
+
+                    /** BackupRunInfo operationErrorType */
+                    operationErrorType?: (google.cloud.databasecenter.v1beta.OperationErrorType|keyof typeof google.cloud.databasecenter.v1beta.OperationErrorType|null);
+
+                    /** BackupRunInfo subResource */
+                    subResource?: (google.cloud.databasecenter.v1beta.ISubResource|null);
+                }
+
+                /** Represents a BackupRunInfo. */
+                class BackupRunInfo implements IBackupRunInfo {
+
+                    /**
+                     * Constructs a new BackupRunInfo.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IBackupRunInfo);
+
+                    /** BackupRunInfo startTime. */
+                    public startTime?: (google.protobuf.ITimestamp|null);
+
+                    /** BackupRunInfo endTime. */
+                    public endTime?: (google.protobuf.ITimestamp|null);
+
+                    /** BackupRunInfo state. */
+                    public state: (google.cloud.databasecenter.v1beta.BackupRunInfo.State|keyof typeof google.cloud.databasecenter.v1beta.BackupRunInfo.State);
+
+                    /** BackupRunInfo errorMessage. */
+                    public errorMessage: string;
+
+                    /** BackupRunInfo operationErrorType. */
+                    public operationErrorType: (google.cloud.databasecenter.v1beta.OperationErrorType|keyof typeof google.cloud.databasecenter.v1beta.OperationErrorType);
+
+                    /** BackupRunInfo subResource. */
+                    public subResource?: (google.cloud.databasecenter.v1beta.ISubResource|null);
+
+                    /**
+                     * Creates a new BackupRunInfo instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns BackupRunInfo instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IBackupRunInfo): google.cloud.databasecenter.v1beta.BackupRunInfo;
+
+                    /**
+                     * Encodes the specified BackupRunInfo message. Does not implicitly {@link google.cloud.databasecenter.v1beta.BackupRunInfo.verify|verify} messages.
+                     * @param message BackupRunInfo message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IBackupRunInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified BackupRunInfo message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.BackupRunInfo.verify|verify} messages.
+                     * @param message BackupRunInfo message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IBackupRunInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a BackupRunInfo message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns BackupRunInfo
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.BackupRunInfo;
+
+                    /**
+                     * Decodes a BackupRunInfo message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns BackupRunInfo
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.BackupRunInfo;
+
+                    /**
+                     * Verifies a BackupRunInfo message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a BackupRunInfo message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns BackupRunInfo
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.BackupRunInfo;
+
+                    /**
+                     * Creates a plain object from a BackupRunInfo message. Also converts values to other types if specified.
+                     * @param message BackupRunInfo
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.BackupRunInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this BackupRunInfo to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for BackupRunInfo
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                namespace BackupRunInfo {
+
+                    /** State enum. */
+                    enum State {
+                        STATE_UNSPECIFIED = 0,
+                        SUCCEEDED = 1,
+                        FAILED = 2
+                    }
+                }
+
+                /** Properties of an InefficientQueryInfo. */
+                interface IInefficientQueryInfo {
+
+                    /** InefficientQueryInfo database */
+                    database?: (string|null);
+
+                    /** InefficientQueryInfo table */
+                    table?: (string|null);
+
+                    /** InefficientQueryInfo sqlIndexStatement */
+                    sqlIndexStatement?: (string|null);
+
+                    /** InefficientQueryInfo storageCostBytes */
+                    storageCostBytes?: (number|Long|string|null);
+
+                    /** InefficientQueryInfo impactedQueriesCount */
+                    impactedQueriesCount?: (number|Long|string|null);
+                }
+
+                /** Represents an InefficientQueryInfo. */
+                class InefficientQueryInfo implements IInefficientQueryInfo {
+
+                    /**
+                     * Constructs a new InefficientQueryInfo.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IInefficientQueryInfo);
+
+                    /** InefficientQueryInfo database. */
+                    public database: string;
+
+                    /** InefficientQueryInfo table. */
+                    public table: string;
+
+                    /** InefficientQueryInfo sqlIndexStatement. */
+                    public sqlIndexStatement: string;
+
+                    /** InefficientQueryInfo storageCostBytes. */
+                    public storageCostBytes: (number|Long|string);
+
+                    /** InefficientQueryInfo impactedQueriesCount. */
+                    public impactedQueriesCount: (number|Long|string);
+
+                    /**
+                     * Creates a new InefficientQueryInfo instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns InefficientQueryInfo instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IInefficientQueryInfo): google.cloud.databasecenter.v1beta.InefficientQueryInfo;
+
+                    /**
+                     * Encodes the specified InefficientQueryInfo message. Does not implicitly {@link google.cloud.databasecenter.v1beta.InefficientQueryInfo.verify|verify} messages.
+                     * @param message InefficientQueryInfo message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IInefficientQueryInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified InefficientQueryInfo message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.InefficientQueryInfo.verify|verify} messages.
+                     * @param message InefficientQueryInfo message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IInefficientQueryInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes an InefficientQueryInfo message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns InefficientQueryInfo
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.InefficientQueryInfo;
+
+                    /**
+                     * Decodes an InefficientQueryInfo message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns InefficientQueryInfo
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.InefficientQueryInfo;
+
+                    /**
+                     * Verifies an InefficientQueryInfo message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates an InefficientQueryInfo message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns InefficientQueryInfo
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.InefficientQueryInfo;
+
+                    /**
+                     * Creates a plain object from an InefficientQueryInfo message. Also converts values to other types if specified.
+                     * @param message InefficientQueryInfo
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.InefficientQueryInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this InefficientQueryInfo to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for InefficientQueryInfo
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a SCCInfo. */
+                interface ISCCInfo {
+
+                    /** SCCInfo signal */
+                    signal?: (string|null);
+
+                    /** SCCInfo category */
+                    category?: (string|null);
+
+                    /** SCCInfo regulatoryStandards */
+                    regulatoryStandards?: (google.cloud.databasecenter.v1beta.IRegulatoryStandard[]|null);
+
+                    /** SCCInfo externalUri */
+                    externalUri?: (string|null);
+                }
+
+                /** Represents a SCCInfo. */
+                class SCCInfo implements ISCCInfo {
+
+                    /**
+                     * Constructs a new SCCInfo.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.ISCCInfo);
+
+                    /** SCCInfo signal. */
+                    public signal: string;
+
+                    /** SCCInfo category. */
+                    public category: string;
+
+                    /** SCCInfo regulatoryStandards. */
+                    public regulatoryStandards: google.cloud.databasecenter.v1beta.IRegulatoryStandard[];
+
+                    /** SCCInfo externalUri. */
+                    public externalUri: string;
+
+                    /**
+                     * Creates a new SCCInfo instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns SCCInfo instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.ISCCInfo): google.cloud.databasecenter.v1beta.SCCInfo;
+
+                    /**
+                     * Encodes the specified SCCInfo message. Does not implicitly {@link google.cloud.databasecenter.v1beta.SCCInfo.verify|verify} messages.
+                     * @param message SCCInfo message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.ISCCInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified SCCInfo message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.SCCInfo.verify|verify} messages.
+                     * @param message SCCInfo message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.ISCCInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a SCCInfo message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns SCCInfo
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.SCCInfo;
+
+                    /**
+                     * Decodes a SCCInfo message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns SCCInfo
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.SCCInfo;
+
+                    /**
+                     * Verifies a SCCInfo message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a SCCInfo message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns SCCInfo
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.SCCInfo;
+
+                    /**
+                     * Creates a plain object from a SCCInfo message. Also converts values to other types if specified.
+                     * @param message SCCInfo
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.SCCInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this SCCInfo to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for SCCInfo
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a RecommendationInfo. */
+                interface IRecommendationInfo {
+
+                    /** RecommendationInfo recommender */
+                    recommender?: (string|null);
+
+                    /** RecommendationInfo recommenderId */
+                    recommenderId?: (string|null);
+
+                    /** RecommendationInfo recommenderSubtype */
+                    recommenderSubtype?: (string|null);
+                }
+
+                /** Represents a RecommendationInfo. */
+                class RecommendationInfo implements IRecommendationInfo {
+
+                    /**
+                     * Constructs a new RecommendationInfo.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IRecommendationInfo);
+
+                    /** RecommendationInfo recommender. */
+                    public recommender: string;
+
+                    /** RecommendationInfo recommenderId. */
+                    public recommenderId: string;
+
+                    /** RecommendationInfo recommenderSubtype. */
+                    public recommenderSubtype: string;
+
+                    /**
+                     * Creates a new RecommendationInfo instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns RecommendationInfo instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IRecommendationInfo): google.cloud.databasecenter.v1beta.RecommendationInfo;
+
+                    /**
+                     * Encodes the specified RecommendationInfo message. Does not implicitly {@link google.cloud.databasecenter.v1beta.RecommendationInfo.verify|verify} messages.
+                     * @param message RecommendationInfo message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IRecommendationInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified RecommendationInfo message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.RecommendationInfo.verify|verify} messages.
+                     * @param message RecommendationInfo message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IRecommendationInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a RecommendationInfo message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns RecommendationInfo
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.RecommendationInfo;
+
+                    /**
+                     * Decodes a RecommendationInfo message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns RecommendationInfo
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.RecommendationInfo;
+
+                    /**
+                     * Verifies a RecommendationInfo message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a RecommendationInfo message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns RecommendationInfo
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.RecommendationInfo;
+
+                    /**
+                     * Creates a plain object from a RecommendationInfo message. Also converts values to other types if specified.
+                     * @param message RecommendationInfo
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.RecommendationInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this RecommendationInfo to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for RecommendationInfo
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a RegulatoryStandard. */
+                interface IRegulatoryStandard {
+
+                    /** RegulatoryStandard standard */
+                    standard?: (string|null);
+
+                    /** RegulatoryStandard version */
+                    version?: (string|null);
+                }
+
+                /** Represents a RegulatoryStandard. */
+                class RegulatoryStandard implements IRegulatoryStandard {
+
+                    /**
+                     * Constructs a new RegulatoryStandard.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IRegulatoryStandard);
+
+                    /** RegulatoryStandard standard. */
+                    public standard: string;
+
+                    /** RegulatoryStandard version. */
+                    public version: string;
+
+                    /**
+                     * Creates a new RegulatoryStandard instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns RegulatoryStandard instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IRegulatoryStandard): google.cloud.databasecenter.v1beta.RegulatoryStandard;
+
+                    /**
+                     * Encodes the specified RegulatoryStandard message. Does not implicitly {@link google.cloud.databasecenter.v1beta.RegulatoryStandard.verify|verify} messages.
+                     * @param message RegulatoryStandard message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IRegulatoryStandard, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified RegulatoryStandard message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.RegulatoryStandard.verify|verify} messages.
+                     * @param message RegulatoryStandard message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IRegulatoryStandard, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a RegulatoryStandard message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns RegulatoryStandard
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.RegulatoryStandard;
+
+                    /**
+                     * Decodes a RegulatoryStandard message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns RegulatoryStandard
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.RegulatoryStandard;
+
+                    /**
+                     * Verifies a RegulatoryStandard message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a RegulatoryStandard message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns RegulatoryStandard
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.RegulatoryStandard;
+
+                    /**
+                     * Creates a plain object from a RegulatoryStandard message. Also converts values to other types if specified.
+                     * @param message RegulatoryStandard
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.RegulatoryStandard, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this RegulatoryStandard to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for RegulatoryStandard
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of an OutdatedMinorVersionInfo. */
+                interface IOutdatedMinorVersionInfo {
+
+                    /** OutdatedMinorVersionInfo recommendedMinorVersion */
+                    recommendedMinorVersion?: (string|null);
+                }
+
+                /** Represents an OutdatedMinorVersionInfo. */
+                class OutdatedMinorVersionInfo implements IOutdatedMinorVersionInfo {
+
+                    /**
+                     * Constructs a new OutdatedMinorVersionInfo.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IOutdatedMinorVersionInfo);
+
+                    /** OutdatedMinorVersionInfo recommendedMinorVersion. */
+                    public recommendedMinorVersion: string;
+
+                    /**
+                     * Creates a new OutdatedMinorVersionInfo instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns OutdatedMinorVersionInfo instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IOutdatedMinorVersionInfo): google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo;
+
+                    /**
+                     * Encodes the specified OutdatedMinorVersionInfo message. Does not implicitly {@link google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo.verify|verify} messages.
+                     * @param message OutdatedMinorVersionInfo message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IOutdatedMinorVersionInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified OutdatedMinorVersionInfo message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo.verify|verify} messages.
+                     * @param message OutdatedMinorVersionInfo message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IOutdatedMinorVersionInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes an OutdatedMinorVersionInfo message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns OutdatedMinorVersionInfo
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo;
+
+                    /**
+                     * Decodes an OutdatedMinorVersionInfo message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns OutdatedMinorVersionInfo
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo;
+
+                    /**
+                     * Verifies an OutdatedMinorVersionInfo message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates an OutdatedMinorVersionInfo message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns OutdatedMinorVersionInfo
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo;
+
+                    /**
+                     * Creates a plain object from an OutdatedMinorVersionInfo message. Also converts values to other types if specified.
+                     * @param message OutdatedMinorVersionInfo
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this OutdatedMinorVersionInfo to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for OutdatedMinorVersionInfo
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a MaintenanceRecommendationInfo. */
+                interface IMaintenanceRecommendationInfo {
+
+                    /** MaintenanceRecommendationInfo resourceMaintenanceSchedules */
+                    resourceMaintenanceSchedules?: (google.cloud.databasecenter.v1beta.IResourceMaintenanceSchedule[]|null);
+                }
+
+                /** Represents a MaintenanceRecommendationInfo. */
+                class MaintenanceRecommendationInfo implements IMaintenanceRecommendationInfo {
+
+                    /**
+                     * Constructs a new MaintenanceRecommendationInfo.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.IMaintenanceRecommendationInfo);
+
+                    /** MaintenanceRecommendationInfo resourceMaintenanceSchedules. */
+                    public resourceMaintenanceSchedules: google.cloud.databasecenter.v1beta.IResourceMaintenanceSchedule[];
+
+                    /**
+                     * Creates a new MaintenanceRecommendationInfo instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns MaintenanceRecommendationInfo instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.IMaintenanceRecommendationInfo): google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo;
+
+                    /**
+                     * Encodes the specified MaintenanceRecommendationInfo message. Does not implicitly {@link google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo.verify|verify} messages.
+                     * @param message MaintenanceRecommendationInfo message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.IMaintenanceRecommendationInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified MaintenanceRecommendationInfo message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo.verify|verify} messages.
+                     * @param message MaintenanceRecommendationInfo message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.IMaintenanceRecommendationInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a MaintenanceRecommendationInfo message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns MaintenanceRecommendationInfo
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo;
+
+                    /**
+                     * Decodes a MaintenanceRecommendationInfo message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns MaintenanceRecommendationInfo
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo;
+
+                    /**
+                     * Verifies a MaintenanceRecommendationInfo message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a MaintenanceRecommendationInfo message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns MaintenanceRecommendationInfo
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo;
+
+                    /**
+                     * Creates a plain object from a MaintenanceRecommendationInfo message. Also converts values to other types if specified.
+                     * @param message MaintenanceRecommendationInfo
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this MaintenanceRecommendationInfo to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for MaintenanceRecommendationInfo
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** Properties of a Signal. */
+                interface ISignal {
+
+                    /** Signal signalType */
+                    signalType?: (google.cloud.databasecenter.v1beta.SignalType|keyof typeof google.cloud.databasecenter.v1beta.SignalType|null);
+
+                    /** Signal signalStatus */
+                    signalStatus?: (google.cloud.databasecenter.v1beta.SignalStatus|keyof typeof google.cloud.databasecenter.v1beta.SignalStatus|null);
+
+                    /** Signal additionalDetails */
+                    additionalDetails?: (google.cloud.databasecenter.v1beta.IAdditionalDetail[]|null);
+
+                    /** Signal issueSeverity */
+                    issueSeverity?: (google.cloud.databasecenter.v1beta.IssueSeverity|keyof typeof google.cloud.databasecenter.v1beta.IssueSeverity|null);
+
+                    /** Signal issueCreateTime */
+                    issueCreateTime?: (google.protobuf.ITimestamp|null);
+                }
+
+                /** Represents a Signal. */
+                class Signal implements ISignal {
+
+                    /**
+                     * Constructs a new Signal.
+                     * @param [properties] Properties to set
+                     */
+                    constructor(properties?: google.cloud.databasecenter.v1beta.ISignal);
+
+                    /** Signal signalType. */
+                    public signalType: (google.cloud.databasecenter.v1beta.SignalType|keyof typeof google.cloud.databasecenter.v1beta.SignalType);
+
+                    /** Signal signalStatus. */
+                    public signalStatus: (google.cloud.databasecenter.v1beta.SignalStatus|keyof typeof google.cloud.databasecenter.v1beta.SignalStatus);
+
+                    /** Signal additionalDetails. */
+                    public additionalDetails: google.cloud.databasecenter.v1beta.IAdditionalDetail[];
+
+                    /** Signal issueSeverity. */
+                    public issueSeverity: (google.cloud.databasecenter.v1beta.IssueSeverity|keyof typeof google.cloud.databasecenter.v1beta.IssueSeverity);
+
+                    /** Signal issueCreateTime. */
+                    public issueCreateTime?: (google.protobuf.ITimestamp|null);
+
+                    /**
+                     * Creates a new Signal instance using the specified properties.
+                     * @param [properties] Properties to set
+                     * @returns Signal instance
+                     */
+                    public static create(properties?: google.cloud.databasecenter.v1beta.ISignal): google.cloud.databasecenter.v1beta.Signal;
+
+                    /**
+                     * Encodes the specified Signal message. Does not implicitly {@link google.cloud.databasecenter.v1beta.Signal.verify|verify} messages.
+                     * @param message Signal message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encode(message: google.cloud.databasecenter.v1beta.ISignal, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Encodes the specified Signal message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.Signal.verify|verify} messages.
+                     * @param message Signal message or plain object to encode
+                     * @param [writer] Writer to encode to
+                     * @returns Writer
+                     */
+                    public static encodeDelimited(message: google.cloud.databasecenter.v1beta.ISignal, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                    /**
+                     * Decodes a Signal message from the specified reader or buffer.
+                     * @param reader Reader or buffer to decode from
+                     * @param [length] Message length if known beforehand
+                     * @returns Signal
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.cloud.databasecenter.v1beta.Signal;
+
+                    /**
+                     * Decodes a Signal message from the specified reader or buffer, length delimited.
+                     * @param reader Reader or buffer to decode from
+                     * @returns Signal
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.cloud.databasecenter.v1beta.Signal;
+
+                    /**
+                     * Verifies a Signal message.
+                     * @param message Plain object to verify
+                     * @returns `null` if valid, otherwise the reason why it is not
+                     */
+                    public static verify(message: { [k: string]: any }): (string|null);
+
+                    /**
+                     * Creates a Signal message from a plain object. Also converts values to their respective internal types.
+                     * @param object Plain object
+                     * @returns Signal
+                     */
+                    public static fromObject(object: { [k: string]: any }): google.cloud.databasecenter.v1beta.Signal;
+
+                    /**
+                     * Creates a plain object from a Signal message. Also converts values to other types if specified.
+                     * @param message Signal
+                     * @param [options] Conversion options
+                     * @returns Plain object
+                     */
+                    public static toObject(message: google.cloud.databasecenter.v1beta.Signal, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                    /**
+                     * Converts this Signal to JSON.
+                     * @returns JSON object
+                     */
+                    public toJSON(): { [k: string]: any };
+
+                    /**
+                     * Gets the default type url for Signal
+                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns The default type url
+                     */
+                    public static getTypeUrl(typeUrlPrefix?: string): string;
+                }
+
+                /** SuspensionReason enum. */
+                enum SuspensionReason {
+                    SUSPENSION_REASON_UNSPECIFIED = 0,
+                    WIPEOUT_HIDE_EVENT = 1,
+                    WIPEOUT_PURGE_EVENT = 2,
+                    BILLING_DISABLED = 3,
+                    ABUSER_DETECTED = 4,
+                    ENCRYPTION_KEY_INACCESSIBLE = 5,
+                    REPLICATED_CLUSTER_ENCRYPTION_KEY_INACCESSIBLE = 6
+                }
+            }
+        }
+    }
+
+    /** Namespace api. */
+    namespace api {
+
+        /** FieldBehavior enum. */
+        enum FieldBehavior {
+            FIELD_BEHAVIOR_UNSPECIFIED = 0,
+            OPTIONAL = 1,
+            REQUIRED = 2,
+            OUTPUT_ONLY = 3,
+            INPUT_ONLY = 4,
+            IMMUTABLE = 5,
+            UNORDERED_LIST = 6,
+            NON_EMPTY_DEFAULT = 7,
+            IDENTIFIER = 8
+        }
+
+        /** Properties of a Http. */
+        interface IHttp {
+
+            /** Http rules */
+            rules?: (google.api.IHttpRule[]|null);
+
+            /** Http fullyDecodeReservedExpansion */
+            fullyDecodeReservedExpansion?: (boolean|null);
+        }
+
+        /** Represents a Http. */
+        class Http implements IHttp {
+
+            /**
+             * Constructs a new Http.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.api.IHttp);
+
+            /** Http rules. */
+            public rules: google.api.IHttpRule[];
+
+            /** Http fullyDecodeReservedExpansion. */
+            public fullyDecodeReservedExpansion: boolean;
+
+            /**
+             * Creates a new Http instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns Http instance
+             */
+            public static create(properties?: google.api.IHttp): google.api.Http;
+
+            /**
+             * Encodes the specified Http message. Does not implicitly {@link google.api.Http.verify|verify} messages.
+             * @param message Http message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.api.IHttp, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified Http message, length delimited. Does not implicitly {@link google.api.Http.verify|verify} messages.
+             * @param message Http message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.api.IHttp, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a Http message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns Http
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.Http;
+
+            /**
+             * Decodes a Http message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns Http
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.Http;
+
+            /**
+             * Verifies a Http message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a Http message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns Http
+             */
+            public static fromObject(object: { [k: string]: any }): google.api.Http;
+
+            /**
+             * Creates a plain object from a Http message. Also converts values to other types if specified.
+             * @param message Http
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.api.Http, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this Http to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for Http
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a HttpRule. */
+        interface IHttpRule {
+
+            /** HttpRule selector */
+            selector?: (string|null);
+
+            /** HttpRule get */
+            get?: (string|null);
+
+            /** HttpRule put */
+            put?: (string|null);
+
+            /** HttpRule post */
+            post?: (string|null);
+
+            /** HttpRule delete */
+            "delete"?: (string|null);
+
+            /** HttpRule patch */
+            patch?: (string|null);
+
+            /** HttpRule custom */
+            custom?: (google.api.ICustomHttpPattern|null);
+
+            /** HttpRule body */
+            body?: (string|null);
+
+            /** HttpRule responseBody */
+            responseBody?: (string|null);
+
+            /** HttpRule additionalBindings */
+            additionalBindings?: (google.api.IHttpRule[]|null);
+        }
+
+        /** Represents a HttpRule. */
+        class HttpRule implements IHttpRule {
+
+            /**
+             * Constructs a new HttpRule.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.api.IHttpRule);
+
+            /** HttpRule selector. */
+            public selector: string;
+
+            /** HttpRule get. */
+            public get?: (string|null);
+
+            /** HttpRule put. */
+            public put?: (string|null);
+
+            /** HttpRule post. */
+            public post?: (string|null);
+
+            /** HttpRule delete. */
+            public delete?: (string|null);
+
+            /** HttpRule patch. */
+            public patch?: (string|null);
+
+            /** HttpRule custom. */
+            public custom?: (google.api.ICustomHttpPattern|null);
+
+            /** HttpRule body. */
+            public body: string;
+
+            /** HttpRule responseBody. */
+            public responseBody: string;
+
+            /** HttpRule additionalBindings. */
+            public additionalBindings: google.api.IHttpRule[];
+
+            /** HttpRule pattern. */
+            public pattern?: ("get"|"put"|"post"|"delete"|"patch"|"custom");
+
+            /**
+             * Creates a new HttpRule instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns HttpRule instance
+             */
+            public static create(properties?: google.api.IHttpRule): google.api.HttpRule;
+
+            /**
+             * Encodes the specified HttpRule message. Does not implicitly {@link google.api.HttpRule.verify|verify} messages.
+             * @param message HttpRule message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.api.IHttpRule, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified HttpRule message, length delimited. Does not implicitly {@link google.api.HttpRule.verify|verify} messages.
+             * @param message HttpRule message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.api.IHttpRule, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a HttpRule message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns HttpRule
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.HttpRule;
+
+            /**
+             * Decodes a HttpRule message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns HttpRule
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.HttpRule;
+
+            /**
+             * Verifies a HttpRule message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a HttpRule message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns HttpRule
+             */
+            public static fromObject(object: { [k: string]: any }): google.api.HttpRule;
+
+            /**
+             * Creates a plain object from a HttpRule message. Also converts values to other types if specified.
+             * @param message HttpRule
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.api.HttpRule, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this HttpRule to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for HttpRule
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a CustomHttpPattern. */
+        interface ICustomHttpPattern {
+
+            /** CustomHttpPattern kind */
+            kind?: (string|null);
+
+            /** CustomHttpPattern path */
+            path?: (string|null);
+        }
+
+        /** Represents a CustomHttpPattern. */
+        class CustomHttpPattern implements ICustomHttpPattern {
+
+            /**
+             * Constructs a new CustomHttpPattern.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.api.ICustomHttpPattern);
+
+            /** CustomHttpPattern kind. */
+            public kind: string;
+
+            /** CustomHttpPattern path. */
+            public path: string;
+
+            /**
+             * Creates a new CustomHttpPattern instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns CustomHttpPattern instance
+             */
+            public static create(properties?: google.api.ICustomHttpPattern): google.api.CustomHttpPattern;
+
+            /**
+             * Encodes the specified CustomHttpPattern message. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages.
+             * @param message CustomHttpPattern message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.api.ICustomHttpPattern, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified CustomHttpPattern message, length delimited. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages.
+             * @param message CustomHttpPattern message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.api.ICustomHttpPattern, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a CustomHttpPattern message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns CustomHttpPattern
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.CustomHttpPattern;
+
+            /**
+             * Decodes a CustomHttpPattern message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns CustomHttpPattern
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.CustomHttpPattern;
+
+            /**
+             * Verifies a CustomHttpPattern message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a CustomHttpPattern message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns CustomHttpPattern
+             */
+            public static fromObject(object: { [k: string]: any }): google.api.CustomHttpPattern;
+
+            /**
+             * Creates a plain object from a CustomHttpPattern message. Also converts values to other types if specified.
+             * @param message CustomHttpPattern
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.api.CustomHttpPattern, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this CustomHttpPattern to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for CustomHttpPattern
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a CommonLanguageSettings. */
+        interface ICommonLanguageSettings {
+
+            /** CommonLanguageSettings referenceDocsUri */
+            referenceDocsUri?: (string|null);
+
+            /** CommonLanguageSettings destinations */
+            destinations?: (google.api.ClientLibraryDestination[]|null);
+        }
+
+        /** Represents a CommonLanguageSettings. */
+        class CommonLanguageSettings implements ICommonLanguageSettings {
+
+            /**
+             * Constructs a new CommonLanguageSettings.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.api.ICommonLanguageSettings);
+
+            /** CommonLanguageSettings referenceDocsUri. */
+            public referenceDocsUri: string;
+
+            /** CommonLanguageSettings destinations. */
+            public destinations: google.api.ClientLibraryDestination[];
+
+            /**
+             * Creates a new CommonLanguageSettings instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns CommonLanguageSettings instance
+             */
+            public static create(properties?: google.api.ICommonLanguageSettings): google.api.CommonLanguageSettings;
+
+            /**
+             * Encodes the specified CommonLanguageSettings message. Does not implicitly {@link google.api.CommonLanguageSettings.verify|verify} messages.
+             * @param message CommonLanguageSettings message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.api.ICommonLanguageSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified CommonLanguageSettings message, length delimited. Does not implicitly {@link google.api.CommonLanguageSettings.verify|verify} messages.
+             * @param message CommonLanguageSettings message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.api.ICommonLanguageSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a CommonLanguageSettings message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns CommonLanguageSettings
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.CommonLanguageSettings;
+
+            /**
+             * Decodes a CommonLanguageSettings message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns CommonLanguageSettings
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.CommonLanguageSettings;
+
+            /**
+             * Verifies a CommonLanguageSettings message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a CommonLanguageSettings message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns CommonLanguageSettings
+             */
+            public static fromObject(object: { [k: string]: any }): google.api.CommonLanguageSettings;
+
+            /**
+             * Creates a plain object from a CommonLanguageSettings message. Also converts values to other types if specified.
+             * @param message CommonLanguageSettings
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.api.CommonLanguageSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this CommonLanguageSettings to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for CommonLanguageSettings
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a ClientLibrarySettings. */
+        interface IClientLibrarySettings {
+
+            /** ClientLibrarySettings version */
+            version?: (string|null);
+
+            /** ClientLibrarySettings launchStage */
+            launchStage?: (google.api.LaunchStage|keyof typeof google.api.LaunchStage|null);
+
+            /** ClientLibrarySettings restNumericEnums */
+            restNumericEnums?: (boolean|null);
+
+            /** ClientLibrarySettings javaSettings */
+            javaSettings?: (google.api.IJavaSettings|null);
+
+            /** ClientLibrarySettings cppSettings */
+            cppSettings?: (google.api.ICppSettings|null);
+
+            /** ClientLibrarySettings phpSettings */
+            phpSettings?: (google.api.IPhpSettings|null);
+
+            /** ClientLibrarySettings pythonSettings */
+            pythonSettings?: (google.api.IPythonSettings|null);
+
+            /** ClientLibrarySettings nodeSettings */
+            nodeSettings?: (google.api.INodeSettings|null);
+
+            /** ClientLibrarySettings dotnetSettings */
+            dotnetSettings?: (google.api.IDotnetSettings|null);
+
+            /** ClientLibrarySettings rubySettings */
+            rubySettings?: (google.api.IRubySettings|null);
+
+            /** ClientLibrarySettings goSettings */
+            goSettings?: (google.api.IGoSettings|null);
+        }
+
+        /** Represents a ClientLibrarySettings. */
+        class ClientLibrarySettings implements IClientLibrarySettings {
+
+            /**
+             * Constructs a new ClientLibrarySettings.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.api.IClientLibrarySettings);
+
+            /** ClientLibrarySettings version. */
+            public version: string;
+
+            /** ClientLibrarySettings launchStage. */
+            public launchStage: (google.api.LaunchStage|keyof typeof google.api.LaunchStage);
+
+            /** ClientLibrarySettings restNumericEnums. */
+            public restNumericEnums: boolean;
+
+            /** ClientLibrarySettings javaSettings. */
+            public javaSettings?: (google.api.IJavaSettings|null);
+
+            /** ClientLibrarySettings cppSettings. */
+            public cppSettings?: (google.api.ICppSettings|null);
+
+            /** ClientLibrarySettings phpSettings. */
+            public phpSettings?: (google.api.IPhpSettings|null);
+
+            /** ClientLibrarySettings pythonSettings. */
+            public pythonSettings?: (google.api.IPythonSettings|null);
+
+            /** ClientLibrarySettings nodeSettings. */
+            public nodeSettings?: (google.api.INodeSettings|null);
+
+            /** ClientLibrarySettings dotnetSettings. */
+            public dotnetSettings?: (google.api.IDotnetSettings|null);
+
+            /** ClientLibrarySettings rubySettings. */
+            public rubySettings?: (google.api.IRubySettings|null);
+
+            /** ClientLibrarySettings goSettings. */
+            public goSettings?: (google.api.IGoSettings|null);
+
+            /**
+             * Creates a new ClientLibrarySettings instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns ClientLibrarySettings instance
+             */
+            public static create(properties?: google.api.IClientLibrarySettings): google.api.ClientLibrarySettings;
+
+            /**
+             * Encodes the specified ClientLibrarySettings message. Does not implicitly {@link google.api.ClientLibrarySettings.verify|verify} messages.
+             * @param message ClientLibrarySettings message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.api.IClientLibrarySettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified ClientLibrarySettings message, length delimited. Does not implicitly {@link google.api.ClientLibrarySettings.verify|verify} messages.
+             * @param message ClientLibrarySettings message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.api.IClientLibrarySettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a ClientLibrarySettings message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns ClientLibrarySettings
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.ClientLibrarySettings;
+
+            /**
+             * Decodes a ClientLibrarySettings message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns ClientLibrarySettings
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.ClientLibrarySettings;
+
+            /**
+             * Verifies a ClientLibrarySettings message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a ClientLibrarySettings message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns ClientLibrarySettings
+             */
+            public static fromObject(object: { [k: string]: any }): google.api.ClientLibrarySettings;
+
+            /**
+             * Creates a plain object from a ClientLibrarySettings message. Also converts values to other types if specified.
+             * @param message ClientLibrarySettings
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.api.ClientLibrarySettings, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this ClientLibrarySettings to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for ClientLibrarySettings
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a Publishing. */
+        interface IPublishing {
+
+            /** Publishing methodSettings */
+            methodSettings?: (google.api.IMethodSettings[]|null);
+
+            /** Publishing newIssueUri */
+            newIssueUri?: (string|null);
+
+            /** Publishing documentationUri */
+            documentationUri?: (string|null);
+
+            /** Publishing apiShortName */
+            apiShortName?: (string|null);
+
+            /** Publishing githubLabel */
+            githubLabel?: (string|null);
+
+            /** Publishing codeownerGithubTeams */
+            codeownerGithubTeams?: (string[]|null);
+
+            /** Publishing docTagPrefix */
+            docTagPrefix?: (string|null);
+
+            /** Publishing organization */
+            organization?: (google.api.ClientLibraryOrganization|keyof typeof google.api.ClientLibraryOrganization|null);
+
+            /** Publishing librarySettings */
+            librarySettings?: (google.api.IClientLibrarySettings[]|null);
+
+            /** Publishing protoReferenceDocumentationUri */
+            protoReferenceDocumentationUri?: (string|null);
+
+            /** Publishing restReferenceDocumentationUri */
+            restReferenceDocumentationUri?: (string|null);
+        }
+
+        /** Represents a Publishing. */
+        class Publishing implements IPublishing {
+
+            /**
+             * Constructs a new Publishing.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.api.IPublishing);
+
+            /** Publishing methodSettings. */
+            public methodSettings: google.api.IMethodSettings[];
+
+            /** Publishing newIssueUri. */
+            public newIssueUri: string;
+
+            /** Publishing documentationUri. */
+            public documentationUri: string;
+
+            /** Publishing apiShortName. */
+            public apiShortName: string;
+
+            /** Publishing githubLabel. */
+            public githubLabel: string;
+
+            /** Publishing codeownerGithubTeams. */
+            public codeownerGithubTeams: string[];
+
+            /** Publishing docTagPrefix. */
+            public docTagPrefix: string;
+
+            /** Publishing organization. */
+            public organization: (google.api.ClientLibraryOrganization|keyof typeof google.api.ClientLibraryOrganization);
+
+            /** Publishing librarySettings. */
+            public librarySettings: google.api.IClientLibrarySettings[];
+
+            /** Publishing protoReferenceDocumentationUri. */
+            public protoReferenceDocumentationUri: string;
+
+            /** Publishing restReferenceDocumentationUri. */
+            public restReferenceDocumentationUri: string;
+
+            /**
+             * Creates a new Publishing instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns Publishing instance
+             */
+            public static create(properties?: google.api.IPublishing): google.api.Publishing;
+
+            /**
+             * Encodes the specified Publishing message. Does not implicitly {@link google.api.Publishing.verify|verify} messages.
+             * @param message Publishing message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.api.IPublishing, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified Publishing message, length delimited. Does not implicitly {@link google.api.Publishing.verify|verify} messages.
+             * @param message Publishing message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.api.IPublishing, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a Publishing message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns Publishing
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.Publishing;
+
+            /**
+             * Decodes a Publishing message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns Publishing
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.Publishing;
+
+            /**
+             * Verifies a Publishing message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a Publishing message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns Publishing
+             */
+            public static fromObject(object: { [k: string]: any }): google.api.Publishing;
+
+            /**
+             * Creates a plain object from a Publishing message. Also converts values to other types if specified.
+             * @param message Publishing
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.api.Publishing, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this Publishing to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for Publishing
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a JavaSettings. */
+        interface IJavaSettings {
+
+            /** JavaSettings libraryPackage */
+            libraryPackage?: (string|null);
+
+            /** JavaSettings serviceClassNames */
+            serviceClassNames?: ({ [k: string]: string }|null);
+
+            /** JavaSettings common */
+            common?: (google.api.ICommonLanguageSettings|null);
+        }
+
+        /** Represents a JavaSettings. */
+        class JavaSettings implements IJavaSettings {
+
+            /**
+             * Constructs a new JavaSettings.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.api.IJavaSettings);
+
+            /** JavaSettings libraryPackage. */
+            public libraryPackage: string;
+
+            /** JavaSettings serviceClassNames. */
+            public serviceClassNames: { [k: string]: string };
+
+            /** JavaSettings common. */
+            public common?: (google.api.ICommonLanguageSettings|null);
+
+            /**
+             * Creates a new JavaSettings instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns JavaSettings instance
+             */
+            public static create(properties?: google.api.IJavaSettings): google.api.JavaSettings;
+
+            /**
+             * Encodes the specified JavaSettings message. Does not implicitly {@link google.api.JavaSettings.verify|verify} messages.
+             * @param message JavaSettings message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.api.IJavaSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified JavaSettings message, length delimited. Does not implicitly {@link google.api.JavaSettings.verify|verify} messages.
+             * @param message JavaSettings message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.api.IJavaSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a JavaSettings message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns JavaSettings
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.JavaSettings;
+
+            /**
+             * Decodes a JavaSettings message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns JavaSettings
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.JavaSettings;
+
+            /**
+             * Verifies a JavaSettings message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a JavaSettings message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns JavaSettings
+             */
+            public static fromObject(object: { [k: string]: any }): google.api.JavaSettings;
+
+            /**
+             * Creates a plain object from a JavaSettings message. Also converts values to other types if specified.
+             * @param message JavaSettings
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.api.JavaSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this JavaSettings to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for JavaSettings
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a CppSettings. */
+        interface ICppSettings {
+
+            /** CppSettings common */
+            common?: (google.api.ICommonLanguageSettings|null);
+        }
+
+        /** Represents a CppSettings. */
+        class CppSettings implements ICppSettings {
+
+            /**
+             * Constructs a new CppSettings.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.api.ICppSettings);
+
+            /** CppSettings common. */
+            public common?: (google.api.ICommonLanguageSettings|null);
+
+            /**
+             * Creates a new CppSettings instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns CppSettings instance
+             */
+            public static create(properties?: google.api.ICppSettings): google.api.CppSettings;
+
+            /**
+             * Encodes the specified CppSettings message. Does not implicitly {@link google.api.CppSettings.verify|verify} messages.
+             * @param message CppSettings message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.api.ICppSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified CppSettings message, length delimited. Does not implicitly {@link google.api.CppSettings.verify|verify} messages.
+             * @param message CppSettings message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.api.ICppSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a CppSettings message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns CppSettings
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.CppSettings;
+
+            /**
+             * Decodes a CppSettings message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns CppSettings
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.CppSettings;
+
+            /**
+             * Verifies a CppSettings message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a CppSettings message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns CppSettings
+             */
+            public static fromObject(object: { [k: string]: any }): google.api.CppSettings;
+
+            /**
+             * Creates a plain object from a CppSettings message. Also converts values to other types if specified.
+             * @param message CppSettings
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.api.CppSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this CppSettings to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for CppSettings
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a PhpSettings. */
+        interface IPhpSettings {
+
+            /** PhpSettings common */
+            common?: (google.api.ICommonLanguageSettings|null);
+        }
+
+        /** Represents a PhpSettings. */
+        class PhpSettings implements IPhpSettings {
+
+            /**
+             * Constructs a new PhpSettings.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.api.IPhpSettings);
+
+            /** PhpSettings common. */
+            public common?: (google.api.ICommonLanguageSettings|null);
+
+            /**
+             * Creates a new PhpSettings instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns PhpSettings instance
+             */
+            public static create(properties?: google.api.IPhpSettings): google.api.PhpSettings;
+
+            /**
+             * Encodes the specified PhpSettings message. Does not implicitly {@link google.api.PhpSettings.verify|verify} messages.
+             * @param message PhpSettings message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.api.IPhpSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified PhpSettings message, length delimited. Does not implicitly {@link google.api.PhpSettings.verify|verify} messages.
+             * @param message PhpSettings message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.api.IPhpSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a PhpSettings message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns PhpSettings
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.PhpSettings;
+
+            /**
+             * Decodes a PhpSettings message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns PhpSettings
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.PhpSettings;
+
+            /**
+             * Verifies a PhpSettings message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a PhpSettings message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns PhpSettings
+             */
+            public static fromObject(object: { [k: string]: any }): google.api.PhpSettings;
+
+            /**
+             * Creates a plain object from a PhpSettings message. Also converts values to other types if specified.
+             * @param message PhpSettings
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.api.PhpSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this PhpSettings to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for PhpSettings
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a PythonSettings. */
+        interface IPythonSettings {
+
+            /** PythonSettings common */
+            common?: (google.api.ICommonLanguageSettings|null);
+        }
+
+        /** Represents a PythonSettings. */
+        class PythonSettings implements IPythonSettings {
+
+            /**
+             * Constructs a new PythonSettings.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.api.IPythonSettings);
+
+            /** PythonSettings common. */
+            public common?: (google.api.ICommonLanguageSettings|null);
+
+            /**
+             * Creates a new PythonSettings instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns PythonSettings instance
+             */
+            public static create(properties?: google.api.IPythonSettings): google.api.PythonSettings;
+
+            /**
+             * Encodes the specified PythonSettings message. Does not implicitly {@link google.api.PythonSettings.verify|verify} messages.
+             * @param message PythonSettings message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.api.IPythonSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified PythonSettings message, length delimited. Does not implicitly {@link google.api.PythonSettings.verify|verify} messages.
+             * @param message PythonSettings message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.api.IPythonSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a PythonSettings message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns PythonSettings
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.PythonSettings;
+
+            /**
+             * Decodes a PythonSettings message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns PythonSettings
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.PythonSettings;
+
+            /**
+             * Verifies a PythonSettings message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a PythonSettings message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns PythonSettings
+             */
+            public static fromObject(object: { [k: string]: any }): google.api.PythonSettings;
+
+            /**
+             * Creates a plain object from a PythonSettings message. Also converts values to other types if specified.
+             * @param message PythonSettings
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.api.PythonSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this PythonSettings to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for PythonSettings
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a NodeSettings. */
+        interface INodeSettings {
+
+            /** NodeSettings common */
+            common?: (google.api.ICommonLanguageSettings|null);
+        }
+
+        /** Represents a NodeSettings. */
+        class NodeSettings implements INodeSettings {
+
+            /**
+             * Constructs a new NodeSettings.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.api.INodeSettings);
+
+            /** NodeSettings common. */
+            public common?: (google.api.ICommonLanguageSettings|null);
+
+            /**
+             * Creates a new NodeSettings instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns NodeSettings instance
+             */
+            public static create(properties?: google.api.INodeSettings): google.api.NodeSettings;
+
+            /**
+             * Encodes the specified NodeSettings message. Does not implicitly {@link google.api.NodeSettings.verify|verify} messages.
+             * @param message NodeSettings message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.api.INodeSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified NodeSettings message, length delimited. Does not implicitly {@link google.api.NodeSettings.verify|verify} messages.
+             * @param message NodeSettings message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.api.INodeSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a NodeSettings message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns NodeSettings
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.NodeSettings;
+
+            /**
+             * Decodes a NodeSettings message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns NodeSettings
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.NodeSettings;
+
+            /**
+             * Verifies a NodeSettings message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a NodeSettings message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns NodeSettings
+             */
+            public static fromObject(object: { [k: string]: any }): google.api.NodeSettings;
+
+            /**
+             * Creates a plain object from a NodeSettings message. Also converts values to other types if specified.
+             * @param message NodeSettings
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.api.NodeSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this NodeSettings to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for NodeSettings
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a DotnetSettings. */
+        interface IDotnetSettings {
+
+            /** DotnetSettings common */
+            common?: (google.api.ICommonLanguageSettings|null);
+
+            /** DotnetSettings renamedServices */
+            renamedServices?: ({ [k: string]: string }|null);
+
+            /** DotnetSettings renamedResources */
+            renamedResources?: ({ [k: string]: string }|null);
+
+            /** DotnetSettings ignoredResources */
+            ignoredResources?: (string[]|null);
+
+            /** DotnetSettings forcedNamespaceAliases */
+            forcedNamespaceAliases?: (string[]|null);
+
+            /** DotnetSettings handwrittenSignatures */
+            handwrittenSignatures?: (string[]|null);
+        }
+
+        /** Represents a DotnetSettings. */
+        class DotnetSettings implements IDotnetSettings {
+
+            /**
+             * Constructs a new DotnetSettings.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.api.IDotnetSettings);
+
+            /** DotnetSettings common. */
+            public common?: (google.api.ICommonLanguageSettings|null);
+
+            /** DotnetSettings renamedServices. */
+            public renamedServices: { [k: string]: string };
+
+            /** DotnetSettings renamedResources. */
+            public renamedResources: { [k: string]: string };
+
+            /** DotnetSettings ignoredResources. */
+            public ignoredResources: string[];
+
+            /** DotnetSettings forcedNamespaceAliases. */
+            public forcedNamespaceAliases: string[];
+
+            /** DotnetSettings handwrittenSignatures. */
+            public handwrittenSignatures: string[];
+
+            /**
+             * Creates a new DotnetSettings instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns DotnetSettings instance
+             */
+            public static create(properties?: google.api.IDotnetSettings): google.api.DotnetSettings;
+
+            /**
+             * Encodes the specified DotnetSettings message. Does not implicitly {@link google.api.DotnetSettings.verify|verify} messages.
+             * @param message DotnetSettings message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.api.IDotnetSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified DotnetSettings message, length delimited. Does not implicitly {@link google.api.DotnetSettings.verify|verify} messages.
+             * @param message DotnetSettings message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.api.IDotnetSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a DotnetSettings message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns DotnetSettings
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.DotnetSettings;
+
+            /**
+             * Decodes a DotnetSettings message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns DotnetSettings
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.DotnetSettings;
+
+            /**
+             * Verifies a DotnetSettings message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a DotnetSettings message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns DotnetSettings
+             */
+            public static fromObject(object: { [k: string]: any }): google.api.DotnetSettings;
+
+            /**
+             * Creates a plain object from a DotnetSettings message. Also converts values to other types if specified.
+             * @param message DotnetSettings
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.api.DotnetSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this DotnetSettings to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for DotnetSettings
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a RubySettings. */
+        interface IRubySettings {
+
+            /** RubySettings common */
+            common?: (google.api.ICommonLanguageSettings|null);
+        }
+
+        /** Represents a RubySettings. */
+        class RubySettings implements IRubySettings {
+
+            /**
+             * Constructs a new RubySettings.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.api.IRubySettings);
+
+            /** RubySettings common. */
+            public common?: (google.api.ICommonLanguageSettings|null);
+
+            /**
+             * Creates a new RubySettings instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns RubySettings instance
+             */
+            public static create(properties?: google.api.IRubySettings): google.api.RubySettings;
+
+            /**
+             * Encodes the specified RubySettings message. Does not implicitly {@link google.api.RubySettings.verify|verify} messages.
+             * @param message RubySettings message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.api.IRubySettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified RubySettings message, length delimited. Does not implicitly {@link google.api.RubySettings.verify|verify} messages.
+             * @param message RubySettings message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.api.IRubySettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a RubySettings message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns RubySettings
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.RubySettings;
+
+            /**
+             * Decodes a RubySettings message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns RubySettings
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.RubySettings;
+
+            /**
+             * Verifies a RubySettings message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a RubySettings message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns RubySettings
+             */
+            public static fromObject(object: { [k: string]: any }): google.api.RubySettings;
+
+            /**
+             * Creates a plain object from a RubySettings message. Also converts values to other types if specified.
+             * @param message RubySettings
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.api.RubySettings, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this RubySettings to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for RubySettings
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a GoSettings. */
+        interface IGoSettings {
+
+            /** GoSettings common */
+            common?: (google.api.ICommonLanguageSettings|null);
+        }
+
+        /** Represents a GoSettings. */
+        class GoSettings implements IGoSettings {
+
+            /**
+             * Constructs a new GoSettings.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.api.IGoSettings);
+
+            /** GoSettings common. */
+            public common?: (google.api.ICommonLanguageSettings|null);
+
+            /**
+             * Creates a new GoSettings instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns GoSettings instance
+             */
+            public static create(properties?: google.api.IGoSettings): google.api.GoSettings;
+
+            /**
+             * Encodes the specified GoSettings message. Does not implicitly {@link google.api.GoSettings.verify|verify} messages.
+             * @param message GoSettings message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.api.IGoSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified GoSettings message, length delimited. Does not implicitly {@link google.api.GoSettings.verify|verify} messages.
+             * @param message GoSettings message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.api.IGoSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a GoSettings message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns GoSettings
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.GoSettings;
+
+            /**
+             * Decodes a GoSettings message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns GoSettings
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.GoSettings;
+
+            /**
+             * Verifies a GoSettings message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a GoSettings message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns GoSettings
+             */
+            public static fromObject(object: { [k: string]: any }): google.api.GoSettings;
+
+            /**
+             * Creates a plain object from a GoSettings message. Also converts values to other types if specified.
+             * @param message GoSettings
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.api.GoSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this GoSettings to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for GoSettings
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a MethodSettings. */
+        interface IMethodSettings {
+
+            /** MethodSettings selector */
+            selector?: (string|null);
+
+            /** MethodSettings longRunning */
+            longRunning?: (google.api.MethodSettings.ILongRunning|null);
+
+            /** MethodSettings autoPopulatedFields */
+            autoPopulatedFields?: (string[]|null);
+        }
+
+        /** Represents a MethodSettings. */
+        class MethodSettings implements IMethodSettings {
+
+            /**
+             * Constructs a new MethodSettings.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.api.IMethodSettings);
+
+            /** MethodSettings selector. */
+            public selector: string;
+
+            /** MethodSettings longRunning. */
+            public longRunning?: (google.api.MethodSettings.ILongRunning|null);
+
+            /** MethodSettings autoPopulatedFields. */
+            public autoPopulatedFields: string[];
+
+            /**
+             * Creates a new MethodSettings instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns MethodSettings instance
+             */
+            public static create(properties?: google.api.IMethodSettings): google.api.MethodSettings;
+
+            /**
+             * Encodes the specified MethodSettings message. Does not implicitly {@link google.api.MethodSettings.verify|verify} messages.
+             * @param message MethodSettings message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.api.IMethodSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified MethodSettings message, length delimited. Does not implicitly {@link google.api.MethodSettings.verify|verify} messages.
+             * @param message MethodSettings message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.api.IMethodSettings, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a MethodSettings message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns MethodSettings
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.MethodSettings;
+
+            /**
+             * Decodes a MethodSettings message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns MethodSettings
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.MethodSettings;
+
+            /**
+             * Verifies a MethodSettings message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a MethodSettings message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns MethodSettings
+             */
+            public static fromObject(object: { [k: string]: any }): google.api.MethodSettings;
+
+            /**
+             * Creates a plain object from a MethodSettings message. Also converts values to other types if specified.
+             * @param message MethodSettings
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.api.MethodSettings, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this MethodSettings to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for MethodSettings
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        namespace MethodSettings {
+
+            /** Properties of a LongRunning. */
+            interface ILongRunning {
+
+                /** LongRunning initialPollDelay */
+                initialPollDelay?: (google.protobuf.IDuration|null);
+
+                /** LongRunning pollDelayMultiplier */
+                pollDelayMultiplier?: (number|null);
+
+                /** LongRunning maxPollDelay */
+                maxPollDelay?: (google.protobuf.IDuration|null);
+
+                /** LongRunning totalPollTimeout */
+                totalPollTimeout?: (google.protobuf.IDuration|null);
+            }
+
+            /** Represents a LongRunning. */
+            class LongRunning implements ILongRunning {
+
+                /**
+                 * Constructs a new LongRunning.
+                 * @param [properties] Properties to set
+                 */
+                constructor(properties?: google.api.MethodSettings.ILongRunning);
+
+                /** LongRunning initialPollDelay. */
+                public initialPollDelay?: (google.protobuf.IDuration|null);
+
+                /** LongRunning pollDelayMultiplier. */
+                public pollDelayMultiplier: number;
+
+                /** LongRunning maxPollDelay. */
+                public maxPollDelay?: (google.protobuf.IDuration|null);
+
+                /** LongRunning totalPollTimeout. */
+                public totalPollTimeout?: (google.protobuf.IDuration|null);
+
+                /**
+                 * Creates a new LongRunning instance using the specified properties.
+                 * @param [properties] Properties to set
+                 * @returns LongRunning instance
+                 */
+                public static create(properties?: google.api.MethodSettings.ILongRunning): google.api.MethodSettings.LongRunning;
+
+                /**
+                 * Encodes the specified LongRunning message. Does not implicitly {@link google.api.MethodSettings.LongRunning.verify|verify} messages.
+                 * @param message LongRunning message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encode(message: google.api.MethodSettings.ILongRunning, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Encodes the specified LongRunning message, length delimited. Does not implicitly {@link google.api.MethodSettings.LongRunning.verify|verify} messages.
+                 * @param message LongRunning message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encodeDelimited(message: google.api.MethodSettings.ILongRunning, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Decodes a LongRunning message from the specified reader or buffer.
+                 * @param reader Reader or buffer to decode from
+                 * @param [length] Message length if known beforehand
+                 * @returns LongRunning
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.MethodSettings.LongRunning;
+
+                /**
+                 * Decodes a LongRunning message from the specified reader or buffer, length delimited.
+                 * @param reader Reader or buffer to decode from
+                 * @returns LongRunning
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.MethodSettings.LongRunning;
+
+                /**
+                 * Verifies a LongRunning message.
+                 * @param message Plain object to verify
+                 * @returns `null` if valid, otherwise the reason why it is not
+                 */
+                public static verify(message: { [k: string]: any }): (string|null);
+
+                /**
+                 * Creates a LongRunning message from a plain object. Also converts values to their respective internal types.
+                 * @param object Plain object
+                 * @returns LongRunning
+                 */
+                public static fromObject(object: { [k: string]: any }): google.api.MethodSettings.LongRunning;
+
+                /**
+                 * Creates a plain object from a LongRunning message. Also converts values to other types if specified.
+                 * @param message LongRunning
+                 * @param [options] Conversion options
+                 * @returns Plain object
+                 */
+                public static toObject(message: google.api.MethodSettings.LongRunning, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                /**
+                 * Converts this LongRunning to JSON.
+                 * @returns JSON object
+                 */
+                public toJSON(): { [k: string]: any };
+
+                /**
+                 * Gets the default type url for LongRunning
+                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns The default type url
+                 */
+                public static getTypeUrl(typeUrlPrefix?: string): string;
+            }
+        }
+
+        /** ClientLibraryOrganization enum. */
+        enum ClientLibraryOrganization {
+            CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED = 0,
+            CLOUD = 1,
+            ADS = 2,
+            PHOTOS = 3,
+            STREET_VIEW = 4,
+            SHOPPING = 5,
+            GEO = 6,
+            GENERATIVE_AI = 7
+        }
+
+        /** ClientLibraryDestination enum. */
+        enum ClientLibraryDestination {
+            CLIENT_LIBRARY_DESTINATION_UNSPECIFIED = 0,
+            GITHUB = 10,
+            PACKAGE_MANAGER = 20
+        }
+
+        /** LaunchStage enum. */
+        enum LaunchStage {
+            LAUNCH_STAGE_UNSPECIFIED = 0,
+            UNIMPLEMENTED = 6,
+            PRELAUNCH = 7,
+            EARLY_ACCESS = 1,
+            ALPHA = 2,
+            BETA = 3,
+            GA = 4,
+            DEPRECATED = 5
+        }
+    }
+
+    /** Namespace protobuf. */
+    namespace protobuf {
+
+        /** Properties of a FileDescriptorSet. */
+        interface IFileDescriptorSet {
+
+            /** FileDescriptorSet file */
+            file?: (google.protobuf.IFileDescriptorProto[]|null);
+        }
+
+        /** Represents a FileDescriptorSet. */
+        class FileDescriptorSet implements IFileDescriptorSet {
+
+            /**
+             * Constructs a new FileDescriptorSet.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IFileDescriptorSet);
+
+            /** FileDescriptorSet file. */
+            public file: google.protobuf.IFileDescriptorProto[];
+
+            /**
+             * Creates a new FileDescriptorSet instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns FileDescriptorSet instance
+             */
+            public static create(properties?: google.protobuf.IFileDescriptorSet): google.protobuf.FileDescriptorSet;
+
+            /**
+             * Encodes the specified FileDescriptorSet message. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages.
+             * @param message FileDescriptorSet message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IFileDescriptorSet, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified FileDescriptorSet message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages.
+             * @param message FileDescriptorSet message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IFileDescriptorSet, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a FileDescriptorSet message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns FileDescriptorSet
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileDescriptorSet;
+
+            /**
+             * Decodes a FileDescriptorSet message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns FileDescriptorSet
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileDescriptorSet;
+
+            /**
+             * Verifies a FileDescriptorSet message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a FileDescriptorSet message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns FileDescriptorSet
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.FileDescriptorSet;
+
+            /**
+             * Creates a plain object from a FileDescriptorSet message. Also converts values to other types if specified.
+             * @param message FileDescriptorSet
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.FileDescriptorSet, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this FileDescriptorSet to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for FileDescriptorSet
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Edition enum. */
+        enum Edition {
+            EDITION_UNKNOWN = 0,
+            EDITION_PROTO2 = 998,
+            EDITION_PROTO3 = 999,
+            EDITION_2023 = 1000,
+            EDITION_2024 = 1001,
+            EDITION_1_TEST_ONLY = 1,
+            EDITION_2_TEST_ONLY = 2,
+            EDITION_99997_TEST_ONLY = 99997,
+            EDITION_99998_TEST_ONLY = 99998,
+            EDITION_99999_TEST_ONLY = 99999,
+            EDITION_MAX = 2147483647
+        }
+
+        /** Properties of a FileDescriptorProto. */
+        interface IFileDescriptorProto {
+
+            /** FileDescriptorProto name */
+            name?: (string|null);
+
+            /** FileDescriptorProto package */
+            "package"?: (string|null);
+
+            /** FileDescriptorProto dependency */
+            dependency?: (string[]|null);
+
+            /** FileDescriptorProto publicDependency */
+            publicDependency?: (number[]|null);
+
+            /** FileDescriptorProto weakDependency */
+            weakDependency?: (number[]|null);
+
+            /** FileDescriptorProto messageType */
+            messageType?: (google.protobuf.IDescriptorProto[]|null);
+
+            /** FileDescriptorProto enumType */
+            enumType?: (google.protobuf.IEnumDescriptorProto[]|null);
+
+            /** FileDescriptorProto service */
+            service?: (google.protobuf.IServiceDescriptorProto[]|null);
+
+            /** FileDescriptorProto extension */
+            extension?: (google.protobuf.IFieldDescriptorProto[]|null);
+
+            /** FileDescriptorProto options */
+            options?: (google.protobuf.IFileOptions|null);
+
+            /** FileDescriptorProto sourceCodeInfo */
+            sourceCodeInfo?: (google.protobuf.ISourceCodeInfo|null);
+
+            /** FileDescriptorProto syntax */
+            syntax?: (string|null);
+
+            /** FileDescriptorProto edition */
+            edition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
+        }
+
+        /** Represents a FileDescriptorProto. */
+        class FileDescriptorProto implements IFileDescriptorProto {
+
+            /**
+             * Constructs a new FileDescriptorProto.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IFileDescriptorProto);
+
+            /** FileDescriptorProto name. */
+            public name: string;
+
+            /** FileDescriptorProto package. */
+            public package: string;
+
+            /** FileDescriptorProto dependency. */
+            public dependency: string[];
+
+            /** FileDescriptorProto publicDependency. */
+            public publicDependency: number[];
+
+            /** FileDescriptorProto weakDependency. */
+            public weakDependency: number[];
+
+            /** FileDescriptorProto messageType. */
+            public messageType: google.protobuf.IDescriptorProto[];
+
+            /** FileDescriptorProto enumType. */
+            public enumType: google.protobuf.IEnumDescriptorProto[];
+
+            /** FileDescriptorProto service. */
+            public service: google.protobuf.IServiceDescriptorProto[];
+
+            /** FileDescriptorProto extension. */
+            public extension: google.protobuf.IFieldDescriptorProto[];
+
+            /** FileDescriptorProto options. */
+            public options?: (google.protobuf.IFileOptions|null);
+
+            /** FileDescriptorProto sourceCodeInfo. */
+            public sourceCodeInfo?: (google.protobuf.ISourceCodeInfo|null);
+
+            /** FileDescriptorProto syntax. */
+            public syntax: string;
+
+            /** FileDescriptorProto edition. */
+            public edition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);
+
+            /**
+             * Creates a new FileDescriptorProto instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns FileDescriptorProto instance
+             */
+            public static create(properties?: google.protobuf.IFileDescriptorProto): google.protobuf.FileDescriptorProto;
+
+            /**
+             * Encodes the specified FileDescriptorProto message. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages.
+             * @param message FileDescriptorProto message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IFileDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified FileDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages.
+             * @param message FileDescriptorProto message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IFileDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a FileDescriptorProto message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns FileDescriptorProto
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileDescriptorProto;
+
+            /**
+             * Decodes a FileDescriptorProto message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns FileDescriptorProto
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileDescriptorProto;
+
+            /**
+             * Verifies a FileDescriptorProto message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a FileDescriptorProto message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns FileDescriptorProto
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.FileDescriptorProto;
+
+            /**
+             * Creates a plain object from a FileDescriptorProto message. Also converts values to other types if specified.
+             * @param message FileDescriptorProto
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.FileDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this FileDescriptorProto to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for FileDescriptorProto
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a DescriptorProto. */
+        interface IDescriptorProto {
+
+            /** DescriptorProto name */
+            name?: (string|null);
+
+            /** DescriptorProto field */
+            field?: (google.protobuf.IFieldDescriptorProto[]|null);
+
+            /** DescriptorProto extension */
+            extension?: (google.protobuf.IFieldDescriptorProto[]|null);
+
+            /** DescriptorProto nestedType */
+            nestedType?: (google.protobuf.IDescriptorProto[]|null);
+
+            /** DescriptorProto enumType */
+            enumType?: (google.protobuf.IEnumDescriptorProto[]|null);
+
+            /** DescriptorProto extensionRange */
+            extensionRange?: (google.protobuf.DescriptorProto.IExtensionRange[]|null);
+
+            /** DescriptorProto oneofDecl */
+            oneofDecl?: (google.protobuf.IOneofDescriptorProto[]|null);
+
+            /** DescriptorProto options */
+            options?: (google.protobuf.IMessageOptions|null);
+
+            /** DescriptorProto reservedRange */
+            reservedRange?: (google.protobuf.DescriptorProto.IReservedRange[]|null);
+
+            /** DescriptorProto reservedName */
+            reservedName?: (string[]|null);
+        }
+
+        /** Represents a DescriptorProto. */
+        class DescriptorProto implements IDescriptorProto {
+
+            /**
+             * Constructs a new DescriptorProto.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IDescriptorProto);
+
+            /** DescriptorProto name. */
+            public name: string;
+
+            /** DescriptorProto field. */
+            public field: google.protobuf.IFieldDescriptorProto[];
+
+            /** DescriptorProto extension. */
+            public extension: google.protobuf.IFieldDescriptorProto[];
+
+            /** DescriptorProto nestedType. */
+            public nestedType: google.protobuf.IDescriptorProto[];
+
+            /** DescriptorProto enumType. */
+            public enumType: google.protobuf.IEnumDescriptorProto[];
+
+            /** DescriptorProto extensionRange. */
+            public extensionRange: google.protobuf.DescriptorProto.IExtensionRange[];
+
+            /** DescriptorProto oneofDecl. */
+            public oneofDecl: google.protobuf.IOneofDescriptorProto[];
+
+            /** DescriptorProto options. */
+            public options?: (google.protobuf.IMessageOptions|null);
+
+            /** DescriptorProto reservedRange. */
+            public reservedRange: google.protobuf.DescriptorProto.IReservedRange[];
+
+            /** DescriptorProto reservedName. */
+            public reservedName: string[];
+
+            /**
+             * Creates a new DescriptorProto instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns DescriptorProto instance
+             */
+            public static create(properties?: google.protobuf.IDescriptorProto): google.protobuf.DescriptorProto;
+
+            /**
+             * Encodes the specified DescriptorProto message. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages.
+             * @param message DescriptorProto message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified DescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages.
+             * @param message DescriptorProto message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a DescriptorProto message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns DescriptorProto
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto;
+
+            /**
+             * Decodes a DescriptorProto message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns DescriptorProto
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto;
+
+            /**
+             * Verifies a DescriptorProto message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a DescriptorProto message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns DescriptorProto
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto;
+
+            /**
+             * Creates a plain object from a DescriptorProto message. Also converts values to other types if specified.
+             * @param message DescriptorProto
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.DescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this DescriptorProto to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for DescriptorProto
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        namespace DescriptorProto {
+
+            /** Properties of an ExtensionRange. */
+            interface IExtensionRange {
+
+                /** ExtensionRange start */
+                start?: (number|null);
+
+                /** ExtensionRange end */
+                end?: (number|null);
+
+                /** ExtensionRange options */
+                options?: (google.protobuf.IExtensionRangeOptions|null);
+            }
+
+            /** Represents an ExtensionRange. */
+            class ExtensionRange implements IExtensionRange {
+
+                /**
+                 * Constructs a new ExtensionRange.
+                 * @param [properties] Properties to set
+                 */
+                constructor(properties?: google.protobuf.DescriptorProto.IExtensionRange);
+
+                /** ExtensionRange start. */
+                public start: number;
+
+                /** ExtensionRange end. */
+                public end: number;
+
+                /** ExtensionRange options. */
+                public options?: (google.protobuf.IExtensionRangeOptions|null);
+
+                /**
+                 * Creates a new ExtensionRange instance using the specified properties.
+                 * @param [properties] Properties to set
+                 * @returns ExtensionRange instance
+                 */
+                public static create(properties?: google.protobuf.DescriptorProto.IExtensionRange): google.protobuf.DescriptorProto.ExtensionRange;
+
+                /**
+                 * Encodes the specified ExtensionRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages.
+                 * @param message ExtensionRange message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encode(message: google.protobuf.DescriptorProto.IExtensionRange, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Encodes the specified ExtensionRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages.
+                 * @param message ExtensionRange message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encodeDelimited(message: google.protobuf.DescriptorProto.IExtensionRange, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Decodes an ExtensionRange message from the specified reader or buffer.
+                 * @param reader Reader or buffer to decode from
+                 * @param [length] Message length if known beforehand
+                 * @returns ExtensionRange
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto.ExtensionRange;
+
+                /**
+                 * Decodes an ExtensionRange message from the specified reader or buffer, length delimited.
+                 * @param reader Reader or buffer to decode from
+                 * @returns ExtensionRange
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto.ExtensionRange;
+
+                /**
+                 * Verifies an ExtensionRange message.
+                 * @param message Plain object to verify
+                 * @returns `null` if valid, otherwise the reason why it is not
+                 */
+                public static verify(message: { [k: string]: any }): (string|null);
+
+                /**
+                 * Creates an ExtensionRange message from a plain object. Also converts values to their respective internal types.
+                 * @param object Plain object
+                 * @returns ExtensionRange
+                 */
+                public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto.ExtensionRange;
+
+                /**
+                 * Creates a plain object from an ExtensionRange message. Also converts values to other types if specified.
+                 * @param message ExtensionRange
+                 * @param [options] Conversion options
+                 * @returns Plain object
+                 */
+                public static toObject(message: google.protobuf.DescriptorProto.ExtensionRange, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                /**
+                 * Converts this ExtensionRange to JSON.
+                 * @returns JSON object
+                 */
+                public toJSON(): { [k: string]: any };
+
+                /**
+                 * Gets the default type url for ExtensionRange
+                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns The default type url
+                 */
+                public static getTypeUrl(typeUrlPrefix?: string): string;
+            }
+
+            /** Properties of a ReservedRange. */
+            interface IReservedRange {
+
+                /** ReservedRange start */
+                start?: (number|null);
+
+                /** ReservedRange end */
+                end?: (number|null);
+            }
+
+            /** Represents a ReservedRange. */
+            class ReservedRange implements IReservedRange {
+
+                /**
+                 * Constructs a new ReservedRange.
+                 * @param [properties] Properties to set
+                 */
+                constructor(properties?: google.protobuf.DescriptorProto.IReservedRange);
+
+                /** ReservedRange start. */
+                public start: number;
+
+                /** ReservedRange end. */
+                public end: number;
+
+                /**
+                 * Creates a new ReservedRange instance using the specified properties.
+                 * @param [properties] Properties to set
+                 * @returns ReservedRange instance
+                 */
+                public static create(properties?: google.protobuf.DescriptorProto.IReservedRange): google.protobuf.DescriptorProto.ReservedRange;
+
+                /**
+                 * Encodes the specified ReservedRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages.
+                 * @param message ReservedRange message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encode(message: google.protobuf.DescriptorProto.IReservedRange, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Encodes the specified ReservedRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages.
+                 * @param message ReservedRange message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encodeDelimited(message: google.protobuf.DescriptorProto.IReservedRange, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Decodes a ReservedRange message from the specified reader or buffer.
+                 * @param reader Reader or buffer to decode from
+                 * @param [length] Message length if known beforehand
+                 * @returns ReservedRange
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto.ReservedRange;
+
+                /**
+                 * Decodes a ReservedRange message from the specified reader or buffer, length delimited.
+                 * @param reader Reader or buffer to decode from
+                 * @returns ReservedRange
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto.ReservedRange;
+
+                /**
+                 * Verifies a ReservedRange message.
+                 * @param message Plain object to verify
+                 * @returns `null` if valid, otherwise the reason why it is not
+                 */
+                public static verify(message: { [k: string]: any }): (string|null);
+
+                /**
+                 * Creates a ReservedRange message from a plain object. Also converts values to their respective internal types.
+                 * @param object Plain object
+                 * @returns ReservedRange
+                 */
+                public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto.ReservedRange;
+
+                /**
+                 * Creates a plain object from a ReservedRange message. Also converts values to other types if specified.
+                 * @param message ReservedRange
+                 * @param [options] Conversion options
+                 * @returns Plain object
+                 */
+                public static toObject(message: google.protobuf.DescriptorProto.ReservedRange, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                /**
+                 * Converts this ReservedRange to JSON.
+                 * @returns JSON object
+                 */
+                public toJSON(): { [k: string]: any };
+
+                /**
+                 * Gets the default type url for ReservedRange
+                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns The default type url
+                 */
+                public static getTypeUrl(typeUrlPrefix?: string): string;
+            }
+        }
+
+        /** Properties of an ExtensionRangeOptions. */
+        interface IExtensionRangeOptions {
+
+            /** ExtensionRangeOptions uninterpretedOption */
+            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
+
+            /** ExtensionRangeOptions declaration */
+            declaration?: (google.protobuf.ExtensionRangeOptions.IDeclaration[]|null);
+
+            /** ExtensionRangeOptions features */
+            features?: (google.protobuf.IFeatureSet|null);
+
+            /** ExtensionRangeOptions verification */
+            verification?: (google.protobuf.ExtensionRangeOptions.VerificationState|keyof typeof google.protobuf.ExtensionRangeOptions.VerificationState|null);
+        }
+
+        /** Represents an ExtensionRangeOptions. */
+        class ExtensionRangeOptions implements IExtensionRangeOptions {
+
+            /**
+             * Constructs a new ExtensionRangeOptions.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IExtensionRangeOptions);
+
+            /** ExtensionRangeOptions uninterpretedOption. */
+            public uninterpretedOption: google.protobuf.IUninterpretedOption[];
+
+            /** ExtensionRangeOptions declaration. */
+            public declaration: google.protobuf.ExtensionRangeOptions.IDeclaration[];
+
+            /** ExtensionRangeOptions features. */
+            public features?: (google.protobuf.IFeatureSet|null);
+
+            /** ExtensionRangeOptions verification. */
+            public verification: (google.protobuf.ExtensionRangeOptions.VerificationState|keyof typeof google.protobuf.ExtensionRangeOptions.VerificationState);
+
+            /**
+             * Creates a new ExtensionRangeOptions instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns ExtensionRangeOptions instance
+             */
+            public static create(properties?: google.protobuf.IExtensionRangeOptions): google.protobuf.ExtensionRangeOptions;
+
+            /**
+             * Encodes the specified ExtensionRangeOptions message. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages.
+             * @param message ExtensionRangeOptions message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IExtensionRangeOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified ExtensionRangeOptions message, length delimited. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages.
+             * @param message ExtensionRangeOptions message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IExtensionRangeOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes an ExtensionRangeOptions message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns ExtensionRangeOptions
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ExtensionRangeOptions;
+
+            /**
+             * Decodes an ExtensionRangeOptions message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns ExtensionRangeOptions
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ExtensionRangeOptions;
+
+            /**
+             * Verifies an ExtensionRangeOptions message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates an ExtensionRangeOptions message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns ExtensionRangeOptions
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.ExtensionRangeOptions;
+
+            /**
+             * Creates a plain object from an ExtensionRangeOptions message. Also converts values to other types if specified.
+             * @param message ExtensionRangeOptions
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.ExtensionRangeOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this ExtensionRangeOptions to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for ExtensionRangeOptions
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        namespace ExtensionRangeOptions {
+
+            /** Properties of a Declaration. */
+            interface IDeclaration {
+
+                /** Declaration number */
+                number?: (number|null);
+
+                /** Declaration fullName */
+                fullName?: (string|null);
+
+                /** Declaration type */
+                type?: (string|null);
+
+                /** Declaration reserved */
+                reserved?: (boolean|null);
+
+                /** Declaration repeated */
+                repeated?: (boolean|null);
+            }
+
+            /** Represents a Declaration. */
+            class Declaration implements IDeclaration {
+
+                /**
+                 * Constructs a new Declaration.
+                 * @param [properties] Properties to set
+                 */
+                constructor(properties?: google.protobuf.ExtensionRangeOptions.IDeclaration);
+
+                /** Declaration number. */
+                public number: number;
+
+                /** Declaration fullName. */
+                public fullName: string;
+
+                /** Declaration type. */
+                public type: string;
+
+                /** Declaration reserved. */
+                public reserved: boolean;
+
+                /** Declaration repeated. */
+                public repeated: boolean;
+
+                /**
+                 * Creates a new Declaration instance using the specified properties.
+                 * @param [properties] Properties to set
+                 * @returns Declaration instance
+                 */
+                public static create(properties?: google.protobuf.ExtensionRangeOptions.IDeclaration): google.protobuf.ExtensionRangeOptions.Declaration;
+
+                /**
+                 * Encodes the specified Declaration message. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.Declaration.verify|verify} messages.
+                 * @param message Declaration message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encode(message: google.protobuf.ExtensionRangeOptions.IDeclaration, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Encodes the specified Declaration message, length delimited. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.Declaration.verify|verify} messages.
+                 * @param message Declaration message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encodeDelimited(message: google.protobuf.ExtensionRangeOptions.IDeclaration, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Decodes a Declaration message from the specified reader or buffer.
+                 * @param reader Reader or buffer to decode from
+                 * @param [length] Message length if known beforehand
+                 * @returns Declaration
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ExtensionRangeOptions.Declaration;
+
+                /**
+                 * Decodes a Declaration message from the specified reader or buffer, length delimited.
+                 * @param reader Reader or buffer to decode from
+                 * @returns Declaration
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ExtensionRangeOptions.Declaration;
+
+                /**
+                 * Verifies a Declaration message.
+                 * @param message Plain object to verify
+                 * @returns `null` if valid, otherwise the reason why it is not
+                 */
+                public static verify(message: { [k: string]: any }): (string|null);
+
+                /**
+                 * Creates a Declaration message from a plain object. Also converts values to their respective internal types.
+                 * @param object Plain object
+                 * @returns Declaration
+                 */
+                public static fromObject(object: { [k: string]: any }): google.protobuf.ExtensionRangeOptions.Declaration;
+
+                /**
+                 * Creates a plain object from a Declaration message. Also converts values to other types if specified.
+                 * @param message Declaration
+                 * @param [options] Conversion options
+                 * @returns Plain object
+                 */
+                public static toObject(message: google.protobuf.ExtensionRangeOptions.Declaration, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                /**
+                 * Converts this Declaration to JSON.
+                 * @returns JSON object
+                 */
+                public toJSON(): { [k: string]: any };
+
+                /**
+                 * Gets the default type url for Declaration
+                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns The default type url
+                 */
+                public static getTypeUrl(typeUrlPrefix?: string): string;
+            }
+
+            /** VerificationState enum. */
+            enum VerificationState {
+                DECLARATION = 0,
+                UNVERIFIED = 1
+            }
+        }
+
+        /** Properties of a FieldDescriptorProto. */
+        interface IFieldDescriptorProto {
+
+            /** FieldDescriptorProto name */
+            name?: (string|null);
+
+            /** FieldDescriptorProto number */
+            number?: (number|null);
+
+            /** FieldDescriptorProto label */
+            label?: (google.protobuf.FieldDescriptorProto.Label|keyof typeof google.protobuf.FieldDescriptorProto.Label|null);
+
+            /** FieldDescriptorProto type */
+            type?: (google.protobuf.FieldDescriptorProto.Type|keyof typeof google.protobuf.FieldDescriptorProto.Type|null);
+
+            /** FieldDescriptorProto typeName */
+            typeName?: (string|null);
+
+            /** FieldDescriptorProto extendee */
+            extendee?: (string|null);
+
+            /** FieldDescriptorProto defaultValue */
+            defaultValue?: (string|null);
+
+            /** FieldDescriptorProto oneofIndex */
+            oneofIndex?: (number|null);
+
+            /** FieldDescriptorProto jsonName */
+            jsonName?: (string|null);
+
+            /** FieldDescriptorProto options */
+            options?: (google.protobuf.IFieldOptions|null);
+
+            /** FieldDescriptorProto proto3Optional */
+            proto3Optional?: (boolean|null);
+        }
+
+        /** Represents a FieldDescriptorProto. */
+        class FieldDescriptorProto implements IFieldDescriptorProto {
+
+            /**
+             * Constructs a new FieldDescriptorProto.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IFieldDescriptorProto);
+
+            /** FieldDescriptorProto name. */
+            public name: string;
+
+            /** FieldDescriptorProto number. */
+            public number: number;
+
+            /** FieldDescriptorProto label. */
+            public label: (google.protobuf.FieldDescriptorProto.Label|keyof typeof google.protobuf.FieldDescriptorProto.Label);
+
+            /** FieldDescriptorProto type. */
+            public type: (google.protobuf.FieldDescriptorProto.Type|keyof typeof google.protobuf.FieldDescriptorProto.Type);
+
+            /** FieldDescriptorProto typeName. */
+            public typeName: string;
+
+            /** FieldDescriptorProto extendee. */
+            public extendee: string;
+
+            /** FieldDescriptorProto defaultValue. */
+            public defaultValue: string;
+
+            /** FieldDescriptorProto oneofIndex. */
+            public oneofIndex: number;
+
+            /** FieldDescriptorProto jsonName. */
+            public jsonName: string;
+
+            /** FieldDescriptorProto options. */
+            public options?: (google.protobuf.IFieldOptions|null);
+
+            /** FieldDescriptorProto proto3Optional. */
+            public proto3Optional: boolean;
+
+            /**
+             * Creates a new FieldDescriptorProto instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns FieldDescriptorProto instance
+             */
+            public static create(properties?: google.protobuf.IFieldDescriptorProto): google.protobuf.FieldDescriptorProto;
+
+            /**
+             * Encodes the specified FieldDescriptorProto message. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages.
+             * @param message FieldDescriptorProto message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IFieldDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified FieldDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages.
+             * @param message FieldDescriptorProto message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IFieldDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a FieldDescriptorProto message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns FieldDescriptorProto
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldDescriptorProto;
+
+            /**
+             * Decodes a FieldDescriptorProto message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns FieldDescriptorProto
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldDescriptorProto;
+
+            /**
+             * Verifies a FieldDescriptorProto message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a FieldDescriptorProto message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns FieldDescriptorProto
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.FieldDescriptorProto;
+
+            /**
+             * Creates a plain object from a FieldDescriptorProto message. Also converts values to other types if specified.
+             * @param message FieldDescriptorProto
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.FieldDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this FieldDescriptorProto to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for FieldDescriptorProto
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        namespace FieldDescriptorProto {
+
+            /** Type enum. */
+            enum Type {
+                TYPE_DOUBLE = 1,
+                TYPE_FLOAT = 2,
+                TYPE_INT64 = 3,
+                TYPE_UINT64 = 4,
+                TYPE_INT32 = 5,
+                TYPE_FIXED64 = 6,
+                TYPE_FIXED32 = 7,
+                TYPE_BOOL = 8,
+                TYPE_STRING = 9,
+                TYPE_GROUP = 10,
+                TYPE_MESSAGE = 11,
+                TYPE_BYTES = 12,
+                TYPE_UINT32 = 13,
+                TYPE_ENUM = 14,
+                TYPE_SFIXED32 = 15,
+                TYPE_SFIXED64 = 16,
+                TYPE_SINT32 = 17,
+                TYPE_SINT64 = 18
+            }
+
+            /** Label enum. */
+            enum Label {
+                LABEL_OPTIONAL = 1,
+                LABEL_REPEATED = 3,
+                LABEL_REQUIRED = 2
+            }
+        }
+
+        /** Properties of an OneofDescriptorProto. */
+        interface IOneofDescriptorProto {
+
+            /** OneofDescriptorProto name */
+            name?: (string|null);
+
+            /** OneofDescriptorProto options */
+            options?: (google.protobuf.IOneofOptions|null);
+        }
+
+        /** Represents an OneofDescriptorProto. */
+        class OneofDescriptorProto implements IOneofDescriptorProto {
+
+            /**
+             * Constructs a new OneofDescriptorProto.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IOneofDescriptorProto);
+
+            /** OneofDescriptorProto name. */
+            public name: string;
+
+            /** OneofDescriptorProto options. */
+            public options?: (google.protobuf.IOneofOptions|null);
+
+            /**
+             * Creates a new OneofDescriptorProto instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns OneofDescriptorProto instance
+             */
+            public static create(properties?: google.protobuf.IOneofDescriptorProto): google.protobuf.OneofDescriptorProto;
+
+            /**
+             * Encodes the specified OneofDescriptorProto message. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages.
+             * @param message OneofDescriptorProto message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IOneofDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified OneofDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages.
+             * @param message OneofDescriptorProto message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IOneofDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes an OneofDescriptorProto message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns OneofDescriptorProto
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.OneofDescriptorProto;
+
+            /**
+             * Decodes an OneofDescriptorProto message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns OneofDescriptorProto
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.OneofDescriptorProto;
+
+            /**
+             * Verifies an OneofDescriptorProto message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates an OneofDescriptorProto message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns OneofDescriptorProto
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.OneofDescriptorProto;
+
+            /**
+             * Creates a plain object from an OneofDescriptorProto message. Also converts values to other types if specified.
+             * @param message OneofDescriptorProto
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.OneofDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this OneofDescriptorProto to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for OneofDescriptorProto
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of an EnumDescriptorProto. */
+        interface IEnumDescriptorProto {
+
+            /** EnumDescriptorProto name */
+            name?: (string|null);
+
+            /** EnumDescriptorProto value */
+            value?: (google.protobuf.IEnumValueDescriptorProto[]|null);
+
+            /** EnumDescriptorProto options */
+            options?: (google.protobuf.IEnumOptions|null);
+
+            /** EnumDescriptorProto reservedRange */
+            reservedRange?: (google.protobuf.EnumDescriptorProto.IEnumReservedRange[]|null);
+
+            /** EnumDescriptorProto reservedName */
+            reservedName?: (string[]|null);
+        }
+
+        /** Represents an EnumDescriptorProto. */
+        class EnumDescriptorProto implements IEnumDescriptorProto {
+
+            /**
+             * Constructs a new EnumDescriptorProto.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IEnumDescriptorProto);
+
+            /** EnumDescriptorProto name. */
+            public name: string;
+
+            /** EnumDescriptorProto value. */
+            public value: google.protobuf.IEnumValueDescriptorProto[];
+
+            /** EnumDescriptorProto options. */
+            public options?: (google.protobuf.IEnumOptions|null);
+
+            /** EnumDescriptorProto reservedRange. */
+            public reservedRange: google.protobuf.EnumDescriptorProto.IEnumReservedRange[];
+
+            /** EnumDescriptorProto reservedName. */
+            public reservedName: string[];
+
+            /**
+             * Creates a new EnumDescriptorProto instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns EnumDescriptorProto instance
+             */
+            public static create(properties?: google.protobuf.IEnumDescriptorProto): google.protobuf.EnumDescriptorProto;
+
+            /**
+             * Encodes the specified EnumDescriptorProto message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages.
+             * @param message EnumDescriptorProto message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IEnumDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified EnumDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages.
+             * @param message EnumDescriptorProto message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IEnumDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes an EnumDescriptorProto message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns EnumDescriptorProto
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumDescriptorProto;
+
+            /**
+             * Decodes an EnumDescriptorProto message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns EnumDescriptorProto
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumDescriptorProto;
+
+            /**
+             * Verifies an EnumDescriptorProto message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates an EnumDescriptorProto message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns EnumDescriptorProto
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.EnumDescriptorProto;
+
+            /**
+             * Creates a plain object from an EnumDescriptorProto message. Also converts values to other types if specified.
+             * @param message EnumDescriptorProto
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.EnumDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this EnumDescriptorProto to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for EnumDescriptorProto
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        namespace EnumDescriptorProto {
+
+            /** Properties of an EnumReservedRange. */
+            interface IEnumReservedRange {
+
+                /** EnumReservedRange start */
+                start?: (number|null);
+
+                /** EnumReservedRange end */
+                end?: (number|null);
+            }
+
+            /** Represents an EnumReservedRange. */
+            class EnumReservedRange implements IEnumReservedRange {
+
+                /**
+                 * Constructs a new EnumReservedRange.
+                 * @param [properties] Properties to set
+                 */
+                constructor(properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange);
+
+                /** EnumReservedRange start. */
+                public start: number;
+
+                /** EnumReservedRange end. */
+                public end: number;
+
+                /**
+                 * Creates a new EnumReservedRange instance using the specified properties.
+                 * @param [properties] Properties to set
+                 * @returns EnumReservedRange instance
+                 */
+                public static create(properties?: google.protobuf.EnumDescriptorProto.IEnumReservedRange): google.protobuf.EnumDescriptorProto.EnumReservedRange;
+
+                /**
+                 * Encodes the specified EnumReservedRange message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages.
+                 * @param message EnumReservedRange message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encode(message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Encodes the specified EnumReservedRange message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages.
+                 * @param message EnumReservedRange message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encodeDelimited(message: google.protobuf.EnumDescriptorProto.IEnumReservedRange, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Decodes an EnumReservedRange message from the specified reader or buffer.
+                 * @param reader Reader or buffer to decode from
+                 * @param [length] Message length if known beforehand
+                 * @returns EnumReservedRange
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumDescriptorProto.EnumReservedRange;
+
+                /**
+                 * Decodes an EnumReservedRange message from the specified reader or buffer, length delimited.
+                 * @param reader Reader or buffer to decode from
+                 * @returns EnumReservedRange
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumDescriptorProto.EnumReservedRange;
+
+                /**
+                 * Verifies an EnumReservedRange message.
+                 * @param message Plain object to verify
+                 * @returns `null` if valid, otherwise the reason why it is not
+                 */
+                public static verify(message: { [k: string]: any }): (string|null);
+
+                /**
+                 * Creates an EnumReservedRange message from a plain object. Also converts values to their respective internal types.
+                 * @param object Plain object
+                 * @returns EnumReservedRange
+                 */
+                public static fromObject(object: { [k: string]: any }): google.protobuf.EnumDescriptorProto.EnumReservedRange;
+
+                /**
+                 * Creates a plain object from an EnumReservedRange message. Also converts values to other types if specified.
+                 * @param message EnumReservedRange
+                 * @param [options] Conversion options
+                 * @returns Plain object
+                 */
+                public static toObject(message: google.protobuf.EnumDescriptorProto.EnumReservedRange, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                /**
+                 * Converts this EnumReservedRange to JSON.
+                 * @returns JSON object
+                 */
+                public toJSON(): { [k: string]: any };
+
+                /**
+                 * Gets the default type url for EnumReservedRange
+                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns The default type url
+                 */
+                public static getTypeUrl(typeUrlPrefix?: string): string;
+            }
+        }
+
+        /** Properties of an EnumValueDescriptorProto. */
+        interface IEnumValueDescriptorProto {
+
+            /** EnumValueDescriptorProto name */
+            name?: (string|null);
+
+            /** EnumValueDescriptorProto number */
+            number?: (number|null);
+
+            /** EnumValueDescriptorProto options */
+            options?: (google.protobuf.IEnumValueOptions|null);
+        }
+
+        /** Represents an EnumValueDescriptorProto. */
+        class EnumValueDescriptorProto implements IEnumValueDescriptorProto {
+
+            /**
+             * Constructs a new EnumValueDescriptorProto.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IEnumValueDescriptorProto);
+
+            /** EnumValueDescriptorProto name. */
+            public name: string;
+
+            /** EnumValueDescriptorProto number. */
+            public number: number;
+
+            /** EnumValueDescriptorProto options. */
+            public options?: (google.protobuf.IEnumValueOptions|null);
+
+            /**
+             * Creates a new EnumValueDescriptorProto instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns EnumValueDescriptorProto instance
+             */
+            public static create(properties?: google.protobuf.IEnumValueDescriptorProto): google.protobuf.EnumValueDescriptorProto;
+
+            /**
+             * Encodes the specified EnumValueDescriptorProto message. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages.
+             * @param message EnumValueDescriptorProto message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IEnumValueDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified EnumValueDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages.
+             * @param message EnumValueDescriptorProto message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IEnumValueDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes an EnumValueDescriptorProto message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns EnumValueDescriptorProto
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumValueDescriptorProto;
+
+            /**
+             * Decodes an EnumValueDescriptorProto message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns EnumValueDescriptorProto
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumValueDescriptorProto;
+
+            /**
+             * Verifies an EnumValueDescriptorProto message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates an EnumValueDescriptorProto message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns EnumValueDescriptorProto
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.EnumValueDescriptorProto;
+
+            /**
+             * Creates a plain object from an EnumValueDescriptorProto message. Also converts values to other types if specified.
+             * @param message EnumValueDescriptorProto
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.EnumValueDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this EnumValueDescriptorProto to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for EnumValueDescriptorProto
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a ServiceDescriptorProto. */
+        interface IServiceDescriptorProto {
+
+            /** ServiceDescriptorProto name */
+            name?: (string|null);
+
+            /** ServiceDescriptorProto method */
+            method?: (google.protobuf.IMethodDescriptorProto[]|null);
+
+            /** ServiceDescriptorProto options */
+            options?: (google.protobuf.IServiceOptions|null);
+        }
+
+        /** Represents a ServiceDescriptorProto. */
+        class ServiceDescriptorProto implements IServiceDescriptorProto {
+
+            /**
+             * Constructs a new ServiceDescriptorProto.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IServiceDescriptorProto);
+
+            /** ServiceDescriptorProto name. */
+            public name: string;
+
+            /** ServiceDescriptorProto method. */
+            public method: google.protobuf.IMethodDescriptorProto[];
+
+            /** ServiceDescriptorProto options. */
+            public options?: (google.protobuf.IServiceOptions|null);
+
+            /**
+             * Creates a new ServiceDescriptorProto instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns ServiceDescriptorProto instance
+             */
+            public static create(properties?: google.protobuf.IServiceDescriptorProto): google.protobuf.ServiceDescriptorProto;
+
+            /**
+             * Encodes the specified ServiceDescriptorProto message. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages.
+             * @param message ServiceDescriptorProto message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IServiceDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified ServiceDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages.
+             * @param message ServiceDescriptorProto message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IServiceDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a ServiceDescriptorProto message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns ServiceDescriptorProto
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ServiceDescriptorProto;
+
+            /**
+             * Decodes a ServiceDescriptorProto message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns ServiceDescriptorProto
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ServiceDescriptorProto;
+
+            /**
+             * Verifies a ServiceDescriptorProto message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a ServiceDescriptorProto message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns ServiceDescriptorProto
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.ServiceDescriptorProto;
+
+            /**
+             * Creates a plain object from a ServiceDescriptorProto message. Also converts values to other types if specified.
+             * @param message ServiceDescriptorProto
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.ServiceDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this ServiceDescriptorProto to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for ServiceDescriptorProto
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a MethodDescriptorProto. */
+        interface IMethodDescriptorProto {
+
+            /** MethodDescriptorProto name */
+            name?: (string|null);
+
+            /** MethodDescriptorProto inputType */
+            inputType?: (string|null);
+
+            /** MethodDescriptorProto outputType */
+            outputType?: (string|null);
+
+            /** MethodDescriptorProto options */
+            options?: (google.protobuf.IMethodOptions|null);
+
+            /** MethodDescriptorProto clientStreaming */
+            clientStreaming?: (boolean|null);
+
+            /** MethodDescriptorProto serverStreaming */
+            serverStreaming?: (boolean|null);
+        }
+
+        /** Represents a MethodDescriptorProto. */
+        class MethodDescriptorProto implements IMethodDescriptorProto {
+
+            /**
+             * Constructs a new MethodDescriptorProto.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IMethodDescriptorProto);
+
+            /** MethodDescriptorProto name. */
+            public name: string;
+
+            /** MethodDescriptorProto inputType. */
+            public inputType: string;
+
+            /** MethodDescriptorProto outputType. */
+            public outputType: string;
+
+            /** MethodDescriptorProto options. */
+            public options?: (google.protobuf.IMethodOptions|null);
+
+            /** MethodDescriptorProto clientStreaming. */
+            public clientStreaming: boolean;
+
+            /** MethodDescriptorProto serverStreaming. */
+            public serverStreaming: boolean;
+
+            /**
+             * Creates a new MethodDescriptorProto instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns MethodDescriptorProto instance
+             */
+            public static create(properties?: google.protobuf.IMethodDescriptorProto): google.protobuf.MethodDescriptorProto;
+
+            /**
+             * Encodes the specified MethodDescriptorProto message. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages.
+             * @param message MethodDescriptorProto message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IMethodDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified MethodDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages.
+             * @param message MethodDescriptorProto message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IMethodDescriptorProto, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a MethodDescriptorProto message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns MethodDescriptorProto
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MethodDescriptorProto;
+
+            /**
+             * Decodes a MethodDescriptorProto message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns MethodDescriptorProto
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MethodDescriptorProto;
+
+            /**
+             * Verifies a MethodDescriptorProto message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a MethodDescriptorProto message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns MethodDescriptorProto
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.MethodDescriptorProto;
+
+            /**
+             * Creates a plain object from a MethodDescriptorProto message. Also converts values to other types if specified.
+             * @param message MethodDescriptorProto
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.MethodDescriptorProto, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this MethodDescriptorProto to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for MethodDescriptorProto
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a FileOptions. */
+        interface IFileOptions {
+
+            /** FileOptions javaPackage */
+            javaPackage?: (string|null);
+
+            /** FileOptions javaOuterClassname */
+            javaOuterClassname?: (string|null);
+
+            /** FileOptions javaMultipleFiles */
+            javaMultipleFiles?: (boolean|null);
+
+            /** FileOptions javaGenerateEqualsAndHash */
+            javaGenerateEqualsAndHash?: (boolean|null);
+
+            /** FileOptions javaStringCheckUtf8 */
+            javaStringCheckUtf8?: (boolean|null);
+
+            /** FileOptions optimizeFor */
+            optimizeFor?: (google.protobuf.FileOptions.OptimizeMode|keyof typeof google.protobuf.FileOptions.OptimizeMode|null);
+
+            /** FileOptions goPackage */
+            goPackage?: (string|null);
+
+            /** FileOptions ccGenericServices */
+            ccGenericServices?: (boolean|null);
+
+            /** FileOptions javaGenericServices */
+            javaGenericServices?: (boolean|null);
+
+            /** FileOptions pyGenericServices */
+            pyGenericServices?: (boolean|null);
+
+            /** FileOptions deprecated */
+            deprecated?: (boolean|null);
+
+            /** FileOptions ccEnableArenas */
+            ccEnableArenas?: (boolean|null);
+
+            /** FileOptions objcClassPrefix */
+            objcClassPrefix?: (string|null);
+
+            /** FileOptions csharpNamespace */
+            csharpNamespace?: (string|null);
+
+            /** FileOptions swiftPrefix */
+            swiftPrefix?: (string|null);
+
+            /** FileOptions phpClassPrefix */
+            phpClassPrefix?: (string|null);
+
+            /** FileOptions phpNamespace */
+            phpNamespace?: (string|null);
+
+            /** FileOptions phpMetadataNamespace */
+            phpMetadataNamespace?: (string|null);
+
+            /** FileOptions rubyPackage */
+            rubyPackage?: (string|null);
+
+            /** FileOptions features */
+            features?: (google.protobuf.IFeatureSet|null);
+
+            /** FileOptions uninterpretedOption */
+            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
+        }
+
+        /** Represents a FileOptions. */
+        class FileOptions implements IFileOptions {
+
+            /**
+             * Constructs a new FileOptions.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IFileOptions);
+
+            /** FileOptions javaPackage. */
+            public javaPackage: string;
+
+            /** FileOptions javaOuterClassname. */
+            public javaOuterClassname: string;
+
+            /** FileOptions javaMultipleFiles. */
+            public javaMultipleFiles: boolean;
+
+            /** FileOptions javaGenerateEqualsAndHash. */
+            public javaGenerateEqualsAndHash: boolean;
+
+            /** FileOptions javaStringCheckUtf8. */
+            public javaStringCheckUtf8: boolean;
+
+            /** FileOptions optimizeFor. */
+            public optimizeFor: (google.protobuf.FileOptions.OptimizeMode|keyof typeof google.protobuf.FileOptions.OptimizeMode);
+
+            /** FileOptions goPackage. */
+            public goPackage: string;
+
+            /** FileOptions ccGenericServices. */
+            public ccGenericServices: boolean;
+
+            /** FileOptions javaGenericServices. */
+            public javaGenericServices: boolean;
+
+            /** FileOptions pyGenericServices. */
+            public pyGenericServices: boolean;
+
+            /** FileOptions deprecated. */
+            public deprecated: boolean;
+
+            /** FileOptions ccEnableArenas. */
+            public ccEnableArenas: boolean;
+
+            /** FileOptions objcClassPrefix. */
+            public objcClassPrefix: string;
+
+            /** FileOptions csharpNamespace. */
+            public csharpNamespace: string;
+
+            /** FileOptions swiftPrefix. */
+            public swiftPrefix: string;
+
+            /** FileOptions phpClassPrefix. */
+            public phpClassPrefix: string;
+
+            /** FileOptions phpNamespace. */
+            public phpNamespace: string;
+
+            /** FileOptions phpMetadataNamespace. */
+            public phpMetadataNamespace: string;
+
+            /** FileOptions rubyPackage. */
+            public rubyPackage: string;
+
+            /** FileOptions features. */
+            public features?: (google.protobuf.IFeatureSet|null);
+
+            /** FileOptions uninterpretedOption. */
+            public uninterpretedOption: google.protobuf.IUninterpretedOption[];
+
+            /**
+             * Creates a new FileOptions instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns FileOptions instance
+             */
+            public static create(properties?: google.protobuf.IFileOptions): google.protobuf.FileOptions;
+
+            /**
+             * Encodes the specified FileOptions message. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages.
+             * @param message FileOptions message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IFileOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified FileOptions message, length delimited. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages.
+             * @param message FileOptions message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IFileOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a FileOptions message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns FileOptions
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileOptions;
+
+            /**
+             * Decodes a FileOptions message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns FileOptions
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileOptions;
+
+            /**
+             * Verifies a FileOptions message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a FileOptions message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns FileOptions
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.FileOptions;
+
+            /**
+             * Creates a plain object from a FileOptions message. Also converts values to other types if specified.
+             * @param message FileOptions
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.FileOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this FileOptions to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for FileOptions
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        namespace FileOptions {
+
+            /** OptimizeMode enum. */
+            enum OptimizeMode {
+                SPEED = 1,
+                CODE_SIZE = 2,
+                LITE_RUNTIME = 3
+            }
+        }
+
+        /** Properties of a MessageOptions. */
+        interface IMessageOptions {
+
+            /** MessageOptions messageSetWireFormat */
+            messageSetWireFormat?: (boolean|null);
+
+            /** MessageOptions noStandardDescriptorAccessor */
+            noStandardDescriptorAccessor?: (boolean|null);
+
+            /** MessageOptions deprecated */
+            deprecated?: (boolean|null);
+
+            /** MessageOptions mapEntry */
+            mapEntry?: (boolean|null);
+
+            /** MessageOptions deprecatedLegacyJsonFieldConflicts */
+            deprecatedLegacyJsonFieldConflicts?: (boolean|null);
+
+            /** MessageOptions features */
+            features?: (google.protobuf.IFeatureSet|null);
+
+            /** MessageOptions uninterpretedOption */
+            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
+        }
+
+        /** Represents a MessageOptions. */
+        class MessageOptions implements IMessageOptions {
+
+            /**
+             * Constructs a new MessageOptions.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IMessageOptions);
+
+            /** MessageOptions messageSetWireFormat. */
+            public messageSetWireFormat: boolean;
+
+            /** MessageOptions noStandardDescriptorAccessor. */
+            public noStandardDescriptorAccessor: boolean;
+
+            /** MessageOptions deprecated. */
+            public deprecated: boolean;
+
+            /** MessageOptions mapEntry. */
+            public mapEntry: boolean;
+
+            /** MessageOptions deprecatedLegacyJsonFieldConflicts. */
+            public deprecatedLegacyJsonFieldConflicts: boolean;
+
+            /** MessageOptions features. */
+            public features?: (google.protobuf.IFeatureSet|null);
+
+            /** MessageOptions uninterpretedOption. */
+            public uninterpretedOption: google.protobuf.IUninterpretedOption[];
+
+            /**
+             * Creates a new MessageOptions instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns MessageOptions instance
+             */
+            public static create(properties?: google.protobuf.IMessageOptions): google.protobuf.MessageOptions;
+
+            /**
+             * Encodes the specified MessageOptions message. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages.
+             * @param message MessageOptions message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IMessageOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified MessageOptions message, length delimited. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages.
+             * @param message MessageOptions message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IMessageOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a MessageOptions message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns MessageOptions
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MessageOptions;
+
+            /**
+             * Decodes a MessageOptions message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns MessageOptions
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MessageOptions;
+
+            /**
+             * Verifies a MessageOptions message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a MessageOptions message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns MessageOptions
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.MessageOptions;
+
+            /**
+             * Creates a plain object from a MessageOptions message. Also converts values to other types if specified.
+             * @param message MessageOptions
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.MessageOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this MessageOptions to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for MessageOptions
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a FieldOptions. */
+        interface IFieldOptions {
+
+            /** FieldOptions ctype */
+            ctype?: (google.protobuf.FieldOptions.CType|keyof typeof google.protobuf.FieldOptions.CType|null);
+
+            /** FieldOptions packed */
+            packed?: (boolean|null);
+
+            /** FieldOptions jstype */
+            jstype?: (google.protobuf.FieldOptions.JSType|keyof typeof google.protobuf.FieldOptions.JSType|null);
+
+            /** FieldOptions lazy */
+            lazy?: (boolean|null);
+
+            /** FieldOptions unverifiedLazy */
+            unverifiedLazy?: (boolean|null);
+
+            /** FieldOptions deprecated */
+            deprecated?: (boolean|null);
+
+            /** FieldOptions weak */
+            weak?: (boolean|null);
+
+            /** FieldOptions debugRedact */
+            debugRedact?: (boolean|null);
+
+            /** FieldOptions retention */
+            retention?: (google.protobuf.FieldOptions.OptionRetention|keyof typeof google.protobuf.FieldOptions.OptionRetention|null);
+
+            /** FieldOptions targets */
+            targets?: (google.protobuf.FieldOptions.OptionTargetType[]|null);
+
+            /** FieldOptions editionDefaults */
+            editionDefaults?: (google.protobuf.FieldOptions.IEditionDefault[]|null);
+
+            /** FieldOptions features */
+            features?: (google.protobuf.IFeatureSet|null);
+
+            /** FieldOptions uninterpretedOption */
+            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
+
+            /** FieldOptions .google.api.fieldBehavior */
+            ".google.api.fieldBehavior"?: (google.api.FieldBehavior[]|null);
+        }
+
+        /** Represents a FieldOptions. */
+        class FieldOptions implements IFieldOptions {
+
+            /**
+             * Constructs a new FieldOptions.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IFieldOptions);
+
+            /** FieldOptions ctype. */
+            public ctype: (google.protobuf.FieldOptions.CType|keyof typeof google.protobuf.FieldOptions.CType);
+
+            /** FieldOptions packed. */
+            public packed: boolean;
+
+            /** FieldOptions jstype. */
+            public jstype: (google.protobuf.FieldOptions.JSType|keyof typeof google.protobuf.FieldOptions.JSType);
+
+            /** FieldOptions lazy. */
+            public lazy: boolean;
+
+            /** FieldOptions unverifiedLazy. */
+            public unverifiedLazy: boolean;
+
+            /** FieldOptions deprecated. */
+            public deprecated: boolean;
+
+            /** FieldOptions weak. */
+            public weak: boolean;
+
+            /** FieldOptions debugRedact. */
+            public debugRedact: boolean;
+
+            /** FieldOptions retention. */
+            public retention: (google.protobuf.FieldOptions.OptionRetention|keyof typeof google.protobuf.FieldOptions.OptionRetention);
+
+            /** FieldOptions targets. */
+            public targets: google.protobuf.FieldOptions.OptionTargetType[];
+
+            /** FieldOptions editionDefaults. */
+            public editionDefaults: google.protobuf.FieldOptions.IEditionDefault[];
+
+            /** FieldOptions features. */
+            public features?: (google.protobuf.IFeatureSet|null);
+
+            /** FieldOptions uninterpretedOption. */
+            public uninterpretedOption: google.protobuf.IUninterpretedOption[];
+
+            /**
+             * Creates a new FieldOptions instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns FieldOptions instance
+             */
+            public static create(properties?: google.protobuf.IFieldOptions): google.protobuf.FieldOptions;
+
+            /**
+             * Encodes the specified FieldOptions message. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages.
+             * @param message FieldOptions message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IFieldOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified FieldOptions message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages.
+             * @param message FieldOptions message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IFieldOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a FieldOptions message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns FieldOptions
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldOptions;
+
+            /**
+             * Decodes a FieldOptions message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns FieldOptions
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldOptions;
+
+            /**
+             * Verifies a FieldOptions message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a FieldOptions message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns FieldOptions
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.FieldOptions;
+
+            /**
+             * Creates a plain object from a FieldOptions message. Also converts values to other types if specified.
+             * @param message FieldOptions
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.FieldOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this FieldOptions to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for FieldOptions
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        namespace FieldOptions {
+
+            /** CType enum. */
+            enum CType {
+                STRING = 0,
+                CORD = 1,
+                STRING_PIECE = 2
+            }
+
+            /** JSType enum. */
+            enum JSType {
+                JS_NORMAL = 0,
+                JS_STRING = 1,
+                JS_NUMBER = 2
+            }
+
+            /** OptionRetention enum. */
+            enum OptionRetention {
+                RETENTION_UNKNOWN = 0,
+                RETENTION_RUNTIME = 1,
+                RETENTION_SOURCE = 2
+            }
+
+            /** OptionTargetType enum. */
+            enum OptionTargetType {
+                TARGET_TYPE_UNKNOWN = 0,
+                TARGET_TYPE_FILE = 1,
+                TARGET_TYPE_EXTENSION_RANGE = 2,
+                TARGET_TYPE_MESSAGE = 3,
+                TARGET_TYPE_FIELD = 4,
+                TARGET_TYPE_ONEOF = 5,
+                TARGET_TYPE_ENUM = 6,
+                TARGET_TYPE_ENUM_ENTRY = 7,
+                TARGET_TYPE_SERVICE = 8,
+                TARGET_TYPE_METHOD = 9
+            }
+
+            /** Properties of an EditionDefault. */
+            interface IEditionDefault {
+
+                /** EditionDefault edition */
+                edition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
+
+                /** EditionDefault value */
+                value?: (string|null);
+            }
+
+            /** Represents an EditionDefault. */
+            class EditionDefault implements IEditionDefault {
+
+                /**
+                 * Constructs a new EditionDefault.
+                 * @param [properties] Properties to set
+                 */
+                constructor(properties?: google.protobuf.FieldOptions.IEditionDefault);
+
+                /** EditionDefault edition. */
+                public edition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);
+
+                /** EditionDefault value. */
+                public value: string;
+
+                /**
+                 * Creates a new EditionDefault instance using the specified properties.
+                 * @param [properties] Properties to set
+                 * @returns EditionDefault instance
+                 */
+                public static create(properties?: google.protobuf.FieldOptions.IEditionDefault): google.protobuf.FieldOptions.EditionDefault;
+
+                /**
+                 * Encodes the specified EditionDefault message. Does not implicitly {@link google.protobuf.FieldOptions.EditionDefault.verify|verify} messages.
+                 * @param message EditionDefault message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encode(message: google.protobuf.FieldOptions.IEditionDefault, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Encodes the specified EditionDefault message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.EditionDefault.verify|verify} messages.
+                 * @param message EditionDefault message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encodeDelimited(message: google.protobuf.FieldOptions.IEditionDefault, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Decodes an EditionDefault message from the specified reader or buffer.
+                 * @param reader Reader or buffer to decode from
+                 * @param [length] Message length if known beforehand
+                 * @returns EditionDefault
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldOptions.EditionDefault;
+
+                /**
+                 * Decodes an EditionDefault message from the specified reader or buffer, length delimited.
+                 * @param reader Reader or buffer to decode from
+                 * @returns EditionDefault
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldOptions.EditionDefault;
+
+                /**
+                 * Verifies an EditionDefault message.
+                 * @param message Plain object to verify
+                 * @returns `null` if valid, otherwise the reason why it is not
+                 */
+                public static verify(message: { [k: string]: any }): (string|null);
+
+                /**
+                 * Creates an EditionDefault message from a plain object. Also converts values to their respective internal types.
+                 * @param object Plain object
+                 * @returns EditionDefault
+                 */
+                public static fromObject(object: { [k: string]: any }): google.protobuf.FieldOptions.EditionDefault;
+
+                /**
+                 * Creates a plain object from an EditionDefault message. Also converts values to other types if specified.
+                 * @param message EditionDefault
+                 * @param [options] Conversion options
+                 * @returns Plain object
+                 */
+                public static toObject(message: google.protobuf.FieldOptions.EditionDefault, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                /**
+                 * Converts this EditionDefault to JSON.
+                 * @returns JSON object
+                 */
+                public toJSON(): { [k: string]: any };
+
+                /**
+                 * Gets the default type url for EditionDefault
+                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns The default type url
+                 */
+                public static getTypeUrl(typeUrlPrefix?: string): string;
+            }
+        }
+
+        /** Properties of an OneofOptions. */
+        interface IOneofOptions {
+
+            /** OneofOptions features */
+            features?: (google.protobuf.IFeatureSet|null);
+
+            /** OneofOptions uninterpretedOption */
+            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
+        }
+
+        /** Represents an OneofOptions. */
+        class OneofOptions implements IOneofOptions {
+
+            /**
+             * Constructs a new OneofOptions.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IOneofOptions);
+
+            /** OneofOptions features. */
+            public features?: (google.protobuf.IFeatureSet|null);
+
+            /** OneofOptions uninterpretedOption. */
+            public uninterpretedOption: google.protobuf.IUninterpretedOption[];
+
+            /**
+             * Creates a new OneofOptions instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns OneofOptions instance
+             */
+            public static create(properties?: google.protobuf.IOneofOptions): google.protobuf.OneofOptions;
+
+            /**
+             * Encodes the specified OneofOptions message. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages.
+             * @param message OneofOptions message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IOneofOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified OneofOptions message, length delimited. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages.
+             * @param message OneofOptions message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IOneofOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes an OneofOptions message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns OneofOptions
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.OneofOptions;
+
+            /**
+             * Decodes an OneofOptions message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns OneofOptions
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.OneofOptions;
+
+            /**
+             * Verifies an OneofOptions message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates an OneofOptions message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns OneofOptions
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.OneofOptions;
+
+            /**
+             * Creates a plain object from an OneofOptions message. Also converts values to other types if specified.
+             * @param message OneofOptions
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.OneofOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this OneofOptions to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for OneofOptions
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of an EnumOptions. */
+        interface IEnumOptions {
+
+            /** EnumOptions allowAlias */
+            allowAlias?: (boolean|null);
+
+            /** EnumOptions deprecated */
+            deprecated?: (boolean|null);
+
+            /** EnumOptions deprecatedLegacyJsonFieldConflicts */
+            deprecatedLegacyJsonFieldConflicts?: (boolean|null);
+
+            /** EnumOptions features */
+            features?: (google.protobuf.IFeatureSet|null);
+
+            /** EnumOptions uninterpretedOption */
+            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
+        }
+
+        /** Represents an EnumOptions. */
+        class EnumOptions implements IEnumOptions {
+
+            /**
+             * Constructs a new EnumOptions.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IEnumOptions);
+
+            /** EnumOptions allowAlias. */
+            public allowAlias: boolean;
+
+            /** EnumOptions deprecated. */
+            public deprecated: boolean;
+
+            /** EnumOptions deprecatedLegacyJsonFieldConflicts. */
+            public deprecatedLegacyJsonFieldConflicts: boolean;
+
+            /** EnumOptions features. */
+            public features?: (google.protobuf.IFeatureSet|null);
+
+            /** EnumOptions uninterpretedOption. */
+            public uninterpretedOption: google.protobuf.IUninterpretedOption[];
+
+            /**
+             * Creates a new EnumOptions instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns EnumOptions instance
+             */
+            public static create(properties?: google.protobuf.IEnumOptions): google.protobuf.EnumOptions;
+
+            /**
+             * Encodes the specified EnumOptions message. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages.
+             * @param message EnumOptions message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IEnumOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified EnumOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages.
+             * @param message EnumOptions message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IEnumOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes an EnumOptions message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns EnumOptions
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumOptions;
+
+            /**
+             * Decodes an EnumOptions message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns EnumOptions
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumOptions;
+
+            /**
+             * Verifies an EnumOptions message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates an EnumOptions message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns EnumOptions
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.EnumOptions;
+
+            /**
+             * Creates a plain object from an EnumOptions message. Also converts values to other types if specified.
+             * @param message EnumOptions
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.EnumOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this EnumOptions to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for EnumOptions
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of an EnumValueOptions. */
+        interface IEnumValueOptions {
+
+            /** EnumValueOptions deprecated */
+            deprecated?: (boolean|null);
+
+            /** EnumValueOptions features */
+            features?: (google.protobuf.IFeatureSet|null);
+
+            /** EnumValueOptions debugRedact */
+            debugRedact?: (boolean|null);
+
+            /** EnumValueOptions uninterpretedOption */
+            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
+        }
+
+        /** Represents an EnumValueOptions. */
+        class EnumValueOptions implements IEnumValueOptions {
+
+            /**
+             * Constructs a new EnumValueOptions.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IEnumValueOptions);
+
+            /** EnumValueOptions deprecated. */
+            public deprecated: boolean;
+
+            /** EnumValueOptions features. */
+            public features?: (google.protobuf.IFeatureSet|null);
+
+            /** EnumValueOptions debugRedact. */
+            public debugRedact: boolean;
+
+            /** EnumValueOptions uninterpretedOption. */
+            public uninterpretedOption: google.protobuf.IUninterpretedOption[];
+
+            /**
+             * Creates a new EnumValueOptions instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns EnumValueOptions instance
+             */
+            public static create(properties?: google.protobuf.IEnumValueOptions): google.protobuf.EnumValueOptions;
+
+            /**
+             * Encodes the specified EnumValueOptions message. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages.
+             * @param message EnumValueOptions message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IEnumValueOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified EnumValueOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages.
+             * @param message EnumValueOptions message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IEnumValueOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes an EnumValueOptions message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns EnumValueOptions
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumValueOptions;
+
+            /**
+             * Decodes an EnumValueOptions message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns EnumValueOptions
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumValueOptions;
+
+            /**
+             * Verifies an EnumValueOptions message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates an EnumValueOptions message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns EnumValueOptions
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.EnumValueOptions;
+
+            /**
+             * Creates a plain object from an EnumValueOptions message. Also converts values to other types if specified.
+             * @param message EnumValueOptions
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.EnumValueOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this EnumValueOptions to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for EnumValueOptions
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a ServiceOptions. */
+        interface IServiceOptions {
+
+            /** ServiceOptions features */
+            features?: (google.protobuf.IFeatureSet|null);
+
+            /** ServiceOptions deprecated */
+            deprecated?: (boolean|null);
+
+            /** ServiceOptions uninterpretedOption */
+            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
+
+            /** ServiceOptions .google.api.defaultHost */
+            ".google.api.defaultHost"?: (string|null);
+
+            /** ServiceOptions .google.api.oauthScopes */
+            ".google.api.oauthScopes"?: (string|null);
+
+            /** ServiceOptions .google.api.apiVersion */
+            ".google.api.apiVersion"?: (string|null);
+        }
+
+        /** Represents a ServiceOptions. */
+        class ServiceOptions implements IServiceOptions {
+
+            /**
+             * Constructs a new ServiceOptions.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IServiceOptions);
+
+            /** ServiceOptions features. */
+            public features?: (google.protobuf.IFeatureSet|null);
+
+            /** ServiceOptions deprecated. */
+            public deprecated: boolean;
+
+            /** ServiceOptions uninterpretedOption. */
+            public uninterpretedOption: google.protobuf.IUninterpretedOption[];
+
+            /**
+             * Creates a new ServiceOptions instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns ServiceOptions instance
+             */
+            public static create(properties?: google.protobuf.IServiceOptions): google.protobuf.ServiceOptions;
+
+            /**
+             * Encodes the specified ServiceOptions message. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages.
+             * @param message ServiceOptions message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IServiceOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified ServiceOptions message, length delimited. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages.
+             * @param message ServiceOptions message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IServiceOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a ServiceOptions message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns ServiceOptions
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ServiceOptions;
+
+            /**
+             * Decodes a ServiceOptions message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns ServiceOptions
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ServiceOptions;
+
+            /**
+             * Verifies a ServiceOptions message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a ServiceOptions message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns ServiceOptions
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.ServiceOptions;
+
+            /**
+             * Creates a plain object from a ServiceOptions message. Also converts values to other types if specified.
+             * @param message ServiceOptions
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.ServiceOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this ServiceOptions to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for ServiceOptions
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a MethodOptions. */
+        interface IMethodOptions {
+
+            /** MethodOptions deprecated */
+            deprecated?: (boolean|null);
+
+            /** MethodOptions idempotencyLevel */
+            idempotencyLevel?: (google.protobuf.MethodOptions.IdempotencyLevel|keyof typeof google.protobuf.MethodOptions.IdempotencyLevel|null);
+
+            /** MethodOptions features */
+            features?: (google.protobuf.IFeatureSet|null);
+
+            /** MethodOptions uninterpretedOption */
+            uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
+
+            /** MethodOptions .google.api.http */
+            ".google.api.http"?: (google.api.IHttpRule|null);
+
+            /** MethodOptions .google.api.methodSignature */
+            ".google.api.methodSignature"?: (string[]|null);
+        }
+
+        /** Represents a MethodOptions. */
+        class MethodOptions implements IMethodOptions {
+
+            /**
+             * Constructs a new MethodOptions.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IMethodOptions);
+
+            /** MethodOptions deprecated. */
+            public deprecated: boolean;
+
+            /** MethodOptions idempotencyLevel. */
+            public idempotencyLevel: (google.protobuf.MethodOptions.IdempotencyLevel|keyof typeof google.protobuf.MethodOptions.IdempotencyLevel);
+
+            /** MethodOptions features. */
+            public features?: (google.protobuf.IFeatureSet|null);
+
+            /** MethodOptions uninterpretedOption. */
+            public uninterpretedOption: google.protobuf.IUninterpretedOption[];
+
+            /**
+             * Creates a new MethodOptions instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns MethodOptions instance
+             */
+            public static create(properties?: google.protobuf.IMethodOptions): google.protobuf.MethodOptions;
+
+            /**
+             * Encodes the specified MethodOptions message. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages.
+             * @param message MethodOptions message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IMethodOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified MethodOptions message, length delimited. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages.
+             * @param message MethodOptions message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IMethodOptions, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a MethodOptions message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns MethodOptions
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MethodOptions;
+
+            /**
+             * Decodes a MethodOptions message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns MethodOptions
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MethodOptions;
+
+            /**
+             * Verifies a MethodOptions message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a MethodOptions message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns MethodOptions
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.MethodOptions;
+
+            /**
+             * Creates a plain object from a MethodOptions message. Also converts values to other types if specified.
+             * @param message MethodOptions
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.MethodOptions, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this MethodOptions to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for MethodOptions
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        namespace MethodOptions {
+
+            /** IdempotencyLevel enum. */
+            enum IdempotencyLevel {
+                IDEMPOTENCY_UNKNOWN = 0,
+                NO_SIDE_EFFECTS = 1,
+                IDEMPOTENT = 2
+            }
+        }
+
+        /** Properties of an UninterpretedOption. */
+        interface IUninterpretedOption {
+
+            /** UninterpretedOption name */
+            name?: (google.protobuf.UninterpretedOption.INamePart[]|null);
+
+            /** UninterpretedOption identifierValue */
+            identifierValue?: (string|null);
+
+            /** UninterpretedOption positiveIntValue */
+            positiveIntValue?: (number|Long|string|null);
+
+            /** UninterpretedOption negativeIntValue */
+            negativeIntValue?: (number|Long|string|null);
+
+            /** UninterpretedOption doubleValue */
+            doubleValue?: (number|null);
+
+            /** UninterpretedOption stringValue */
+            stringValue?: (Uint8Array|Buffer|string|null);
+
+            /** UninterpretedOption aggregateValue */
+            aggregateValue?: (string|null);
+        }
+
+        /** Represents an UninterpretedOption. */
+        class UninterpretedOption implements IUninterpretedOption {
+
+            /**
+             * Constructs a new UninterpretedOption.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IUninterpretedOption);
+
+            /** UninterpretedOption name. */
+            public name: google.protobuf.UninterpretedOption.INamePart[];
+
+            /** UninterpretedOption identifierValue. */
+            public identifierValue: string;
+
+            /** UninterpretedOption positiveIntValue. */
+            public positiveIntValue: (number|Long|string);
+
+            /** UninterpretedOption negativeIntValue. */
+            public negativeIntValue: (number|Long|string);
+
+            /** UninterpretedOption doubleValue. */
+            public doubleValue: number;
+
+            /** UninterpretedOption stringValue. */
+            public stringValue: (Uint8Array|Buffer|string);
+
+            /** UninterpretedOption aggregateValue. */
+            public aggregateValue: string;
+
+            /**
+             * Creates a new UninterpretedOption instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns UninterpretedOption instance
+             */
+            public static create(properties?: google.protobuf.IUninterpretedOption): google.protobuf.UninterpretedOption;
+
+            /**
+             * Encodes the specified UninterpretedOption message. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages.
+             * @param message UninterpretedOption message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IUninterpretedOption, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified UninterpretedOption message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages.
+             * @param message UninterpretedOption message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IUninterpretedOption, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes an UninterpretedOption message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns UninterpretedOption
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UninterpretedOption;
+
+            /**
+             * Decodes an UninterpretedOption message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns UninterpretedOption
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UninterpretedOption;
+
+            /**
+             * Verifies an UninterpretedOption message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates an UninterpretedOption message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns UninterpretedOption
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.UninterpretedOption;
+
+            /**
+             * Creates a plain object from an UninterpretedOption message. Also converts values to other types if specified.
+             * @param message UninterpretedOption
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.UninterpretedOption, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this UninterpretedOption to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for UninterpretedOption
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        namespace UninterpretedOption {
+
+            /** Properties of a NamePart. */
+            interface INamePart {
+
+                /** NamePart namePart */
+                namePart: string;
+
+                /** NamePart isExtension */
+                isExtension: boolean;
+            }
+
+            /** Represents a NamePart. */
+            class NamePart implements INamePart {
+
+                /**
+                 * Constructs a new NamePart.
+                 * @param [properties] Properties to set
+                 */
+                constructor(properties?: google.protobuf.UninterpretedOption.INamePart);
+
+                /** NamePart namePart. */
+                public namePart: string;
+
+                /** NamePart isExtension. */
+                public isExtension: boolean;
+
+                /**
+                 * Creates a new NamePart instance using the specified properties.
+                 * @param [properties] Properties to set
+                 * @returns NamePart instance
+                 */
+                public static create(properties?: google.protobuf.UninterpretedOption.INamePart): google.protobuf.UninterpretedOption.NamePart;
+
+                /**
+                 * Encodes the specified NamePart message. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages.
+                 * @param message NamePart message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encode(message: google.protobuf.UninterpretedOption.INamePart, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Encodes the specified NamePart message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages.
+                 * @param message NamePart message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encodeDelimited(message: google.protobuf.UninterpretedOption.INamePart, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Decodes a NamePart message from the specified reader or buffer.
+                 * @param reader Reader or buffer to decode from
+                 * @param [length] Message length if known beforehand
+                 * @returns NamePart
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UninterpretedOption.NamePart;
+
+                /**
+                 * Decodes a NamePart message from the specified reader or buffer, length delimited.
+                 * @param reader Reader or buffer to decode from
+                 * @returns NamePart
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UninterpretedOption.NamePart;
+
+                /**
+                 * Verifies a NamePart message.
+                 * @param message Plain object to verify
+                 * @returns `null` if valid, otherwise the reason why it is not
+                 */
+                public static verify(message: { [k: string]: any }): (string|null);
+
+                /**
+                 * Creates a NamePart message from a plain object. Also converts values to their respective internal types.
+                 * @param object Plain object
+                 * @returns NamePart
+                 */
+                public static fromObject(object: { [k: string]: any }): google.protobuf.UninterpretedOption.NamePart;
+
+                /**
+                 * Creates a plain object from a NamePart message. Also converts values to other types if specified.
+                 * @param message NamePart
+                 * @param [options] Conversion options
+                 * @returns Plain object
+                 */
+                public static toObject(message: google.protobuf.UninterpretedOption.NamePart, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                /**
+                 * Converts this NamePart to JSON.
+                 * @returns JSON object
+                 */
+                public toJSON(): { [k: string]: any };
+
+                /**
+                 * Gets the default type url for NamePart
+                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns The default type url
+                 */
+                public static getTypeUrl(typeUrlPrefix?: string): string;
+            }
+        }
+
+        /** Properties of a FeatureSet. */
+        interface IFeatureSet {
+
+            /** FeatureSet fieldPresence */
+            fieldPresence?: (google.protobuf.FeatureSet.FieldPresence|keyof typeof google.protobuf.FeatureSet.FieldPresence|null);
+
+            /** FeatureSet enumType */
+            enumType?: (google.protobuf.FeatureSet.EnumType|keyof typeof google.protobuf.FeatureSet.EnumType|null);
+
+            /** FeatureSet repeatedFieldEncoding */
+            repeatedFieldEncoding?: (google.protobuf.FeatureSet.RepeatedFieldEncoding|keyof typeof google.protobuf.FeatureSet.RepeatedFieldEncoding|null);
+
+            /** FeatureSet utf8Validation */
+            utf8Validation?: (google.protobuf.FeatureSet.Utf8Validation|keyof typeof google.protobuf.FeatureSet.Utf8Validation|null);
+
+            /** FeatureSet messageEncoding */
+            messageEncoding?: (google.protobuf.FeatureSet.MessageEncoding|keyof typeof google.protobuf.FeatureSet.MessageEncoding|null);
+
+            /** FeatureSet jsonFormat */
+            jsonFormat?: (google.protobuf.FeatureSet.JsonFormat|keyof typeof google.protobuf.FeatureSet.JsonFormat|null);
+        }
+
+        /** Represents a FeatureSet. */
+        class FeatureSet implements IFeatureSet {
+
+            /**
+             * Constructs a new FeatureSet.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IFeatureSet);
+
+            /** FeatureSet fieldPresence. */
+            public fieldPresence: (google.protobuf.FeatureSet.FieldPresence|keyof typeof google.protobuf.FeatureSet.FieldPresence);
+
+            /** FeatureSet enumType. */
+            public enumType: (google.protobuf.FeatureSet.EnumType|keyof typeof google.protobuf.FeatureSet.EnumType);
+
+            /** FeatureSet repeatedFieldEncoding. */
+            public repeatedFieldEncoding: (google.protobuf.FeatureSet.RepeatedFieldEncoding|keyof typeof google.protobuf.FeatureSet.RepeatedFieldEncoding);
+
+            /** FeatureSet utf8Validation. */
+            public utf8Validation: (google.protobuf.FeatureSet.Utf8Validation|keyof typeof google.protobuf.FeatureSet.Utf8Validation);
+
+            /** FeatureSet messageEncoding. */
+            public messageEncoding: (google.protobuf.FeatureSet.MessageEncoding|keyof typeof google.protobuf.FeatureSet.MessageEncoding);
+
+            /** FeatureSet jsonFormat. */
+            public jsonFormat: (google.protobuf.FeatureSet.JsonFormat|keyof typeof google.protobuf.FeatureSet.JsonFormat);
+
+            /**
+             * Creates a new FeatureSet instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns FeatureSet instance
+             */
+            public static create(properties?: google.protobuf.IFeatureSet): google.protobuf.FeatureSet;
+
+            /**
+             * Encodes the specified FeatureSet message. Does not implicitly {@link google.protobuf.FeatureSet.verify|verify} messages.
+             * @param message FeatureSet message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IFeatureSet, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified FeatureSet message, length delimited. Does not implicitly {@link google.protobuf.FeatureSet.verify|verify} messages.
+             * @param message FeatureSet message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IFeatureSet, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a FeatureSet message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns FeatureSet
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FeatureSet;
+
+            /**
+             * Decodes a FeatureSet message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns FeatureSet
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FeatureSet;
+
+            /**
+             * Verifies a FeatureSet message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a FeatureSet message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns FeatureSet
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.FeatureSet;
+
+            /**
+             * Creates a plain object from a FeatureSet message. Also converts values to other types if specified.
+             * @param message FeatureSet
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.FeatureSet, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this FeatureSet to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for FeatureSet
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        namespace FeatureSet {
+
+            /** FieldPresence enum. */
+            enum FieldPresence {
+                FIELD_PRESENCE_UNKNOWN = 0,
+                EXPLICIT = 1,
+                IMPLICIT = 2,
+                LEGACY_REQUIRED = 3
+            }
+
+            /** EnumType enum. */
+            enum EnumType {
+                ENUM_TYPE_UNKNOWN = 0,
+                OPEN = 1,
+                CLOSED = 2
+            }
+
+            /** RepeatedFieldEncoding enum. */
+            enum RepeatedFieldEncoding {
+                REPEATED_FIELD_ENCODING_UNKNOWN = 0,
+                PACKED = 1,
+                EXPANDED = 2
+            }
+
+            /** Utf8Validation enum. */
+            enum Utf8Validation {
+                UTF8_VALIDATION_UNKNOWN = 0,
+                VERIFY = 2,
+                NONE = 3
+            }
+
+            /** MessageEncoding enum. */
+            enum MessageEncoding {
+                MESSAGE_ENCODING_UNKNOWN = 0,
+                LENGTH_PREFIXED = 1,
+                DELIMITED = 2
+            }
+
+            /** JsonFormat enum. */
+            enum JsonFormat {
+                JSON_FORMAT_UNKNOWN = 0,
+                ALLOW = 1,
+                LEGACY_BEST_EFFORT = 2
+            }
+        }
+
+        /** Properties of a FeatureSetDefaults. */
+        interface IFeatureSetDefaults {
+
+            /** FeatureSetDefaults defaults */
+            defaults?: (google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault[]|null);
+
+            /** FeatureSetDefaults minimumEdition */
+            minimumEdition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
+
+            /** FeatureSetDefaults maximumEdition */
+            maximumEdition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
+        }
+
+        /** Represents a FeatureSetDefaults. */
+        class FeatureSetDefaults implements IFeatureSetDefaults {
+
+            /**
+             * Constructs a new FeatureSetDefaults.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IFeatureSetDefaults);
+
+            /** FeatureSetDefaults defaults. */
+            public defaults: google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault[];
+
+            /** FeatureSetDefaults minimumEdition. */
+            public minimumEdition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);
+
+            /** FeatureSetDefaults maximumEdition. */
+            public maximumEdition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);
+
+            /**
+             * Creates a new FeatureSetDefaults instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns FeatureSetDefaults instance
+             */
+            public static create(properties?: google.protobuf.IFeatureSetDefaults): google.protobuf.FeatureSetDefaults;
+
+            /**
+             * Encodes the specified FeatureSetDefaults message. Does not implicitly {@link google.protobuf.FeatureSetDefaults.verify|verify} messages.
+             * @param message FeatureSetDefaults message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IFeatureSetDefaults, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified FeatureSetDefaults message, length delimited. Does not implicitly {@link google.protobuf.FeatureSetDefaults.verify|verify} messages.
+             * @param message FeatureSetDefaults message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IFeatureSetDefaults, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a FeatureSetDefaults message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns FeatureSetDefaults
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FeatureSetDefaults;
+
+            /**
+             * Decodes a FeatureSetDefaults message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns FeatureSetDefaults
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FeatureSetDefaults;
+
+            /**
+             * Verifies a FeatureSetDefaults message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a FeatureSetDefaults message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns FeatureSetDefaults
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.FeatureSetDefaults;
+
+            /**
+             * Creates a plain object from a FeatureSetDefaults message. Also converts values to other types if specified.
+             * @param message FeatureSetDefaults
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.FeatureSetDefaults, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this FeatureSetDefaults to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for FeatureSetDefaults
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        namespace FeatureSetDefaults {
+
+            /** Properties of a FeatureSetEditionDefault. */
+            interface IFeatureSetEditionDefault {
+
+                /** FeatureSetEditionDefault edition */
+                edition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
+
+                /** FeatureSetEditionDefault features */
+                features?: (google.protobuf.IFeatureSet|null);
+            }
+
+            /** Represents a FeatureSetEditionDefault. */
+            class FeatureSetEditionDefault implements IFeatureSetEditionDefault {
+
+                /**
+                 * Constructs a new FeatureSetEditionDefault.
+                 * @param [properties] Properties to set
+                 */
+                constructor(properties?: google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault);
+
+                /** FeatureSetEditionDefault edition. */
+                public edition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);
+
+                /** FeatureSetEditionDefault features. */
+                public features?: (google.protobuf.IFeatureSet|null);
+
+                /**
+                 * Creates a new FeatureSetEditionDefault instance using the specified properties.
+                 * @param [properties] Properties to set
+                 * @returns FeatureSetEditionDefault instance
+                 */
+                public static create(properties?: google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault): google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault;
+
+                /**
+                 * Encodes the specified FeatureSetEditionDefault message. Does not implicitly {@link google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.verify|verify} messages.
+                 * @param message FeatureSetEditionDefault message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encode(message: google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Encodes the specified FeatureSetEditionDefault message, length delimited. Does not implicitly {@link google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.verify|verify} messages.
+                 * @param message FeatureSetEditionDefault message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encodeDelimited(message: google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Decodes a FeatureSetEditionDefault message from the specified reader or buffer.
+                 * @param reader Reader or buffer to decode from
+                 * @param [length] Message length if known beforehand
+                 * @returns FeatureSetEditionDefault
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault;
+
+                /**
+                 * Decodes a FeatureSetEditionDefault message from the specified reader or buffer, length delimited.
+                 * @param reader Reader or buffer to decode from
+                 * @returns FeatureSetEditionDefault
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault;
+
+                /**
+                 * Verifies a FeatureSetEditionDefault message.
+                 * @param message Plain object to verify
+                 * @returns `null` if valid, otherwise the reason why it is not
+                 */
+                public static verify(message: { [k: string]: any }): (string|null);
+
+                /**
+                 * Creates a FeatureSetEditionDefault message from a plain object. Also converts values to their respective internal types.
+                 * @param object Plain object
+                 * @returns FeatureSetEditionDefault
+                 */
+                public static fromObject(object: { [k: string]: any }): google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault;
+
+                /**
+                 * Creates a plain object from a FeatureSetEditionDefault message. Also converts values to other types if specified.
+                 * @param message FeatureSetEditionDefault
+                 * @param [options] Conversion options
+                 * @returns Plain object
+                 */
+                public static toObject(message: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                /**
+                 * Converts this FeatureSetEditionDefault to JSON.
+                 * @returns JSON object
+                 */
+                public toJSON(): { [k: string]: any };
+
+                /**
+                 * Gets the default type url for FeatureSetEditionDefault
+                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns The default type url
+                 */
+                public static getTypeUrl(typeUrlPrefix?: string): string;
+            }
+        }
+
+        /** Properties of a SourceCodeInfo. */
+        interface ISourceCodeInfo {
+
+            /** SourceCodeInfo location */
+            location?: (google.protobuf.SourceCodeInfo.ILocation[]|null);
+        }
+
+        /** Represents a SourceCodeInfo. */
+        class SourceCodeInfo implements ISourceCodeInfo {
+
+            /**
+             * Constructs a new SourceCodeInfo.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.ISourceCodeInfo);
+
+            /** SourceCodeInfo location. */
+            public location: google.protobuf.SourceCodeInfo.ILocation[];
+
+            /**
+             * Creates a new SourceCodeInfo instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns SourceCodeInfo instance
+             */
+            public static create(properties?: google.protobuf.ISourceCodeInfo): google.protobuf.SourceCodeInfo;
+
+            /**
+             * Encodes the specified SourceCodeInfo message. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages.
+             * @param message SourceCodeInfo message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.ISourceCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified SourceCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages.
+             * @param message SourceCodeInfo message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.ISourceCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a SourceCodeInfo message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns SourceCodeInfo
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.SourceCodeInfo;
+
+            /**
+             * Decodes a SourceCodeInfo message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns SourceCodeInfo
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.SourceCodeInfo;
+
+            /**
+             * Verifies a SourceCodeInfo message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a SourceCodeInfo message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns SourceCodeInfo
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.SourceCodeInfo;
+
+            /**
+             * Creates a plain object from a SourceCodeInfo message. Also converts values to other types if specified.
+             * @param message SourceCodeInfo
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.SourceCodeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this SourceCodeInfo to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for SourceCodeInfo
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        namespace SourceCodeInfo {
+
+            /** Properties of a Location. */
+            interface ILocation {
+
+                /** Location path */
+                path?: (number[]|null);
+
+                /** Location span */
+                span?: (number[]|null);
+
+                /** Location leadingComments */
+                leadingComments?: (string|null);
+
+                /** Location trailingComments */
+                trailingComments?: (string|null);
+
+                /** Location leadingDetachedComments */
+                leadingDetachedComments?: (string[]|null);
+            }
+
+            /** Represents a Location. */
+            class Location implements ILocation {
+
+                /**
+                 * Constructs a new Location.
+                 * @param [properties] Properties to set
+                 */
+                constructor(properties?: google.protobuf.SourceCodeInfo.ILocation);
+
+                /** Location path. */
+                public path: number[];
+
+                /** Location span. */
+                public span: number[];
+
+                /** Location leadingComments. */
+                public leadingComments: string;
+
+                /** Location trailingComments. */
+                public trailingComments: string;
+
+                /** Location leadingDetachedComments. */
+                public leadingDetachedComments: string[];
+
+                /**
+                 * Creates a new Location instance using the specified properties.
+                 * @param [properties] Properties to set
+                 * @returns Location instance
+                 */
+                public static create(properties?: google.protobuf.SourceCodeInfo.ILocation): google.protobuf.SourceCodeInfo.Location;
+
+                /**
+                 * Encodes the specified Location message. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages.
+                 * @param message Location message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encode(message: google.protobuf.SourceCodeInfo.ILocation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Encodes the specified Location message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages.
+                 * @param message Location message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encodeDelimited(message: google.protobuf.SourceCodeInfo.ILocation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Decodes a Location message from the specified reader or buffer.
+                 * @param reader Reader or buffer to decode from
+                 * @param [length] Message length if known beforehand
+                 * @returns Location
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.SourceCodeInfo.Location;
+
+                /**
+                 * Decodes a Location message from the specified reader or buffer, length delimited.
+                 * @param reader Reader or buffer to decode from
+                 * @returns Location
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.SourceCodeInfo.Location;
+
+                /**
+                 * Verifies a Location message.
+                 * @param message Plain object to verify
+                 * @returns `null` if valid, otherwise the reason why it is not
+                 */
+                public static verify(message: { [k: string]: any }): (string|null);
+
+                /**
+                 * Creates a Location message from a plain object. Also converts values to their respective internal types.
+                 * @param object Plain object
+                 * @returns Location
+                 */
+                public static fromObject(object: { [k: string]: any }): google.protobuf.SourceCodeInfo.Location;
+
+                /**
+                 * Creates a plain object from a Location message. Also converts values to other types if specified.
+                 * @param message Location
+                 * @param [options] Conversion options
+                 * @returns Plain object
+                 */
+                public static toObject(message: google.protobuf.SourceCodeInfo.Location, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                /**
+                 * Converts this Location to JSON.
+                 * @returns JSON object
+                 */
+                public toJSON(): { [k: string]: any };
+
+                /**
+                 * Gets the default type url for Location
+                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns The default type url
+                 */
+                public static getTypeUrl(typeUrlPrefix?: string): string;
+            }
+        }
+
+        /** Properties of a GeneratedCodeInfo. */
+        interface IGeneratedCodeInfo {
+
+            /** GeneratedCodeInfo annotation */
+            annotation?: (google.protobuf.GeneratedCodeInfo.IAnnotation[]|null);
+        }
+
+        /** Represents a GeneratedCodeInfo. */
+        class GeneratedCodeInfo implements IGeneratedCodeInfo {
+
+            /**
+             * Constructs a new GeneratedCodeInfo.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IGeneratedCodeInfo);
+
+            /** GeneratedCodeInfo annotation. */
+            public annotation: google.protobuf.GeneratedCodeInfo.IAnnotation[];
+
+            /**
+             * Creates a new GeneratedCodeInfo instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns GeneratedCodeInfo instance
+             */
+            public static create(properties?: google.protobuf.IGeneratedCodeInfo): google.protobuf.GeneratedCodeInfo;
+
+            /**
+             * Encodes the specified GeneratedCodeInfo message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages.
+             * @param message GeneratedCodeInfo message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IGeneratedCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified GeneratedCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages.
+             * @param message GeneratedCodeInfo message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IGeneratedCodeInfo, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a GeneratedCodeInfo message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns GeneratedCodeInfo
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.GeneratedCodeInfo;
+
+            /**
+             * Decodes a GeneratedCodeInfo message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns GeneratedCodeInfo
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.GeneratedCodeInfo;
+
+            /**
+             * Verifies a GeneratedCodeInfo message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a GeneratedCodeInfo message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns GeneratedCodeInfo
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.GeneratedCodeInfo;
+
+            /**
+             * Creates a plain object from a GeneratedCodeInfo message. Also converts values to other types if specified.
+             * @param message GeneratedCodeInfo
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.GeneratedCodeInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this GeneratedCodeInfo to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for GeneratedCodeInfo
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        namespace GeneratedCodeInfo {
+
+            /** Properties of an Annotation. */
+            interface IAnnotation {
+
+                /** Annotation path */
+                path?: (number[]|null);
+
+                /** Annotation sourceFile */
+                sourceFile?: (string|null);
+
+                /** Annotation begin */
+                begin?: (number|null);
+
+                /** Annotation end */
+                end?: (number|null);
+
+                /** Annotation semantic */
+                semantic?: (google.protobuf.GeneratedCodeInfo.Annotation.Semantic|keyof typeof google.protobuf.GeneratedCodeInfo.Annotation.Semantic|null);
+            }
+
+            /** Represents an Annotation. */
+            class Annotation implements IAnnotation {
+
+                /**
+                 * Constructs a new Annotation.
+                 * @param [properties] Properties to set
+                 */
+                constructor(properties?: google.protobuf.GeneratedCodeInfo.IAnnotation);
+
+                /** Annotation path. */
+                public path: number[];
+
+                /** Annotation sourceFile. */
+                public sourceFile: string;
+
+                /** Annotation begin. */
+                public begin: number;
+
+                /** Annotation end. */
+                public end: number;
+
+                /** Annotation semantic. */
+                public semantic: (google.protobuf.GeneratedCodeInfo.Annotation.Semantic|keyof typeof google.protobuf.GeneratedCodeInfo.Annotation.Semantic);
+
+                /**
+                 * Creates a new Annotation instance using the specified properties.
+                 * @param [properties] Properties to set
+                 * @returns Annotation instance
+                 */
+                public static create(properties?: google.protobuf.GeneratedCodeInfo.IAnnotation): google.protobuf.GeneratedCodeInfo.Annotation;
+
+                /**
+                 * Encodes the specified Annotation message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages.
+                 * @param message Annotation message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encode(message: google.protobuf.GeneratedCodeInfo.IAnnotation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Encodes the specified Annotation message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages.
+                 * @param message Annotation message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encodeDelimited(message: google.protobuf.GeneratedCodeInfo.IAnnotation, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Decodes an Annotation message from the specified reader or buffer.
+                 * @param reader Reader or buffer to decode from
+                 * @param [length] Message length if known beforehand
+                 * @returns Annotation
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.GeneratedCodeInfo.Annotation;
+
+                /**
+                 * Decodes an Annotation message from the specified reader or buffer, length delimited.
+                 * @param reader Reader or buffer to decode from
+                 * @returns Annotation
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.GeneratedCodeInfo.Annotation;
+
+                /**
+                 * Verifies an Annotation message.
+                 * @param message Plain object to verify
+                 * @returns `null` if valid, otherwise the reason why it is not
+                 */
+                public static verify(message: { [k: string]: any }): (string|null);
+
+                /**
+                 * Creates an Annotation message from a plain object. Also converts values to their respective internal types.
+                 * @param object Plain object
+                 * @returns Annotation
+                 */
+                public static fromObject(object: { [k: string]: any }): google.protobuf.GeneratedCodeInfo.Annotation;
+
+                /**
+                 * Creates a plain object from an Annotation message. Also converts values to other types if specified.
+                 * @param message Annotation
+                 * @param [options] Conversion options
+                 * @returns Plain object
+                 */
+                public static toObject(message: google.protobuf.GeneratedCodeInfo.Annotation, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                /**
+                 * Converts this Annotation to JSON.
+                 * @returns JSON object
+                 */
+                public toJSON(): { [k: string]: any };
+
+                /**
+                 * Gets the default type url for Annotation
+                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns The default type url
+                 */
+                public static getTypeUrl(typeUrlPrefix?: string): string;
+            }
+
+            namespace Annotation {
+
+                /** Semantic enum. */
+                enum Semantic {
+                    NONE = 0,
+                    SET = 1,
+                    ALIAS = 2
+                }
+            }
+        }
+
+        /** Properties of a Timestamp. */
+        interface ITimestamp {
+
+            /** Timestamp seconds */
+            seconds?: (number|Long|string|null);
+
+            /** Timestamp nanos */
+            nanos?: (number|null);
+        }
+
+        /** Represents a Timestamp. */
+        class Timestamp implements ITimestamp {
+
+            /**
+             * Constructs a new Timestamp.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.ITimestamp);
+
+            /** Timestamp seconds. */
+            public seconds: (number|Long|string);
+
+            /** Timestamp nanos. */
+            public nanos: number;
+
+            /**
+             * Creates a new Timestamp instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns Timestamp instance
+             */
+            public static create(properties?: google.protobuf.ITimestamp): google.protobuf.Timestamp;
+
+            /**
+             * Encodes the specified Timestamp message. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages.
+             * @param message Timestamp message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.ITimestamp, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified Timestamp message, length delimited. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages.
+             * @param message Timestamp message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.ITimestamp, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a Timestamp message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns Timestamp
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Timestamp;
+
+            /**
+             * Decodes a Timestamp message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns Timestamp
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Timestamp;
+
+            /**
+             * Verifies a Timestamp message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a Timestamp message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns Timestamp
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.Timestamp;
+
+            /**
+             * Creates a plain object from a Timestamp message. Also converts values to other types if specified.
+             * @param message Timestamp
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.Timestamp, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this Timestamp to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for Timestamp
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a Duration. */
+        interface IDuration {
+
+            /** Duration seconds */
+            seconds?: (number|Long|string|null);
+
+            /** Duration nanos */
+            nanos?: (number|null);
+        }
+
+        /** Represents a Duration. */
+        class Duration implements IDuration {
+
+            /**
+             * Constructs a new Duration.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IDuration);
+
+            /** Duration seconds. */
+            public seconds: (number|Long|string);
+
+            /** Duration nanos. */
+            public nanos: number;
+
+            /**
+             * Creates a new Duration instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns Duration instance
+             */
+            public static create(properties?: google.protobuf.IDuration): google.protobuf.Duration;
+
+            /**
+             * Encodes the specified Duration message. Does not implicitly {@link google.protobuf.Duration.verify|verify} messages.
+             * @param message Duration message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IDuration, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified Duration message, length delimited. Does not implicitly {@link google.protobuf.Duration.verify|verify} messages.
+             * @param message Duration message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IDuration, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a Duration message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns Duration
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Duration;
+
+            /**
+             * Decodes a Duration message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns Duration
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Duration;
+
+            /**
+             * Verifies a Duration message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a Duration message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns Duration
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.Duration;
+
+            /**
+             * Creates a plain object from a Duration message. Also converts values to other types if specified.
+             * @param message Duration
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.Duration, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this Duration to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for Duration
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a DoubleValue. */
+        interface IDoubleValue {
+
+            /** DoubleValue value */
+            value?: (number|null);
+        }
+
+        /** Represents a DoubleValue. */
+        class DoubleValue implements IDoubleValue {
+
+            /**
+             * Constructs a new DoubleValue.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IDoubleValue);
+
+            /** DoubleValue value. */
+            public value: number;
+
+            /**
+             * Creates a new DoubleValue instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns DoubleValue instance
+             */
+            public static create(properties?: google.protobuf.IDoubleValue): google.protobuf.DoubleValue;
+
+            /**
+             * Encodes the specified DoubleValue message. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages.
+             * @param message DoubleValue message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IDoubleValue, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified DoubleValue message, length delimited. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages.
+             * @param message DoubleValue message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IDoubleValue, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a DoubleValue message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns DoubleValue
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DoubleValue;
+
+            /**
+             * Decodes a DoubleValue message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns DoubleValue
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DoubleValue;
+
+            /**
+             * Verifies a DoubleValue message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a DoubleValue message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns DoubleValue
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.DoubleValue;
+
+            /**
+             * Creates a plain object from a DoubleValue message. Also converts values to other types if specified.
+             * @param message DoubleValue
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.DoubleValue, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this DoubleValue to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for DoubleValue
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a FloatValue. */
+        interface IFloatValue {
+
+            /** FloatValue value */
+            value?: (number|null);
+        }
+
+        /** Represents a FloatValue. */
+        class FloatValue implements IFloatValue {
+
+            /**
+             * Constructs a new FloatValue.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IFloatValue);
+
+            /** FloatValue value. */
+            public value: number;
+
+            /**
+             * Creates a new FloatValue instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns FloatValue instance
+             */
+            public static create(properties?: google.protobuf.IFloatValue): google.protobuf.FloatValue;
+
+            /**
+             * Encodes the specified FloatValue message. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages.
+             * @param message FloatValue message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IFloatValue, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified FloatValue message, length delimited. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages.
+             * @param message FloatValue message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IFloatValue, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a FloatValue message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns FloatValue
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FloatValue;
+
+            /**
+             * Decodes a FloatValue message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns FloatValue
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FloatValue;
+
+            /**
+             * Verifies a FloatValue message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a FloatValue message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns FloatValue
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.FloatValue;
+
+            /**
+             * Creates a plain object from a FloatValue message. Also converts values to other types if specified.
+             * @param message FloatValue
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.FloatValue, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this FloatValue to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for FloatValue
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of an Int64Value. */
+        interface IInt64Value {
+
+            /** Int64Value value */
+            value?: (number|Long|string|null);
+        }
+
+        /** Represents an Int64Value. */
+        class Int64Value implements IInt64Value {
+
+            /**
+             * Constructs a new Int64Value.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IInt64Value);
+
+            /** Int64Value value. */
+            public value: (number|Long|string);
+
+            /**
+             * Creates a new Int64Value instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns Int64Value instance
+             */
+            public static create(properties?: google.protobuf.IInt64Value): google.protobuf.Int64Value;
+
+            /**
+             * Encodes the specified Int64Value message. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages.
+             * @param message Int64Value message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IInt64Value, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified Int64Value message, length delimited. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages.
+             * @param message Int64Value message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IInt64Value, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes an Int64Value message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns Int64Value
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Int64Value;
+
+            /**
+             * Decodes an Int64Value message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns Int64Value
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Int64Value;
+
+            /**
+             * Verifies an Int64Value message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates an Int64Value message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns Int64Value
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.Int64Value;
+
+            /**
+             * Creates a plain object from an Int64Value message. Also converts values to other types if specified.
+             * @param message Int64Value
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.Int64Value, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this Int64Value to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for Int64Value
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a UInt64Value. */
+        interface IUInt64Value {
+
+            /** UInt64Value value */
+            value?: (number|Long|string|null);
+        }
+
+        /** Represents a UInt64Value. */
+        class UInt64Value implements IUInt64Value {
+
+            /**
+             * Constructs a new UInt64Value.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IUInt64Value);
+
+            /** UInt64Value value. */
+            public value: (number|Long|string);
+
+            /**
+             * Creates a new UInt64Value instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns UInt64Value instance
+             */
+            public static create(properties?: google.protobuf.IUInt64Value): google.protobuf.UInt64Value;
+
+            /**
+             * Encodes the specified UInt64Value message. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages.
+             * @param message UInt64Value message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IUInt64Value, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified UInt64Value message, length delimited. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages.
+             * @param message UInt64Value message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IUInt64Value, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a UInt64Value message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns UInt64Value
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UInt64Value;
+
+            /**
+             * Decodes a UInt64Value message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns UInt64Value
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UInt64Value;
+
+            /**
+             * Verifies a UInt64Value message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a UInt64Value message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns UInt64Value
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.UInt64Value;
+
+            /**
+             * Creates a plain object from a UInt64Value message. Also converts values to other types if specified.
+             * @param message UInt64Value
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.UInt64Value, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this UInt64Value to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for UInt64Value
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of an Int32Value. */
+        interface IInt32Value {
+
+            /** Int32Value value */
+            value?: (number|null);
+        }
+
+        /** Represents an Int32Value. */
+        class Int32Value implements IInt32Value {
+
+            /**
+             * Constructs a new Int32Value.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IInt32Value);
+
+            /** Int32Value value. */
+            public value: number;
+
+            /**
+             * Creates a new Int32Value instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns Int32Value instance
+             */
+            public static create(properties?: google.protobuf.IInt32Value): google.protobuf.Int32Value;
+
+            /**
+             * Encodes the specified Int32Value message. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages.
+             * @param message Int32Value message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IInt32Value, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified Int32Value message, length delimited. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages.
+             * @param message Int32Value message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IInt32Value, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes an Int32Value message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns Int32Value
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Int32Value;
+
+            /**
+             * Decodes an Int32Value message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns Int32Value
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Int32Value;
+
+            /**
+             * Verifies an Int32Value message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates an Int32Value message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns Int32Value
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.Int32Value;
+
+            /**
+             * Creates a plain object from an Int32Value message. Also converts values to other types if specified.
+             * @param message Int32Value
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.Int32Value, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this Int32Value to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for Int32Value
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a UInt32Value. */
+        interface IUInt32Value {
+
+            /** UInt32Value value */
+            value?: (number|null);
+        }
+
+        /** Represents a UInt32Value. */
+        class UInt32Value implements IUInt32Value {
+
+            /**
+             * Constructs a new UInt32Value.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IUInt32Value);
+
+            /** UInt32Value value. */
+            public value: number;
+
+            /**
+             * Creates a new UInt32Value instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns UInt32Value instance
+             */
+            public static create(properties?: google.protobuf.IUInt32Value): google.protobuf.UInt32Value;
+
+            /**
+             * Encodes the specified UInt32Value message. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages.
+             * @param message UInt32Value message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IUInt32Value, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified UInt32Value message, length delimited. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages.
+             * @param message UInt32Value message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IUInt32Value, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a UInt32Value message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns UInt32Value
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UInt32Value;
+
+            /**
+             * Decodes a UInt32Value message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns UInt32Value
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UInt32Value;
+
+            /**
+             * Verifies a UInt32Value message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a UInt32Value message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns UInt32Value
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.UInt32Value;
+
+            /**
+             * Creates a plain object from a UInt32Value message. Also converts values to other types if specified.
+             * @param message UInt32Value
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.UInt32Value, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this UInt32Value to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for UInt32Value
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a BoolValue. */
+        interface IBoolValue {
+
+            /** BoolValue value */
+            value?: (boolean|null);
+        }
+
+        /** Represents a BoolValue. */
+        class BoolValue implements IBoolValue {
+
+            /**
+             * Constructs a new BoolValue.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IBoolValue);
+
+            /** BoolValue value. */
+            public value: boolean;
+
+            /**
+             * Creates a new BoolValue instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns BoolValue instance
+             */
+            public static create(properties?: google.protobuf.IBoolValue): google.protobuf.BoolValue;
+
+            /**
+             * Encodes the specified BoolValue message. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages.
+             * @param message BoolValue message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IBoolValue, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified BoolValue message, length delimited. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages.
+             * @param message BoolValue message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IBoolValue, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a BoolValue message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns BoolValue
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.BoolValue;
+
+            /**
+             * Decodes a BoolValue message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns BoolValue
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.BoolValue;
+
+            /**
+             * Verifies a BoolValue message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a BoolValue message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns BoolValue
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.BoolValue;
+
+            /**
+             * Creates a plain object from a BoolValue message. Also converts values to other types if specified.
+             * @param message BoolValue
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.BoolValue, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this BoolValue to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for BoolValue
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a StringValue. */
+        interface IStringValue {
+
+            /** StringValue value */
+            value?: (string|null);
+        }
+
+        /** Represents a StringValue. */
+        class StringValue implements IStringValue {
+
+            /**
+             * Constructs a new StringValue.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IStringValue);
+
+            /** StringValue value. */
+            public value: string;
+
+            /**
+             * Creates a new StringValue instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns StringValue instance
+             */
+            public static create(properties?: google.protobuf.IStringValue): google.protobuf.StringValue;
+
+            /**
+             * Encodes the specified StringValue message. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages.
+             * @param message StringValue message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IStringValue, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified StringValue message, length delimited. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages.
+             * @param message StringValue message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IStringValue, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a StringValue message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns StringValue
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.StringValue;
+
+            /**
+             * Decodes a StringValue message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns StringValue
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.StringValue;
+
+            /**
+             * Verifies a StringValue message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a StringValue message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns StringValue
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.StringValue;
+
+            /**
+             * Creates a plain object from a StringValue message. Also converts values to other types if specified.
+             * @param message StringValue
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.StringValue, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this StringValue to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for StringValue
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** Properties of a BytesValue. */
+        interface IBytesValue {
+
+            /** BytesValue value */
+            value?: (Uint8Array|Buffer|string|null);
+        }
+
+        /** Represents a BytesValue. */
+        class BytesValue implements IBytesValue {
+
+            /**
+             * Constructs a new BytesValue.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.protobuf.IBytesValue);
+
+            /** BytesValue value. */
+            public value: (Uint8Array|Buffer|string);
+
+            /**
+             * Creates a new BytesValue instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns BytesValue instance
+             */
+            public static create(properties?: google.protobuf.IBytesValue): google.protobuf.BytesValue;
+
+            /**
+             * Encodes the specified BytesValue message. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages.
+             * @param message BytesValue message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.protobuf.IBytesValue, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified BytesValue message, length delimited. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages.
+             * @param message BytesValue message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.protobuf.IBytesValue, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a BytesValue message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns BytesValue
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.BytesValue;
+
+            /**
+             * Decodes a BytesValue message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns BytesValue
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.BytesValue;
+
+            /**
+             * Verifies a BytesValue message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a BytesValue message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns BytesValue
+             */
+            public static fromObject(object: { [k: string]: any }): google.protobuf.BytesValue;
+
+            /**
+             * Creates a plain object from a BytesValue message. Also converts values to other types if specified.
+             * @param message BytesValue
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.protobuf.BytesValue, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this BytesValue to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for BytesValue
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+    }
+
+    /** Namespace type. */
+    namespace type {
+
+        /** Properties of a Date. */
+        interface IDate {
+
+            /** Date year */
+            year?: (number|null);
+
+            /** Date month */
+            month?: (number|null);
+
+            /** Date day */
+            day?: (number|null);
+        }
+
+        /** Represents a Date. */
+        class Date implements IDate {
+
+            /**
+             * Constructs a new Date.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.type.IDate);
+
+            /** Date year. */
+            public year: number;
+
+            /** Date month. */
+            public month: number;
+
+            /** Date day. */
+            public day: number;
+
+            /**
+             * Creates a new Date instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns Date instance
+             */
+            public static create(properties?: google.type.IDate): google.type.Date;
+
+            /**
+             * Encodes the specified Date message. Does not implicitly {@link google.type.Date.verify|verify} messages.
+             * @param message Date message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.type.IDate, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified Date message, length delimited. Does not implicitly {@link google.type.Date.verify|verify} messages.
+             * @param message Date message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.type.IDate, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a Date message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns Date
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.type.Date;
+
+            /**
+             * Decodes a Date message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns Date
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.type.Date;
+
+            /**
+             * Verifies a Date message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a Date message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns Date
+             */
+            public static fromObject(object: { [k: string]: any }): google.type.Date;
+
+            /**
+             * Creates a plain object from a Date message. Also converts values to other types if specified.
+             * @param message Date
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.type.Date, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this Date to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for Date
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
+        /** DayOfWeek enum. */
+        enum DayOfWeek {
+            DAY_OF_WEEK_UNSPECIFIED = 0,
+            MONDAY = 1,
+            TUESDAY = 2,
+            WEDNESDAY = 3,
+            THURSDAY = 4,
+            FRIDAY = 5,
+            SATURDAY = 6,
+            SUNDAY = 7
+        }
+
+        /** Properties of a TimeOfDay. */
+        interface ITimeOfDay {
+
+            /** TimeOfDay hours */
+            hours?: (number|null);
+
+            /** TimeOfDay minutes */
+            minutes?: (number|null);
+
+            /** TimeOfDay seconds */
+            seconds?: (number|null);
+
+            /** TimeOfDay nanos */
+            nanos?: (number|null);
+        }
+
+        /** Represents a TimeOfDay. */
+        class TimeOfDay implements ITimeOfDay {
+
+            /**
+             * Constructs a new TimeOfDay.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.type.ITimeOfDay);
+
+            /** TimeOfDay hours. */
+            public hours: number;
+
+            /** TimeOfDay minutes. */
+            public minutes: number;
+
+            /** TimeOfDay seconds. */
+            public seconds: number;
+
+            /** TimeOfDay nanos. */
+            public nanos: number;
+
+            /**
+             * Creates a new TimeOfDay instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns TimeOfDay instance
+             */
+            public static create(properties?: google.type.ITimeOfDay): google.type.TimeOfDay;
+
+            /**
+             * Encodes the specified TimeOfDay message. Does not implicitly {@link google.type.TimeOfDay.verify|verify} messages.
+             * @param message TimeOfDay message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.type.ITimeOfDay, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified TimeOfDay message, length delimited. Does not implicitly {@link google.type.TimeOfDay.verify|verify} messages.
+             * @param message TimeOfDay message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.type.ITimeOfDay, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a TimeOfDay message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns TimeOfDay
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.type.TimeOfDay;
+
+            /**
+             * Decodes a TimeOfDay message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns TimeOfDay
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.type.TimeOfDay;
+
+            /**
+             * Verifies a TimeOfDay message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a TimeOfDay message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns TimeOfDay
+             */
+            public static fromObject(object: { [k: string]: any }): google.type.TimeOfDay;
+
+            /**
+             * Creates a plain object from a TimeOfDay message. Also converts values to other types if specified.
+             * @param message TimeOfDay
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.type.TimeOfDay, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this TimeOfDay to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for TimeOfDay
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+    }
+}
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/protos.js b/owl-bot-staging/google-cloud-databasecenter/protos/protos.js
new file mode 100644
index 000000000000..2cf314775201
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/protos/protos.js
@@ -0,0 +1,41042 @@
+// Copyright 2026 Google LLC
+//
+// 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.
+
+/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/
+(function(global, factory) { /* global define, require, module */
+
+    /* AMD */ if (typeof define === 'function' && define.amd)
+        define(["protobufjs/minimal"], factory);
+
+    /* CommonJS */ else if (typeof require === 'function' && typeof module === 'object' && module && module.exports)
+        module.exports = factory(require("google-gax/build/src/protobuf").protobufMinimal);
+
+})(this, function($protobuf) {
+    "use strict";
+
+    // Common aliases
+    var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;
+    
+    // Exported root namespace
+    var $root = $protobuf.roots._google_cloud_databasecenter_protos || ($protobuf.roots._google_cloud_databasecenter_protos = {});
+    
+    $root.google = (function() {
+    
+        /**
+         * Namespace google.
+         * @exports google
+         * @namespace
+         */
+        var google = {};
+    
+        google.cloud = (function() {
+    
+            /**
+             * Namespace cloud.
+             * @memberof google
+             * @namespace
+             */
+            var cloud = {};
+    
+            cloud.databasecenter = (function() {
+    
+                /**
+                 * Namespace databasecenter.
+                 * @memberof google.cloud
+                 * @namespace
+                 */
+                var databasecenter = {};
+    
+                databasecenter.v1beta = (function() {
+    
+                    /**
+                     * Namespace v1beta.
+                     * @memberof google.cloud.databasecenter
+                     * @namespace
+                     */
+                    var v1beta = {};
+    
+                    v1beta.Affiliation = (function() {
+    
+                        /**
+                         * Properties of an Affiliation.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IAffiliation
+                         * @property {string|null} [resourceId] Affiliation resourceId
+                         * @property {string|null} [fullResourceName] Affiliation fullResourceName
+                         * @property {Array.<google.cloud.databasecenter.v1beta.Affiliation.ILineage>|null} [lineages] Affiliation lineages
+                         */
+    
+                        /**
+                         * Constructs a new Affiliation.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents an Affiliation.
+                         * @implements IAffiliation
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IAffiliation=} [properties] Properties to set
+                         */
+                        function Affiliation(properties) {
+                            this.lineages = [];
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * Affiliation resourceId.
+                         * @member {string} resourceId
+                         * @memberof google.cloud.databasecenter.v1beta.Affiliation
+                         * @instance
+                         */
+                        Affiliation.prototype.resourceId = "";
+    
+                        /**
+                         * Affiliation fullResourceName.
+                         * @member {string} fullResourceName
+                         * @memberof google.cloud.databasecenter.v1beta.Affiliation
+                         * @instance
+                         */
+                        Affiliation.prototype.fullResourceName = "";
+    
+                        /**
+                         * Affiliation lineages.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.Affiliation.ILineage>} lineages
+                         * @memberof google.cloud.databasecenter.v1beta.Affiliation
+                         * @instance
+                         */
+                        Affiliation.prototype.lineages = $util.emptyArray;
+    
+                        /**
+                         * Creates a new Affiliation instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.Affiliation
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IAffiliation=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.Affiliation} Affiliation instance
+                         */
+                        Affiliation.create = function create(properties) {
+                            return new Affiliation(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified Affiliation message. Does not implicitly {@link google.cloud.databasecenter.v1beta.Affiliation.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.Affiliation
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IAffiliation} message Affiliation message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        Affiliation.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.resourceId != null && Object.hasOwnProperty.call(message, "resourceId"))
+                                writer.uint32(/* id 1, wireType 2 =*/10).string(message.resourceId);
+                            if (message.fullResourceName != null && Object.hasOwnProperty.call(message, "fullResourceName"))
+                                writer.uint32(/* id 2, wireType 2 =*/18).string(message.fullResourceName);
+                            if (message.lineages != null && message.lineages.length)
+                                for (var i = 0; i < message.lineages.length; ++i)
+                                    $root.google.cloud.databasecenter.v1beta.Affiliation.Lineage.encode(message.lineages[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified Affiliation message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.Affiliation.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.Affiliation
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IAffiliation} message Affiliation message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        Affiliation.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes an Affiliation message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.Affiliation
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.Affiliation} Affiliation
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        Affiliation.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.Affiliation();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.resourceId = reader.string();
+                                        break;
+                                    }
+                                case 2: {
+                                        message.fullResourceName = reader.string();
+                                        break;
+                                    }
+                                case 3: {
+                                        if (!(message.lineages && message.lineages.length))
+                                            message.lineages = [];
+                                        message.lineages.push($root.google.cloud.databasecenter.v1beta.Affiliation.Lineage.decode(reader, reader.uint32()));
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes an Affiliation message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.Affiliation
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.Affiliation} Affiliation
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        Affiliation.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies an Affiliation message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.Affiliation
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        Affiliation.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.resourceId != null && message.hasOwnProperty("resourceId"))
+                                if (!$util.isString(message.resourceId))
+                                    return "resourceId: string expected";
+                            if (message.fullResourceName != null && message.hasOwnProperty("fullResourceName"))
+                                if (!$util.isString(message.fullResourceName))
+                                    return "fullResourceName: string expected";
+                            if (message.lineages != null && message.hasOwnProperty("lineages")) {
+                                if (!Array.isArray(message.lineages))
+                                    return "lineages: array expected";
+                                for (var i = 0; i < message.lineages.length; ++i) {
+                                    var error = $root.google.cloud.databasecenter.v1beta.Affiliation.Lineage.verify(message.lineages[i]);
+                                    if (error)
+                                        return "lineages." + error;
+                                }
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates an Affiliation message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.Affiliation
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.Affiliation} Affiliation
+                         */
+                        Affiliation.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.Affiliation)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.Affiliation();
+                            if (object.resourceId != null)
+                                message.resourceId = String(object.resourceId);
+                            if (object.fullResourceName != null)
+                                message.fullResourceName = String(object.fullResourceName);
+                            if (object.lineages) {
+                                if (!Array.isArray(object.lineages))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.Affiliation.lineages: array expected");
+                                message.lineages = [];
+                                for (var i = 0; i < object.lineages.length; ++i) {
+                                    if (typeof object.lineages[i] !== "object")
+                                        throw TypeError(".google.cloud.databasecenter.v1beta.Affiliation.lineages: object expected");
+                                    message.lineages[i] = $root.google.cloud.databasecenter.v1beta.Affiliation.Lineage.fromObject(object.lineages[i]);
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from an Affiliation message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.Affiliation
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.Affiliation} message Affiliation
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        Affiliation.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.arrays || options.defaults)
+                                object.lineages = [];
+                            if (options.defaults) {
+                                object.resourceId = "";
+                                object.fullResourceName = "";
+                            }
+                            if (message.resourceId != null && message.hasOwnProperty("resourceId"))
+                                object.resourceId = message.resourceId;
+                            if (message.fullResourceName != null && message.hasOwnProperty("fullResourceName"))
+                                object.fullResourceName = message.fullResourceName;
+                            if (message.lineages && message.lineages.length) {
+                                object.lineages = [];
+                                for (var j = 0; j < message.lineages.length; ++j)
+                                    object.lineages[j] = $root.google.cloud.databasecenter.v1beta.Affiliation.Lineage.toObject(message.lineages[j], options);
+                            }
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this Affiliation to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.Affiliation
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        Affiliation.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for Affiliation
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.Affiliation
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        Affiliation.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.Affiliation";
+                        };
+    
+                        Affiliation.Lineage = (function() {
+    
+                            /**
+                             * Properties of a Lineage.
+                             * @memberof google.cloud.databasecenter.v1beta.Affiliation
+                             * @interface ILineage
+                             * @property {string|null} [sourceFqn] Lineage sourceFqn
+                             * @property {string|null} [targetFqn] Lineage targetFqn
+                             * @property {string|null} [processFqn] Lineage processFqn
+                             * @property {google.cloud.databasecenter.v1beta.Affiliation.ProcessType|null} [processType] Lineage processType
+                             */
+    
+                            /**
+                             * Constructs a new Lineage.
+                             * @memberof google.cloud.databasecenter.v1beta.Affiliation
+                             * @classdesc Represents a Lineage.
+                             * @implements ILineage
+                             * @constructor
+                             * @param {google.cloud.databasecenter.v1beta.Affiliation.ILineage=} [properties] Properties to set
+                             */
+                            function Lineage(properties) {
+                                if (properties)
+                                    for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                        if (properties[keys[i]] != null)
+                                            this[keys[i]] = properties[keys[i]];
+                            }
+    
+                            /**
+                             * Lineage sourceFqn.
+                             * @member {string} sourceFqn
+                             * @memberof google.cloud.databasecenter.v1beta.Affiliation.Lineage
+                             * @instance
+                             */
+                            Lineage.prototype.sourceFqn = "";
+    
+                            /**
+                             * Lineage targetFqn.
+                             * @member {string} targetFqn
+                             * @memberof google.cloud.databasecenter.v1beta.Affiliation.Lineage
+                             * @instance
+                             */
+                            Lineage.prototype.targetFqn = "";
+    
+                            /**
+                             * Lineage processFqn.
+                             * @member {string} processFqn
+                             * @memberof google.cloud.databasecenter.v1beta.Affiliation.Lineage
+                             * @instance
+                             */
+                            Lineage.prototype.processFqn = "";
+    
+                            /**
+                             * Lineage processType.
+                             * @member {google.cloud.databasecenter.v1beta.Affiliation.ProcessType} processType
+                             * @memberof google.cloud.databasecenter.v1beta.Affiliation.Lineage
+                             * @instance
+                             */
+                            Lineage.prototype.processType = 0;
+    
+                            /**
+                             * Creates a new Lineage instance using the specified properties.
+                             * @function create
+                             * @memberof google.cloud.databasecenter.v1beta.Affiliation.Lineage
+                             * @static
+                             * @param {google.cloud.databasecenter.v1beta.Affiliation.ILineage=} [properties] Properties to set
+                             * @returns {google.cloud.databasecenter.v1beta.Affiliation.Lineage} Lineage instance
+                             */
+                            Lineage.create = function create(properties) {
+                                return new Lineage(properties);
+                            };
+    
+                            /**
+                             * Encodes the specified Lineage message. Does not implicitly {@link google.cloud.databasecenter.v1beta.Affiliation.Lineage.verify|verify} messages.
+                             * @function encode
+                             * @memberof google.cloud.databasecenter.v1beta.Affiliation.Lineage
+                             * @static
+                             * @param {google.cloud.databasecenter.v1beta.Affiliation.ILineage} message Lineage message or plain object to encode
+                             * @param {$protobuf.Writer} [writer] Writer to encode to
+                             * @returns {$protobuf.Writer} Writer
+                             */
+                            Lineage.encode = function encode(message, writer) {
+                                if (!writer)
+                                    writer = $Writer.create();
+                                if (message.sourceFqn != null && Object.hasOwnProperty.call(message, "sourceFqn"))
+                                    writer.uint32(/* id 1, wireType 2 =*/10).string(message.sourceFqn);
+                                if (message.targetFqn != null && Object.hasOwnProperty.call(message, "targetFqn"))
+                                    writer.uint32(/* id 2, wireType 2 =*/18).string(message.targetFqn);
+                                if (message.processFqn != null && Object.hasOwnProperty.call(message, "processFqn"))
+                                    writer.uint32(/* id 3, wireType 2 =*/26).string(message.processFqn);
+                                if (message.processType != null && Object.hasOwnProperty.call(message, "processType"))
+                                    writer.uint32(/* id 4, wireType 0 =*/32).int32(message.processType);
+                                return writer;
+                            };
+    
+                            /**
+                             * Encodes the specified Lineage message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.Affiliation.Lineage.verify|verify} messages.
+                             * @function encodeDelimited
+                             * @memberof google.cloud.databasecenter.v1beta.Affiliation.Lineage
+                             * @static
+                             * @param {google.cloud.databasecenter.v1beta.Affiliation.ILineage} message Lineage message or plain object to encode
+                             * @param {$protobuf.Writer} [writer] Writer to encode to
+                             * @returns {$protobuf.Writer} Writer
+                             */
+                            Lineage.encodeDelimited = function encodeDelimited(message, writer) {
+                                return this.encode(message, writer).ldelim();
+                            };
+    
+                            /**
+                             * Decodes a Lineage message from the specified reader or buffer.
+                             * @function decode
+                             * @memberof google.cloud.databasecenter.v1beta.Affiliation.Lineage
+                             * @static
+                             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                             * @param {number} [length] Message length if known beforehand
+                             * @returns {google.cloud.databasecenter.v1beta.Affiliation.Lineage} Lineage
+                             * @throws {Error} If the payload is not a reader or valid buffer
+                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                             */
+                            Lineage.decode = function decode(reader, length, error) {
+                                if (!(reader instanceof $Reader))
+                                    reader = $Reader.create(reader);
+                                var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.Affiliation.Lineage();
+                                while (reader.pos < end) {
+                                    var tag = reader.uint32();
+                                    if (tag === error)
+                                        break;
+                                    switch (tag >>> 3) {
+                                    case 1: {
+                                            message.sourceFqn = reader.string();
+                                            break;
+                                        }
+                                    case 2: {
+                                            message.targetFqn = reader.string();
+                                            break;
+                                        }
+                                    case 3: {
+                                            message.processFqn = reader.string();
+                                            break;
+                                        }
+                                    case 4: {
+                                            message.processType = reader.int32();
+                                            break;
+                                        }
+                                    default:
+                                        reader.skipType(tag & 7);
+                                        break;
+                                    }
+                                }
+                                return message;
+                            };
+    
+                            /**
+                             * Decodes a Lineage message from the specified reader or buffer, length delimited.
+                             * @function decodeDelimited
+                             * @memberof google.cloud.databasecenter.v1beta.Affiliation.Lineage
+                             * @static
+                             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                             * @returns {google.cloud.databasecenter.v1beta.Affiliation.Lineage} Lineage
+                             * @throws {Error} If the payload is not a reader or valid buffer
+                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                             */
+                            Lineage.decodeDelimited = function decodeDelimited(reader) {
+                                if (!(reader instanceof $Reader))
+                                    reader = new $Reader(reader);
+                                return this.decode(reader, reader.uint32());
+                            };
+    
+                            /**
+                             * Verifies a Lineage message.
+                             * @function verify
+                             * @memberof google.cloud.databasecenter.v1beta.Affiliation.Lineage
+                             * @static
+                             * @param {Object.<string,*>} message Plain object to verify
+                             * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                             */
+                            Lineage.verify = function verify(message) {
+                                if (typeof message !== "object" || message === null)
+                                    return "object expected";
+                                if (message.sourceFqn != null && message.hasOwnProperty("sourceFqn"))
+                                    if (!$util.isString(message.sourceFqn))
+                                        return "sourceFqn: string expected";
+                                if (message.targetFqn != null && message.hasOwnProperty("targetFqn"))
+                                    if (!$util.isString(message.targetFqn))
+                                        return "targetFqn: string expected";
+                                if (message.processFqn != null && message.hasOwnProperty("processFqn"))
+                                    if (!$util.isString(message.processFqn))
+                                        return "processFqn: string expected";
+                                if (message.processType != null && message.hasOwnProperty("processType"))
+                                    switch (message.processType) {
+                                    default:
+                                        return "processType: enum value expected";
+                                    case 0:
+                                    case 1:
+                                    case 2:
+                                    case 3:
+                                    case 4:
+                                    case 5:
+                                    case 6:
+                                        break;
+                                    }
+                                return null;
+                            };
+    
+                            /**
+                             * Creates a Lineage message from a plain object. Also converts values to their respective internal types.
+                             * @function fromObject
+                             * @memberof google.cloud.databasecenter.v1beta.Affiliation.Lineage
+                             * @static
+                             * @param {Object.<string,*>} object Plain object
+                             * @returns {google.cloud.databasecenter.v1beta.Affiliation.Lineage} Lineage
+                             */
+                            Lineage.fromObject = function fromObject(object) {
+                                if (object instanceof $root.google.cloud.databasecenter.v1beta.Affiliation.Lineage)
+                                    return object;
+                                var message = new $root.google.cloud.databasecenter.v1beta.Affiliation.Lineage();
+                                if (object.sourceFqn != null)
+                                    message.sourceFqn = String(object.sourceFqn);
+                                if (object.targetFqn != null)
+                                    message.targetFqn = String(object.targetFqn);
+                                if (object.processFqn != null)
+                                    message.processFqn = String(object.processFqn);
+                                switch (object.processType) {
+                                default:
+                                    if (typeof object.processType === "number") {
+                                        message.processType = object.processType;
+                                        break;
+                                    }
+                                    break;
+                                case "PROCESS_TYPE_UNSPECIFIED":
+                                case 0:
+                                    message.processType = 0;
+                                    break;
+                                case "COMPOSER":
+                                case 1:
+                                    message.processType = 1;
+                                    break;
+                                case "DATASTREAM":
+                                case 2:
+                                    message.processType = 2;
+                                    break;
+                                case "DATAFLOW":
+                                case 3:
+                                    message.processType = 3;
+                                    break;
+                                case "BIGQUERY":
+                                case 4:
+                                    message.processType = 4;
+                                    break;
+                                case "DATA_FUSION":
+                                case 5:
+                                    message.processType = 5;
+                                    break;
+                                case "DATAPROC":
+                                case 6:
+                                    message.processType = 6;
+                                    break;
+                                }
+                                return message;
+                            };
+    
+                            /**
+                             * Creates a plain object from a Lineage message. Also converts values to other types if specified.
+                             * @function toObject
+                             * @memberof google.cloud.databasecenter.v1beta.Affiliation.Lineage
+                             * @static
+                             * @param {google.cloud.databasecenter.v1beta.Affiliation.Lineage} message Lineage
+                             * @param {$protobuf.IConversionOptions} [options] Conversion options
+                             * @returns {Object.<string,*>} Plain object
+                             */
+                            Lineage.toObject = function toObject(message, options) {
+                                if (!options)
+                                    options = {};
+                                var object = {};
+                                if (options.defaults) {
+                                    object.sourceFqn = "";
+                                    object.targetFqn = "";
+                                    object.processFqn = "";
+                                    object.processType = options.enums === String ? "PROCESS_TYPE_UNSPECIFIED" : 0;
+                                }
+                                if (message.sourceFqn != null && message.hasOwnProperty("sourceFqn"))
+                                    object.sourceFqn = message.sourceFqn;
+                                if (message.targetFqn != null && message.hasOwnProperty("targetFqn"))
+                                    object.targetFqn = message.targetFqn;
+                                if (message.processFqn != null && message.hasOwnProperty("processFqn"))
+                                    object.processFqn = message.processFqn;
+                                if (message.processType != null && message.hasOwnProperty("processType"))
+                                    object.processType = options.enums === String ? $root.google.cloud.databasecenter.v1beta.Affiliation.ProcessType[message.processType] === undefined ? message.processType : $root.google.cloud.databasecenter.v1beta.Affiliation.ProcessType[message.processType] : message.processType;
+                                return object;
+                            };
+    
+                            /**
+                             * Converts this Lineage to JSON.
+                             * @function toJSON
+                             * @memberof google.cloud.databasecenter.v1beta.Affiliation.Lineage
+                             * @instance
+                             * @returns {Object.<string,*>} JSON object
+                             */
+                            Lineage.prototype.toJSON = function toJSON() {
+                                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                            };
+    
+                            /**
+                             * Gets the default type url for Lineage
+                             * @function getTypeUrl
+                             * @memberof google.cloud.databasecenter.v1beta.Affiliation.Lineage
+                             * @static
+                             * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                             * @returns {string} The default type url
+                             */
+                            Lineage.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                                if (typeUrlPrefix === undefined) {
+                                    typeUrlPrefix = "type.googleapis.com";
+                                }
+                                return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.Affiliation.Lineage";
+                            };
+    
+                            return Lineage;
+                        })();
+    
+                        /**
+                         * ProcessType enum.
+                         * @name google.cloud.databasecenter.v1beta.Affiliation.ProcessType
+                         * @enum {number}
+                         * @property {number} PROCESS_TYPE_UNSPECIFIED=0 PROCESS_TYPE_UNSPECIFIED value
+                         * @property {number} COMPOSER=1 COMPOSER value
+                         * @property {number} DATASTREAM=2 DATASTREAM value
+                         * @property {number} DATAFLOW=3 DATAFLOW value
+                         * @property {number} BIGQUERY=4 BIGQUERY value
+                         * @property {number} DATA_FUSION=5 DATA_FUSION value
+                         * @property {number} DATAPROC=6 DATAPROC value
+                         */
+                        Affiliation.ProcessType = (function() {
+                            var valuesById = {}, values = Object.create(valuesById);
+                            values[valuesById[0] = "PROCESS_TYPE_UNSPECIFIED"] = 0;
+                            values[valuesById[1] = "COMPOSER"] = 1;
+                            values[valuesById[2] = "DATASTREAM"] = 2;
+                            values[valuesById[3] = "DATAFLOW"] = 3;
+                            values[valuesById[4] = "BIGQUERY"] = 4;
+                            values[valuesById[5] = "DATA_FUSION"] = 5;
+                            values[valuesById[6] = "DATAPROC"] = 6;
+                            return values;
+                        })();
+    
+                        return Affiliation;
+                    })();
+    
+                    v1beta.MachineConfig = (function() {
+    
+                        /**
+                         * Properties of a MachineConfig.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IMachineConfig
+                         * @property {number|Long|null} [memorySizeBytes] MachineConfig memorySizeBytes
+                         * @property {number|null} [shardCount] MachineConfig shardCount
+                         * @property {number|null} [vcpuCount] MachineConfig vcpuCount
+                         * @property {number|Long|null} [baselineSlotCount] MachineConfig baselineSlotCount
+                         * @property {number|Long|null} [maxReservationSlotCount] MachineConfig maxReservationSlotCount
+                         */
+    
+                        /**
+                         * Constructs a new MachineConfig.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a MachineConfig.
+                         * @implements IMachineConfig
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IMachineConfig=} [properties] Properties to set
+                         */
+                        function MachineConfig(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * MachineConfig memorySizeBytes.
+                         * @member {number|Long} memorySizeBytes
+                         * @memberof google.cloud.databasecenter.v1beta.MachineConfig
+                         * @instance
+                         */
+                        MachineConfig.prototype.memorySizeBytes = $util.Long ? $util.Long.fromBits(0,0,false) : 0;
+    
+                        /**
+                         * MachineConfig shardCount.
+                         * @member {number|null|undefined} shardCount
+                         * @memberof google.cloud.databasecenter.v1beta.MachineConfig
+                         * @instance
+                         */
+                        MachineConfig.prototype.shardCount = null;
+    
+                        /**
+                         * MachineConfig vcpuCount.
+                         * @member {number|null|undefined} vcpuCount
+                         * @memberof google.cloud.databasecenter.v1beta.MachineConfig
+                         * @instance
+                         */
+                        MachineConfig.prototype.vcpuCount = null;
+    
+                        /**
+                         * MachineConfig baselineSlotCount.
+                         * @member {number|Long|null|undefined} baselineSlotCount
+                         * @memberof google.cloud.databasecenter.v1beta.MachineConfig
+                         * @instance
+                         */
+                        MachineConfig.prototype.baselineSlotCount = null;
+    
+                        /**
+                         * MachineConfig maxReservationSlotCount.
+                         * @member {number|Long|null|undefined} maxReservationSlotCount
+                         * @memberof google.cloud.databasecenter.v1beta.MachineConfig
+                         * @instance
+                         */
+                        MachineConfig.prototype.maxReservationSlotCount = null;
+    
+                        // OneOf field names bound to virtual getters and setters
+                        var $oneOfFields;
+    
+                        // Virtual OneOf for proto3 optional field
+                        Object.defineProperty(MachineConfig.prototype, "_shardCount", {
+                            get: $util.oneOfGetter($oneOfFields = ["shardCount"]),
+                            set: $util.oneOfSetter($oneOfFields)
+                        });
+    
+                        // Virtual OneOf for proto3 optional field
+                        Object.defineProperty(MachineConfig.prototype, "_vcpuCount", {
+                            get: $util.oneOfGetter($oneOfFields = ["vcpuCount"]),
+                            set: $util.oneOfSetter($oneOfFields)
+                        });
+    
+                        // Virtual OneOf for proto3 optional field
+                        Object.defineProperty(MachineConfig.prototype, "_baselineSlotCount", {
+                            get: $util.oneOfGetter($oneOfFields = ["baselineSlotCount"]),
+                            set: $util.oneOfSetter($oneOfFields)
+                        });
+    
+                        // Virtual OneOf for proto3 optional field
+                        Object.defineProperty(MachineConfig.prototype, "_maxReservationSlotCount", {
+                            get: $util.oneOfGetter($oneOfFields = ["maxReservationSlotCount"]),
+                            set: $util.oneOfSetter($oneOfFields)
+                        });
+    
+                        /**
+                         * Creates a new MachineConfig instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.MachineConfig
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IMachineConfig=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.MachineConfig} MachineConfig instance
+                         */
+                        MachineConfig.create = function create(properties) {
+                            return new MachineConfig(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified MachineConfig message. Does not implicitly {@link google.cloud.databasecenter.v1beta.MachineConfig.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.MachineConfig
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IMachineConfig} message MachineConfig message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        MachineConfig.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.memorySizeBytes != null && Object.hasOwnProperty.call(message, "memorySizeBytes"))
+                                writer.uint32(/* id 2, wireType 0 =*/16).int64(message.memorySizeBytes);
+                            if (message.shardCount != null && Object.hasOwnProperty.call(message, "shardCount"))
+                                writer.uint32(/* id 3, wireType 0 =*/24).int32(message.shardCount);
+                            if (message.vcpuCount != null && Object.hasOwnProperty.call(message, "vcpuCount"))
+                                writer.uint32(/* id 4, wireType 1 =*/33).double(message.vcpuCount);
+                            if (message.baselineSlotCount != null && Object.hasOwnProperty.call(message, "baselineSlotCount"))
+                                writer.uint32(/* id 5, wireType 0 =*/40).int64(message.baselineSlotCount);
+                            if (message.maxReservationSlotCount != null && Object.hasOwnProperty.call(message, "maxReservationSlotCount"))
+                                writer.uint32(/* id 6, wireType 0 =*/48).int64(message.maxReservationSlotCount);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified MachineConfig message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.MachineConfig.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.MachineConfig
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IMachineConfig} message MachineConfig message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        MachineConfig.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a MachineConfig message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.MachineConfig
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.MachineConfig} MachineConfig
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        MachineConfig.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.MachineConfig();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 2: {
+                                        message.memorySizeBytes = reader.int64();
+                                        break;
+                                    }
+                                case 3: {
+                                        message.shardCount = reader.int32();
+                                        break;
+                                    }
+                                case 4: {
+                                        message.vcpuCount = reader.double();
+                                        break;
+                                    }
+                                case 5: {
+                                        message.baselineSlotCount = reader.int64();
+                                        break;
+                                    }
+                                case 6: {
+                                        message.maxReservationSlotCount = reader.int64();
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a MachineConfig message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.MachineConfig
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.MachineConfig} MachineConfig
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        MachineConfig.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a MachineConfig message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.MachineConfig
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        MachineConfig.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            var properties = {};
+                            if (message.memorySizeBytes != null && message.hasOwnProperty("memorySizeBytes"))
+                                if (!$util.isInteger(message.memorySizeBytes) && !(message.memorySizeBytes && $util.isInteger(message.memorySizeBytes.low) && $util.isInteger(message.memorySizeBytes.high)))
+                                    return "memorySizeBytes: integer|Long expected";
+                            if (message.shardCount != null && message.hasOwnProperty("shardCount")) {
+                                properties._shardCount = 1;
+                                if (!$util.isInteger(message.shardCount))
+                                    return "shardCount: integer expected";
+                            }
+                            if (message.vcpuCount != null && message.hasOwnProperty("vcpuCount")) {
+                                properties._vcpuCount = 1;
+                                if (typeof message.vcpuCount !== "number")
+                                    return "vcpuCount: number expected";
+                            }
+                            if (message.baselineSlotCount != null && message.hasOwnProperty("baselineSlotCount")) {
+                                properties._baselineSlotCount = 1;
+                                if (!$util.isInteger(message.baselineSlotCount) && !(message.baselineSlotCount && $util.isInteger(message.baselineSlotCount.low) && $util.isInteger(message.baselineSlotCount.high)))
+                                    return "baselineSlotCount: integer|Long expected";
+                            }
+                            if (message.maxReservationSlotCount != null && message.hasOwnProperty("maxReservationSlotCount")) {
+                                properties._maxReservationSlotCount = 1;
+                                if (!$util.isInteger(message.maxReservationSlotCount) && !(message.maxReservationSlotCount && $util.isInteger(message.maxReservationSlotCount.low) && $util.isInteger(message.maxReservationSlotCount.high)))
+                                    return "maxReservationSlotCount: integer|Long expected";
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a MachineConfig message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.MachineConfig
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.MachineConfig} MachineConfig
+                         */
+                        MachineConfig.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.MachineConfig)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.MachineConfig();
+                            if (object.memorySizeBytes != null)
+                                if ($util.Long)
+                                    (message.memorySizeBytes = $util.Long.fromValue(object.memorySizeBytes)).unsigned = false;
+                                else if (typeof object.memorySizeBytes === "string")
+                                    message.memorySizeBytes = parseInt(object.memorySizeBytes, 10);
+                                else if (typeof object.memorySizeBytes === "number")
+                                    message.memorySizeBytes = object.memorySizeBytes;
+                                else if (typeof object.memorySizeBytes === "object")
+                                    message.memorySizeBytes = new $util.LongBits(object.memorySizeBytes.low >>> 0, object.memorySizeBytes.high >>> 0).toNumber();
+                            if (object.shardCount != null)
+                                message.shardCount = object.shardCount | 0;
+                            if (object.vcpuCount != null)
+                                message.vcpuCount = Number(object.vcpuCount);
+                            if (object.baselineSlotCount != null)
+                                if ($util.Long)
+                                    (message.baselineSlotCount = $util.Long.fromValue(object.baselineSlotCount)).unsigned = false;
+                                else if (typeof object.baselineSlotCount === "string")
+                                    message.baselineSlotCount = parseInt(object.baselineSlotCount, 10);
+                                else if (typeof object.baselineSlotCount === "number")
+                                    message.baselineSlotCount = object.baselineSlotCount;
+                                else if (typeof object.baselineSlotCount === "object")
+                                    message.baselineSlotCount = new $util.LongBits(object.baselineSlotCount.low >>> 0, object.baselineSlotCount.high >>> 0).toNumber();
+                            if (object.maxReservationSlotCount != null)
+                                if ($util.Long)
+                                    (message.maxReservationSlotCount = $util.Long.fromValue(object.maxReservationSlotCount)).unsigned = false;
+                                else if (typeof object.maxReservationSlotCount === "string")
+                                    message.maxReservationSlotCount = parseInt(object.maxReservationSlotCount, 10);
+                                else if (typeof object.maxReservationSlotCount === "number")
+                                    message.maxReservationSlotCount = object.maxReservationSlotCount;
+                                else if (typeof object.maxReservationSlotCount === "object")
+                                    message.maxReservationSlotCount = new $util.LongBits(object.maxReservationSlotCount.low >>> 0, object.maxReservationSlotCount.high >>> 0).toNumber();
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a MachineConfig message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.MachineConfig
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.MachineConfig} message MachineConfig
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        MachineConfig.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.defaults)
+                                if ($util.Long) {
+                                    var long = new $util.Long(0, 0, false);
+                                    object.memorySizeBytes = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
+                                } else
+                                    object.memorySizeBytes = options.longs === String ? "0" : 0;
+                            if (message.memorySizeBytes != null && message.hasOwnProperty("memorySizeBytes"))
+                                if (typeof message.memorySizeBytes === "number")
+                                    object.memorySizeBytes = options.longs === String ? String(message.memorySizeBytes) : message.memorySizeBytes;
+                                else
+                                    object.memorySizeBytes = options.longs === String ? $util.Long.prototype.toString.call(message.memorySizeBytes) : options.longs === Number ? new $util.LongBits(message.memorySizeBytes.low >>> 0, message.memorySizeBytes.high >>> 0).toNumber() : message.memorySizeBytes;
+                            if (message.shardCount != null && message.hasOwnProperty("shardCount")) {
+                                object.shardCount = message.shardCount;
+                                if (options.oneofs)
+                                    object._shardCount = "shardCount";
+                            }
+                            if (message.vcpuCount != null && message.hasOwnProperty("vcpuCount")) {
+                                object.vcpuCount = options.json && !isFinite(message.vcpuCount) ? String(message.vcpuCount) : message.vcpuCount;
+                                if (options.oneofs)
+                                    object._vcpuCount = "vcpuCount";
+                            }
+                            if (message.baselineSlotCount != null && message.hasOwnProperty("baselineSlotCount")) {
+                                if (typeof message.baselineSlotCount === "number")
+                                    object.baselineSlotCount = options.longs === String ? String(message.baselineSlotCount) : message.baselineSlotCount;
+                                else
+                                    object.baselineSlotCount = options.longs === String ? $util.Long.prototype.toString.call(message.baselineSlotCount) : options.longs === Number ? new $util.LongBits(message.baselineSlotCount.low >>> 0, message.baselineSlotCount.high >>> 0).toNumber() : message.baselineSlotCount;
+                                if (options.oneofs)
+                                    object._baselineSlotCount = "baselineSlotCount";
+                            }
+                            if (message.maxReservationSlotCount != null && message.hasOwnProperty("maxReservationSlotCount")) {
+                                if (typeof message.maxReservationSlotCount === "number")
+                                    object.maxReservationSlotCount = options.longs === String ? String(message.maxReservationSlotCount) : message.maxReservationSlotCount;
+                                else
+                                    object.maxReservationSlotCount = options.longs === String ? $util.Long.prototype.toString.call(message.maxReservationSlotCount) : options.longs === Number ? new $util.LongBits(message.maxReservationSlotCount.low >>> 0, message.maxReservationSlotCount.high >>> 0).toNumber() : message.maxReservationSlotCount;
+                                if (options.oneofs)
+                                    object._maxReservationSlotCount = "maxReservationSlotCount";
+                            }
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this MachineConfig to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.MachineConfig
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        MachineConfig.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for MachineConfig
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.MachineConfig
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        MachineConfig.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.MachineConfig";
+                        };
+    
+                        return MachineConfig;
+                    })();
+    
+                    /**
+                     * Phase enum.
+                     * @name google.cloud.databasecenter.v1beta.Phase
+                     * @enum {number}
+                     * @property {number} PHASE_UNSPECIFIED=0 PHASE_UNSPECIFIED value
+                     * @property {number} PHASE_WEEK1=1 PHASE_WEEK1 value
+                     * @property {number} PHASE_WEEK2=2 PHASE_WEEK2 value
+                     * @property {number} PHASE_WEEK5=3 PHASE_WEEK5 value
+                     * @property {number} PHASE_ANY=4 PHASE_ANY value
+                     */
+                    v1beta.Phase = (function() {
+                        var valuesById = {}, values = Object.create(valuesById);
+                        values[valuesById[0] = "PHASE_UNSPECIFIED"] = 0;
+                        values[valuesById[1] = "PHASE_WEEK1"] = 1;
+                        values[valuesById[2] = "PHASE_WEEK2"] = 2;
+                        values[valuesById[3] = "PHASE_WEEK5"] = 3;
+                        values[valuesById[4] = "PHASE_ANY"] = 4;
+                        return values;
+                    })();
+    
+                    /**
+                     * MaintenanceState enum.
+                     * @name google.cloud.databasecenter.v1beta.MaintenanceState
+                     * @enum {number}
+                     * @property {number} MAINTENANCE_STATE_UNSPECIFIED=0 MAINTENANCE_STATE_UNSPECIFIED value
+                     * @property {number} MAINTENANCE_STATE_SCHEDULED=1 MAINTENANCE_STATE_SCHEDULED value
+                     * @property {number} MAINTENANCE_STATE_IN_PROGRESS=2 MAINTENANCE_STATE_IN_PROGRESS value
+                     * @property {number} MAINTENANCE_STATE_COMPLETED=3 MAINTENANCE_STATE_COMPLETED value
+                     * @property {number} MAINTENANCE_STATE_FAILED=4 MAINTENANCE_STATE_FAILED value
+                     */
+                    v1beta.MaintenanceState = (function() {
+                        var valuesById = {}, values = Object.create(valuesById);
+                        values[valuesById[0] = "MAINTENANCE_STATE_UNSPECIFIED"] = 0;
+                        values[valuesById[1] = "MAINTENANCE_STATE_SCHEDULED"] = 1;
+                        values[valuesById[2] = "MAINTENANCE_STATE_IN_PROGRESS"] = 2;
+                        values[valuesById[3] = "MAINTENANCE_STATE_COMPLETED"] = 3;
+                        values[valuesById[4] = "MAINTENANCE_STATE_FAILED"] = 4;
+                        return values;
+                    })();
+    
+                    /**
+                     * PossibleFailureReason enum.
+                     * @name google.cloud.databasecenter.v1beta.PossibleFailureReason
+                     * @enum {number}
+                     * @property {number} POSSIBLE_FAILURE_REASON_UNSPECIFIED=0 POSSIBLE_FAILURE_REASON_UNSPECIFIED value
+                     * @property {number} POSSIBLE_FAILURE_REASON_DENY_POLICY_CONFLICT=1 POSSIBLE_FAILURE_REASON_DENY_POLICY_CONFLICT value
+                     * @property {number} POSSIBLE_FAILURE_REASON_INSTANCE_IN_STOPPED_STATE=2 POSSIBLE_FAILURE_REASON_INSTANCE_IN_STOPPED_STATE value
+                     */
+                    v1beta.PossibleFailureReason = (function() {
+                        var valuesById = {}, values = Object.create(valuesById);
+                        values[valuesById[0] = "POSSIBLE_FAILURE_REASON_UNSPECIFIED"] = 0;
+                        values[valuesById[1] = "POSSIBLE_FAILURE_REASON_DENY_POLICY_CONFLICT"] = 1;
+                        values[valuesById[2] = "POSSIBLE_FAILURE_REASON_INSTANCE_IN_STOPPED_STATE"] = 2;
+                        return values;
+                    })();
+    
+                    v1beta.ResourceMaintenanceSchedule = (function() {
+    
+                        /**
+                         * Properties of a ResourceMaintenanceSchedule.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IResourceMaintenanceSchedule
+                         * @property {google.type.ITimeOfDay|null} [startTime] ResourceMaintenanceSchedule startTime
+                         * @property {google.type.DayOfWeek|null} [day] ResourceMaintenanceSchedule day
+                         * @property {google.cloud.databasecenter.v1beta.Phase|null} [phase] ResourceMaintenanceSchedule phase
+                         */
+    
+                        /**
+                         * Constructs a new ResourceMaintenanceSchedule.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a ResourceMaintenanceSchedule.
+                         * @implements IResourceMaintenanceSchedule
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IResourceMaintenanceSchedule=} [properties] Properties to set
+                         */
+                        function ResourceMaintenanceSchedule(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * ResourceMaintenanceSchedule startTime.
+                         * @member {google.type.ITimeOfDay|null|undefined} startTime
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule
+                         * @instance
+                         */
+                        ResourceMaintenanceSchedule.prototype.startTime = null;
+    
+                        /**
+                         * ResourceMaintenanceSchedule day.
+                         * @member {google.type.DayOfWeek} day
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule
+                         * @instance
+                         */
+                        ResourceMaintenanceSchedule.prototype.day = 0;
+    
+                        /**
+                         * ResourceMaintenanceSchedule phase.
+                         * @member {google.cloud.databasecenter.v1beta.Phase} phase
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule
+                         * @instance
+                         */
+                        ResourceMaintenanceSchedule.prototype.phase = 0;
+    
+                        /**
+                         * Creates a new ResourceMaintenanceSchedule instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IResourceMaintenanceSchedule=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule} ResourceMaintenanceSchedule instance
+                         */
+                        ResourceMaintenanceSchedule.create = function create(properties) {
+                            return new ResourceMaintenanceSchedule(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified ResourceMaintenanceSchedule message. Does not implicitly {@link google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IResourceMaintenanceSchedule} message ResourceMaintenanceSchedule message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        ResourceMaintenanceSchedule.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.startTime != null && Object.hasOwnProperty.call(message, "startTime"))
+                                $root.google.type.TimeOfDay.encode(message.startTime, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                            if (message.day != null && Object.hasOwnProperty.call(message, "day"))
+                                writer.uint32(/* id 2, wireType 0 =*/16).int32(message.day);
+                            if (message.phase != null && Object.hasOwnProperty.call(message, "phase"))
+                                writer.uint32(/* id 3, wireType 0 =*/24).int32(message.phase);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified ResourceMaintenanceSchedule message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IResourceMaintenanceSchedule} message ResourceMaintenanceSchedule message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        ResourceMaintenanceSchedule.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a ResourceMaintenanceSchedule message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule} ResourceMaintenanceSchedule
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        ResourceMaintenanceSchedule.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.startTime = $root.google.type.TimeOfDay.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 2: {
+                                        message.day = reader.int32();
+                                        break;
+                                    }
+                                case 3: {
+                                        message.phase = reader.int32();
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a ResourceMaintenanceSchedule message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule} ResourceMaintenanceSchedule
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        ResourceMaintenanceSchedule.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a ResourceMaintenanceSchedule message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        ResourceMaintenanceSchedule.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.startTime != null && message.hasOwnProperty("startTime")) {
+                                var error = $root.google.type.TimeOfDay.verify(message.startTime);
+                                if (error)
+                                    return "startTime." + error;
+                            }
+                            if (message.day != null && message.hasOwnProperty("day"))
+                                switch (message.day) {
+                                default:
+                                    return "day: enum value expected";
+                                case 0:
+                                case 1:
+                                case 2:
+                                case 3:
+                                case 4:
+                                case 5:
+                                case 6:
+                                case 7:
+                                    break;
+                                }
+                            if (message.phase != null && message.hasOwnProperty("phase"))
+                                switch (message.phase) {
+                                default:
+                                    return "phase: enum value expected";
+                                case 0:
+                                case 1:
+                                case 2:
+                                case 3:
+                                case 4:
+                                    break;
+                                }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a ResourceMaintenanceSchedule message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule} ResourceMaintenanceSchedule
+                         */
+                        ResourceMaintenanceSchedule.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule();
+                            if (object.startTime != null) {
+                                if (typeof object.startTime !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule.startTime: object expected");
+                                message.startTime = $root.google.type.TimeOfDay.fromObject(object.startTime);
+                            }
+                            switch (object.day) {
+                            default:
+                                if (typeof object.day === "number") {
+                                    message.day = object.day;
+                                    break;
+                                }
+                                break;
+                            case "DAY_OF_WEEK_UNSPECIFIED":
+                            case 0:
+                                message.day = 0;
+                                break;
+                            case "MONDAY":
+                            case 1:
+                                message.day = 1;
+                                break;
+                            case "TUESDAY":
+                            case 2:
+                                message.day = 2;
+                                break;
+                            case "WEDNESDAY":
+                            case 3:
+                                message.day = 3;
+                                break;
+                            case "THURSDAY":
+                            case 4:
+                                message.day = 4;
+                                break;
+                            case "FRIDAY":
+                            case 5:
+                                message.day = 5;
+                                break;
+                            case "SATURDAY":
+                            case 6:
+                                message.day = 6;
+                                break;
+                            case "SUNDAY":
+                            case 7:
+                                message.day = 7;
+                                break;
+                            }
+                            switch (object.phase) {
+                            default:
+                                if (typeof object.phase === "number") {
+                                    message.phase = object.phase;
+                                    break;
+                                }
+                                break;
+                            case "PHASE_UNSPECIFIED":
+                            case 0:
+                                message.phase = 0;
+                                break;
+                            case "PHASE_WEEK1":
+                            case 1:
+                                message.phase = 1;
+                                break;
+                            case "PHASE_WEEK2":
+                            case 2:
+                                message.phase = 2;
+                                break;
+                            case "PHASE_WEEK5":
+                            case 3:
+                                message.phase = 3;
+                                break;
+                            case "PHASE_ANY":
+                            case 4:
+                                message.phase = 4;
+                                break;
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a ResourceMaintenanceSchedule message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule} message ResourceMaintenanceSchedule
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        ResourceMaintenanceSchedule.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.defaults) {
+                                object.startTime = null;
+                                object.day = options.enums === String ? "DAY_OF_WEEK_UNSPECIFIED" : 0;
+                                object.phase = options.enums === String ? "PHASE_UNSPECIFIED" : 0;
+                            }
+                            if (message.startTime != null && message.hasOwnProperty("startTime"))
+                                object.startTime = $root.google.type.TimeOfDay.toObject(message.startTime, options);
+                            if (message.day != null && message.hasOwnProperty("day"))
+                                object.day = options.enums === String ? $root.google.type.DayOfWeek[message.day] === undefined ? message.day : $root.google.type.DayOfWeek[message.day] : message.day;
+                            if (message.phase != null && message.hasOwnProperty("phase"))
+                                object.phase = options.enums === String ? $root.google.cloud.databasecenter.v1beta.Phase[message.phase] === undefined ? message.phase : $root.google.cloud.databasecenter.v1beta.Phase[message.phase] : message.phase;
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this ResourceMaintenanceSchedule to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        ResourceMaintenanceSchedule.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for ResourceMaintenanceSchedule
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        ResourceMaintenanceSchedule.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule";
+                        };
+    
+                        return ResourceMaintenanceSchedule;
+                    })();
+    
+                    v1beta.ResourceMaintenanceDenySchedule = (function() {
+    
+                        /**
+                         * Properties of a ResourceMaintenanceDenySchedule.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IResourceMaintenanceDenySchedule
+                         * @property {google.type.IDate|null} [startDate] ResourceMaintenanceDenySchedule startDate
+                         * @property {google.type.IDate|null} [endDate] ResourceMaintenanceDenySchedule endDate
+                         * @property {google.type.ITimeOfDay|null} [time] ResourceMaintenanceDenySchedule time
+                         */
+    
+                        /**
+                         * Constructs a new ResourceMaintenanceDenySchedule.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a ResourceMaintenanceDenySchedule.
+                         * @implements IResourceMaintenanceDenySchedule
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IResourceMaintenanceDenySchedule=} [properties] Properties to set
+                         */
+                        function ResourceMaintenanceDenySchedule(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * ResourceMaintenanceDenySchedule startDate.
+                         * @member {google.type.IDate|null|undefined} startDate
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule
+                         * @instance
+                         */
+                        ResourceMaintenanceDenySchedule.prototype.startDate = null;
+    
+                        /**
+                         * ResourceMaintenanceDenySchedule endDate.
+                         * @member {google.type.IDate|null|undefined} endDate
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule
+                         * @instance
+                         */
+                        ResourceMaintenanceDenySchedule.prototype.endDate = null;
+    
+                        /**
+                         * ResourceMaintenanceDenySchedule time.
+                         * @member {google.type.ITimeOfDay|null|undefined} time
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule
+                         * @instance
+                         */
+                        ResourceMaintenanceDenySchedule.prototype.time = null;
+    
+                        /**
+                         * Creates a new ResourceMaintenanceDenySchedule instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IResourceMaintenanceDenySchedule=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule} ResourceMaintenanceDenySchedule instance
+                         */
+                        ResourceMaintenanceDenySchedule.create = function create(properties) {
+                            return new ResourceMaintenanceDenySchedule(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified ResourceMaintenanceDenySchedule message. Does not implicitly {@link google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IResourceMaintenanceDenySchedule} message ResourceMaintenanceDenySchedule message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        ResourceMaintenanceDenySchedule.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.startDate != null && Object.hasOwnProperty.call(message, "startDate"))
+                                $root.google.type.Date.encode(message.startDate, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                            if (message.endDate != null && Object.hasOwnProperty.call(message, "endDate"))
+                                $root.google.type.Date.encode(message.endDate, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+                            if (message.time != null && Object.hasOwnProperty.call(message, "time"))
+                                $root.google.type.TimeOfDay.encode(message.time, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified ResourceMaintenanceDenySchedule message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IResourceMaintenanceDenySchedule} message ResourceMaintenanceDenySchedule message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        ResourceMaintenanceDenySchedule.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a ResourceMaintenanceDenySchedule message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule} ResourceMaintenanceDenySchedule
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        ResourceMaintenanceDenySchedule.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.startDate = $root.google.type.Date.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 2: {
+                                        message.endDate = $root.google.type.Date.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 3: {
+                                        message.time = $root.google.type.TimeOfDay.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a ResourceMaintenanceDenySchedule message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule} ResourceMaintenanceDenySchedule
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        ResourceMaintenanceDenySchedule.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a ResourceMaintenanceDenySchedule message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        ResourceMaintenanceDenySchedule.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.startDate != null && message.hasOwnProperty("startDate")) {
+                                var error = $root.google.type.Date.verify(message.startDate);
+                                if (error)
+                                    return "startDate." + error;
+                            }
+                            if (message.endDate != null && message.hasOwnProperty("endDate")) {
+                                var error = $root.google.type.Date.verify(message.endDate);
+                                if (error)
+                                    return "endDate." + error;
+                            }
+                            if (message.time != null && message.hasOwnProperty("time")) {
+                                var error = $root.google.type.TimeOfDay.verify(message.time);
+                                if (error)
+                                    return "time." + error;
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a ResourceMaintenanceDenySchedule message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule} ResourceMaintenanceDenySchedule
+                         */
+                        ResourceMaintenanceDenySchedule.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule();
+                            if (object.startDate != null) {
+                                if (typeof object.startDate !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule.startDate: object expected");
+                                message.startDate = $root.google.type.Date.fromObject(object.startDate);
+                            }
+                            if (object.endDate != null) {
+                                if (typeof object.endDate !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule.endDate: object expected");
+                                message.endDate = $root.google.type.Date.fromObject(object.endDate);
+                            }
+                            if (object.time != null) {
+                                if (typeof object.time !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule.time: object expected");
+                                message.time = $root.google.type.TimeOfDay.fromObject(object.time);
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a ResourceMaintenanceDenySchedule message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule} message ResourceMaintenanceDenySchedule
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        ResourceMaintenanceDenySchedule.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.defaults) {
+                                object.startDate = null;
+                                object.endDate = null;
+                                object.time = null;
+                            }
+                            if (message.startDate != null && message.hasOwnProperty("startDate"))
+                                object.startDate = $root.google.type.Date.toObject(message.startDate, options);
+                            if (message.endDate != null && message.hasOwnProperty("endDate"))
+                                object.endDate = $root.google.type.Date.toObject(message.endDate, options);
+                            if (message.time != null && message.hasOwnProperty("time"))
+                                object.time = $root.google.type.TimeOfDay.toObject(message.time, options);
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this ResourceMaintenanceDenySchedule to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        ResourceMaintenanceDenySchedule.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for ResourceMaintenanceDenySchedule
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        ResourceMaintenanceDenySchedule.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule";
+                        };
+    
+                        return ResourceMaintenanceDenySchedule;
+                    })();
+    
+                    v1beta.UpcomingMaintenance = (function() {
+    
+                        /**
+                         * Properties of an UpcomingMaintenance.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IUpcomingMaintenance
+                         * @property {google.protobuf.ITimestamp|null} [startTime] UpcomingMaintenance startTime
+                         * @property {google.protobuf.ITimestamp|null} [endTime] UpcomingMaintenance endTime
+                         */
+    
+                        /**
+                         * Constructs a new UpcomingMaintenance.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents an UpcomingMaintenance.
+                         * @implements IUpcomingMaintenance
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IUpcomingMaintenance=} [properties] Properties to set
+                         */
+                        function UpcomingMaintenance(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * UpcomingMaintenance startTime.
+                         * @member {google.protobuf.ITimestamp|null|undefined} startTime
+                         * @memberof google.cloud.databasecenter.v1beta.UpcomingMaintenance
+                         * @instance
+                         */
+                        UpcomingMaintenance.prototype.startTime = null;
+    
+                        /**
+                         * UpcomingMaintenance endTime.
+                         * @member {google.protobuf.ITimestamp|null|undefined} endTime
+                         * @memberof google.cloud.databasecenter.v1beta.UpcomingMaintenance
+                         * @instance
+                         */
+                        UpcomingMaintenance.prototype.endTime = null;
+    
+                        /**
+                         * Creates a new UpcomingMaintenance instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.UpcomingMaintenance
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IUpcomingMaintenance=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.UpcomingMaintenance} UpcomingMaintenance instance
+                         */
+                        UpcomingMaintenance.create = function create(properties) {
+                            return new UpcomingMaintenance(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified UpcomingMaintenance message. Does not implicitly {@link google.cloud.databasecenter.v1beta.UpcomingMaintenance.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.UpcomingMaintenance
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IUpcomingMaintenance} message UpcomingMaintenance message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        UpcomingMaintenance.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.startTime != null && Object.hasOwnProperty.call(message, "startTime"))
+                                $root.google.protobuf.Timestamp.encode(message.startTime, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                            if (message.endTime != null && Object.hasOwnProperty.call(message, "endTime"))
+                                $root.google.protobuf.Timestamp.encode(message.endTime, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified UpcomingMaintenance message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.UpcomingMaintenance.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.UpcomingMaintenance
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IUpcomingMaintenance} message UpcomingMaintenance message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        UpcomingMaintenance.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes an UpcomingMaintenance message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.UpcomingMaintenance
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.UpcomingMaintenance} UpcomingMaintenance
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        UpcomingMaintenance.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.UpcomingMaintenance();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 2: {
+                                        message.endTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes an UpcomingMaintenance message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.UpcomingMaintenance
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.UpcomingMaintenance} UpcomingMaintenance
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        UpcomingMaintenance.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies an UpcomingMaintenance message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.UpcomingMaintenance
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        UpcomingMaintenance.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.startTime != null && message.hasOwnProperty("startTime")) {
+                                var error = $root.google.protobuf.Timestamp.verify(message.startTime);
+                                if (error)
+                                    return "startTime." + error;
+                            }
+                            if (message.endTime != null && message.hasOwnProperty("endTime")) {
+                                var error = $root.google.protobuf.Timestamp.verify(message.endTime);
+                                if (error)
+                                    return "endTime." + error;
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates an UpcomingMaintenance message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.UpcomingMaintenance
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.UpcomingMaintenance} UpcomingMaintenance
+                         */
+                        UpcomingMaintenance.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.UpcomingMaintenance)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.UpcomingMaintenance();
+                            if (object.startTime != null) {
+                                if (typeof object.startTime !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.UpcomingMaintenance.startTime: object expected");
+                                message.startTime = $root.google.protobuf.Timestamp.fromObject(object.startTime);
+                            }
+                            if (object.endTime != null) {
+                                if (typeof object.endTime !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.UpcomingMaintenance.endTime: object expected");
+                                message.endTime = $root.google.protobuf.Timestamp.fromObject(object.endTime);
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from an UpcomingMaintenance message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.UpcomingMaintenance
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.UpcomingMaintenance} message UpcomingMaintenance
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        UpcomingMaintenance.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.defaults) {
+                                object.startTime = null;
+                                object.endTime = null;
+                            }
+                            if (message.startTime != null && message.hasOwnProperty("startTime"))
+                                object.startTime = $root.google.protobuf.Timestamp.toObject(message.startTime, options);
+                            if (message.endTime != null && message.hasOwnProperty("endTime"))
+                                object.endTime = $root.google.protobuf.Timestamp.toObject(message.endTime, options);
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this UpcomingMaintenance to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.UpcomingMaintenance
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        UpcomingMaintenance.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for UpcomingMaintenance
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.UpcomingMaintenance
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        UpcomingMaintenance.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.UpcomingMaintenance";
+                        };
+    
+                        return UpcomingMaintenance;
+                    })();
+    
+                    v1beta.MaintenanceInfo = (function() {
+    
+                        /**
+                         * Properties of a MaintenanceInfo.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IMaintenanceInfo
+                         * @property {google.cloud.databasecenter.v1beta.IResourceMaintenanceSchedule|null} [maintenanceSchedule] MaintenanceInfo maintenanceSchedule
+                         * @property {Array.<google.cloud.databasecenter.v1beta.IResourceMaintenanceDenySchedule>|null} [denyMaintenanceSchedules] MaintenanceInfo denyMaintenanceSchedules
+                         * @property {string|null} [maintenanceVersion] MaintenanceInfo maintenanceVersion
+                         * @property {google.type.IDate|null} [currentVersionReleaseDate] MaintenanceInfo currentVersionReleaseDate
+                         * @property {google.cloud.databasecenter.v1beta.IUpcomingMaintenance|null} [upcomingMaintenance] MaintenanceInfo upcomingMaintenance
+                         * @property {google.cloud.databasecenter.v1beta.MaintenanceState|null} [state] MaintenanceInfo state
+                         * @property {Array.<google.cloud.databasecenter.v1beta.PossibleFailureReason>|null} [possibleFailureReasons] MaintenanceInfo possibleFailureReasons
+                         * @property {string|null} [previousMaintenanceVersion] MaintenanceInfo previousMaintenanceVersion
+                         */
+    
+                        /**
+                         * Constructs a new MaintenanceInfo.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a MaintenanceInfo.
+                         * @implements IMaintenanceInfo
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IMaintenanceInfo=} [properties] Properties to set
+                         */
+                        function MaintenanceInfo(properties) {
+                            this.denyMaintenanceSchedules = [];
+                            this.possibleFailureReasons = [];
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * MaintenanceInfo maintenanceSchedule.
+                         * @member {google.cloud.databasecenter.v1beta.IResourceMaintenanceSchedule|null|undefined} maintenanceSchedule
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceInfo
+                         * @instance
+                         */
+                        MaintenanceInfo.prototype.maintenanceSchedule = null;
+    
+                        /**
+                         * MaintenanceInfo denyMaintenanceSchedules.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.IResourceMaintenanceDenySchedule>} denyMaintenanceSchedules
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceInfo
+                         * @instance
+                         */
+                        MaintenanceInfo.prototype.denyMaintenanceSchedules = $util.emptyArray;
+    
+                        /**
+                         * MaintenanceInfo maintenanceVersion.
+                         * @member {string} maintenanceVersion
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceInfo
+                         * @instance
+                         */
+                        MaintenanceInfo.prototype.maintenanceVersion = "";
+    
+                        /**
+                         * MaintenanceInfo currentVersionReleaseDate.
+                         * @member {google.type.IDate|null|undefined} currentVersionReleaseDate
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceInfo
+                         * @instance
+                         */
+                        MaintenanceInfo.prototype.currentVersionReleaseDate = null;
+    
+                        /**
+                         * MaintenanceInfo upcomingMaintenance.
+                         * @member {google.cloud.databasecenter.v1beta.IUpcomingMaintenance|null|undefined} upcomingMaintenance
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceInfo
+                         * @instance
+                         */
+                        MaintenanceInfo.prototype.upcomingMaintenance = null;
+    
+                        /**
+                         * MaintenanceInfo state.
+                         * @member {google.cloud.databasecenter.v1beta.MaintenanceState} state
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceInfo
+                         * @instance
+                         */
+                        MaintenanceInfo.prototype.state = 0;
+    
+                        /**
+                         * MaintenanceInfo possibleFailureReasons.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.PossibleFailureReason>} possibleFailureReasons
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceInfo
+                         * @instance
+                         */
+                        MaintenanceInfo.prototype.possibleFailureReasons = $util.emptyArray;
+    
+                        /**
+                         * MaintenanceInfo previousMaintenanceVersion.
+                         * @member {string} previousMaintenanceVersion
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceInfo
+                         * @instance
+                         */
+                        MaintenanceInfo.prototype.previousMaintenanceVersion = "";
+    
+                        /**
+                         * Creates a new MaintenanceInfo instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IMaintenanceInfo=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.MaintenanceInfo} MaintenanceInfo instance
+                         */
+                        MaintenanceInfo.create = function create(properties) {
+                            return new MaintenanceInfo(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified MaintenanceInfo message. Does not implicitly {@link google.cloud.databasecenter.v1beta.MaintenanceInfo.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IMaintenanceInfo} message MaintenanceInfo message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        MaintenanceInfo.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.maintenanceSchedule != null && Object.hasOwnProperty.call(message, "maintenanceSchedule"))
+                                $root.google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule.encode(message.maintenanceSchedule, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                            if (message.denyMaintenanceSchedules != null && message.denyMaintenanceSchedules.length)
+                                for (var i = 0; i < message.denyMaintenanceSchedules.length; ++i)
+                                    $root.google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule.encode(message.denyMaintenanceSchedules[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+                            if (message.maintenanceVersion != null && Object.hasOwnProperty.call(message, "maintenanceVersion"))
+                                writer.uint32(/* id 3, wireType 2 =*/26).string(message.maintenanceVersion);
+                            if (message.currentVersionReleaseDate != null && Object.hasOwnProperty.call(message, "currentVersionReleaseDate"))
+                                $root.google.type.Date.encode(message.currentVersionReleaseDate, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
+                            if (message.upcomingMaintenance != null && Object.hasOwnProperty.call(message, "upcomingMaintenance"))
+                                $root.google.cloud.databasecenter.v1beta.UpcomingMaintenance.encode(message.upcomingMaintenance, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
+                            if (message.state != null && Object.hasOwnProperty.call(message, "state"))
+                                writer.uint32(/* id 6, wireType 0 =*/48).int32(message.state);
+                            if (message.possibleFailureReasons != null && message.possibleFailureReasons.length) {
+                                writer.uint32(/* id 7, wireType 2 =*/58).fork();
+                                for (var i = 0; i < message.possibleFailureReasons.length; ++i)
+                                    writer.int32(message.possibleFailureReasons[i]);
+                                writer.ldelim();
+                            }
+                            if (message.previousMaintenanceVersion != null && Object.hasOwnProperty.call(message, "previousMaintenanceVersion"))
+                                writer.uint32(/* id 8, wireType 2 =*/66).string(message.previousMaintenanceVersion);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified MaintenanceInfo message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.MaintenanceInfo.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IMaintenanceInfo} message MaintenanceInfo message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        MaintenanceInfo.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a MaintenanceInfo message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceInfo
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.MaintenanceInfo} MaintenanceInfo
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        MaintenanceInfo.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.MaintenanceInfo();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.maintenanceSchedule = $root.google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 2: {
+                                        if (!(message.denyMaintenanceSchedules && message.denyMaintenanceSchedules.length))
+                                            message.denyMaintenanceSchedules = [];
+                                        message.denyMaintenanceSchedules.push($root.google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule.decode(reader, reader.uint32()));
+                                        break;
+                                    }
+                                case 3: {
+                                        message.maintenanceVersion = reader.string();
+                                        break;
+                                    }
+                                case 4: {
+                                        message.currentVersionReleaseDate = $root.google.type.Date.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 5: {
+                                        message.upcomingMaintenance = $root.google.cloud.databasecenter.v1beta.UpcomingMaintenance.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 6: {
+                                        message.state = reader.int32();
+                                        break;
+                                    }
+                                case 7: {
+                                        if (!(message.possibleFailureReasons && message.possibleFailureReasons.length))
+                                            message.possibleFailureReasons = [];
+                                        if ((tag & 7) === 2) {
+                                            var end2 = reader.uint32() + reader.pos;
+                                            while (reader.pos < end2)
+                                                message.possibleFailureReasons.push(reader.int32());
+                                        } else
+                                            message.possibleFailureReasons.push(reader.int32());
+                                        break;
+                                    }
+                                case 8: {
+                                        message.previousMaintenanceVersion = reader.string();
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a MaintenanceInfo message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceInfo
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.MaintenanceInfo} MaintenanceInfo
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        MaintenanceInfo.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a MaintenanceInfo message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceInfo
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        MaintenanceInfo.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.maintenanceSchedule != null && message.hasOwnProperty("maintenanceSchedule")) {
+                                var error = $root.google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule.verify(message.maintenanceSchedule);
+                                if (error)
+                                    return "maintenanceSchedule." + error;
+                            }
+                            if (message.denyMaintenanceSchedules != null && message.hasOwnProperty("denyMaintenanceSchedules")) {
+                                if (!Array.isArray(message.denyMaintenanceSchedules))
+                                    return "denyMaintenanceSchedules: array expected";
+                                for (var i = 0; i < message.denyMaintenanceSchedules.length; ++i) {
+                                    var error = $root.google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule.verify(message.denyMaintenanceSchedules[i]);
+                                    if (error)
+                                        return "denyMaintenanceSchedules." + error;
+                                }
+                            }
+                            if (message.maintenanceVersion != null && message.hasOwnProperty("maintenanceVersion"))
+                                if (!$util.isString(message.maintenanceVersion))
+                                    return "maintenanceVersion: string expected";
+                            if (message.currentVersionReleaseDate != null && message.hasOwnProperty("currentVersionReleaseDate")) {
+                                var error = $root.google.type.Date.verify(message.currentVersionReleaseDate);
+                                if (error)
+                                    return "currentVersionReleaseDate." + error;
+                            }
+                            if (message.upcomingMaintenance != null && message.hasOwnProperty("upcomingMaintenance")) {
+                                var error = $root.google.cloud.databasecenter.v1beta.UpcomingMaintenance.verify(message.upcomingMaintenance);
+                                if (error)
+                                    return "upcomingMaintenance." + error;
+                            }
+                            if (message.state != null && message.hasOwnProperty("state"))
+                                switch (message.state) {
+                                default:
+                                    return "state: enum value expected";
+                                case 0:
+                                case 1:
+                                case 2:
+                                case 3:
+                                case 4:
+                                    break;
+                                }
+                            if (message.possibleFailureReasons != null && message.hasOwnProperty("possibleFailureReasons")) {
+                                if (!Array.isArray(message.possibleFailureReasons))
+                                    return "possibleFailureReasons: array expected";
+                                for (var i = 0; i < message.possibleFailureReasons.length; ++i)
+                                    switch (message.possibleFailureReasons[i]) {
+                                    default:
+                                        return "possibleFailureReasons: enum value[] expected";
+                                    case 0:
+                                    case 1:
+                                    case 2:
+                                        break;
+                                    }
+                            }
+                            if (message.previousMaintenanceVersion != null && message.hasOwnProperty("previousMaintenanceVersion"))
+                                if (!$util.isString(message.previousMaintenanceVersion))
+                                    return "previousMaintenanceVersion: string expected";
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a MaintenanceInfo message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceInfo
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.MaintenanceInfo} MaintenanceInfo
+                         */
+                        MaintenanceInfo.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.MaintenanceInfo)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.MaintenanceInfo();
+                            if (object.maintenanceSchedule != null) {
+                                if (typeof object.maintenanceSchedule !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.MaintenanceInfo.maintenanceSchedule: object expected");
+                                message.maintenanceSchedule = $root.google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule.fromObject(object.maintenanceSchedule);
+                            }
+                            if (object.denyMaintenanceSchedules) {
+                                if (!Array.isArray(object.denyMaintenanceSchedules))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.MaintenanceInfo.denyMaintenanceSchedules: array expected");
+                                message.denyMaintenanceSchedules = [];
+                                for (var i = 0; i < object.denyMaintenanceSchedules.length; ++i) {
+                                    if (typeof object.denyMaintenanceSchedules[i] !== "object")
+                                        throw TypeError(".google.cloud.databasecenter.v1beta.MaintenanceInfo.denyMaintenanceSchedules: object expected");
+                                    message.denyMaintenanceSchedules[i] = $root.google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule.fromObject(object.denyMaintenanceSchedules[i]);
+                                }
+                            }
+                            if (object.maintenanceVersion != null)
+                                message.maintenanceVersion = String(object.maintenanceVersion);
+                            if (object.currentVersionReleaseDate != null) {
+                                if (typeof object.currentVersionReleaseDate !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.MaintenanceInfo.currentVersionReleaseDate: object expected");
+                                message.currentVersionReleaseDate = $root.google.type.Date.fromObject(object.currentVersionReleaseDate);
+                            }
+                            if (object.upcomingMaintenance != null) {
+                                if (typeof object.upcomingMaintenance !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.MaintenanceInfo.upcomingMaintenance: object expected");
+                                message.upcomingMaintenance = $root.google.cloud.databasecenter.v1beta.UpcomingMaintenance.fromObject(object.upcomingMaintenance);
+                            }
+                            switch (object.state) {
+                            default:
+                                if (typeof object.state === "number") {
+                                    message.state = object.state;
+                                    break;
+                                }
+                                break;
+                            case "MAINTENANCE_STATE_UNSPECIFIED":
+                            case 0:
+                                message.state = 0;
+                                break;
+                            case "MAINTENANCE_STATE_SCHEDULED":
+                            case 1:
+                                message.state = 1;
+                                break;
+                            case "MAINTENANCE_STATE_IN_PROGRESS":
+                            case 2:
+                                message.state = 2;
+                                break;
+                            case "MAINTENANCE_STATE_COMPLETED":
+                            case 3:
+                                message.state = 3;
+                                break;
+                            case "MAINTENANCE_STATE_FAILED":
+                            case 4:
+                                message.state = 4;
+                                break;
+                            }
+                            if (object.possibleFailureReasons) {
+                                if (!Array.isArray(object.possibleFailureReasons))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.MaintenanceInfo.possibleFailureReasons: array expected");
+                                message.possibleFailureReasons = [];
+                                for (var i = 0; i < object.possibleFailureReasons.length; ++i)
+                                    switch (object.possibleFailureReasons[i]) {
+                                    default:
+                                        if (typeof object.possibleFailureReasons[i] === "number") {
+                                            message.possibleFailureReasons[i] = object.possibleFailureReasons[i];
+                                            break;
+                                        }
+                                    case "POSSIBLE_FAILURE_REASON_UNSPECIFIED":
+                                    case 0:
+                                        message.possibleFailureReasons[i] = 0;
+                                        break;
+                                    case "POSSIBLE_FAILURE_REASON_DENY_POLICY_CONFLICT":
+                                    case 1:
+                                        message.possibleFailureReasons[i] = 1;
+                                        break;
+                                    case "POSSIBLE_FAILURE_REASON_INSTANCE_IN_STOPPED_STATE":
+                                    case 2:
+                                        message.possibleFailureReasons[i] = 2;
+                                        break;
+                                    }
+                            }
+                            if (object.previousMaintenanceVersion != null)
+                                message.previousMaintenanceVersion = String(object.previousMaintenanceVersion);
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a MaintenanceInfo message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.MaintenanceInfo} message MaintenanceInfo
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        MaintenanceInfo.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.arrays || options.defaults) {
+                                object.denyMaintenanceSchedules = [];
+                                object.possibleFailureReasons = [];
+                            }
+                            if (options.defaults) {
+                                object.maintenanceSchedule = null;
+                                object.maintenanceVersion = "";
+                                object.currentVersionReleaseDate = null;
+                                object.upcomingMaintenance = null;
+                                object.state = options.enums === String ? "MAINTENANCE_STATE_UNSPECIFIED" : 0;
+                                object.previousMaintenanceVersion = "";
+                            }
+                            if (message.maintenanceSchedule != null && message.hasOwnProperty("maintenanceSchedule"))
+                                object.maintenanceSchedule = $root.google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule.toObject(message.maintenanceSchedule, options);
+                            if (message.denyMaintenanceSchedules && message.denyMaintenanceSchedules.length) {
+                                object.denyMaintenanceSchedules = [];
+                                for (var j = 0; j < message.denyMaintenanceSchedules.length; ++j)
+                                    object.denyMaintenanceSchedules[j] = $root.google.cloud.databasecenter.v1beta.ResourceMaintenanceDenySchedule.toObject(message.denyMaintenanceSchedules[j], options);
+                            }
+                            if (message.maintenanceVersion != null && message.hasOwnProperty("maintenanceVersion"))
+                                object.maintenanceVersion = message.maintenanceVersion;
+                            if (message.currentVersionReleaseDate != null && message.hasOwnProperty("currentVersionReleaseDate"))
+                                object.currentVersionReleaseDate = $root.google.type.Date.toObject(message.currentVersionReleaseDate, options);
+                            if (message.upcomingMaintenance != null && message.hasOwnProperty("upcomingMaintenance"))
+                                object.upcomingMaintenance = $root.google.cloud.databasecenter.v1beta.UpcomingMaintenance.toObject(message.upcomingMaintenance, options);
+                            if (message.state != null && message.hasOwnProperty("state"))
+                                object.state = options.enums === String ? $root.google.cloud.databasecenter.v1beta.MaintenanceState[message.state] === undefined ? message.state : $root.google.cloud.databasecenter.v1beta.MaintenanceState[message.state] : message.state;
+                            if (message.possibleFailureReasons && message.possibleFailureReasons.length) {
+                                object.possibleFailureReasons = [];
+                                for (var j = 0; j < message.possibleFailureReasons.length; ++j)
+                                    object.possibleFailureReasons[j] = options.enums === String ? $root.google.cloud.databasecenter.v1beta.PossibleFailureReason[message.possibleFailureReasons[j]] === undefined ? message.possibleFailureReasons[j] : $root.google.cloud.databasecenter.v1beta.PossibleFailureReason[message.possibleFailureReasons[j]] : message.possibleFailureReasons[j];
+                            }
+                            if (message.previousMaintenanceVersion != null && message.hasOwnProperty("previousMaintenanceVersion"))
+                                object.previousMaintenanceVersion = message.previousMaintenanceVersion;
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this MaintenanceInfo to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceInfo
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        MaintenanceInfo.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for MaintenanceInfo
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceInfo
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        MaintenanceInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.MaintenanceInfo";
+                        };
+    
+                        return MaintenanceInfo;
+                    })();
+    
+                    v1beta.Metrics = (function() {
+    
+                        /**
+                         * Properties of a Metrics.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IMetrics
+                         * @property {google.cloud.databasecenter.v1beta.IMetricData|null} [p99CpuUtilization] Metrics p99CpuUtilization
+                         * @property {google.cloud.databasecenter.v1beta.IMetricData|null} [p95CpuUtilization] Metrics p95CpuUtilization
+                         * @property {google.cloud.databasecenter.v1beta.IMetricData|null} [currentStorageUsedBytes] Metrics currentStorageUsedBytes
+                         * @property {google.cloud.databasecenter.v1beta.IMetricData|null} [peakStorageUtilization] Metrics peakStorageUtilization
+                         * @property {google.cloud.databasecenter.v1beta.IMetricData|null} [peakMemoryUtilization] Metrics peakMemoryUtilization
+                         * @property {google.cloud.databasecenter.v1beta.IMetricData|null} [peakNumberConnections] Metrics peakNumberConnections
+                         * @property {google.cloud.databasecenter.v1beta.IMetricData|null} [nodeCount] Metrics nodeCount
+                         * @property {google.cloud.databasecenter.v1beta.IMetricData|null} [processingUnitCount] Metrics processingUnitCount
+                         * @property {google.cloud.databasecenter.v1beta.IMetricData|null} [currentMemoryUsedBytes] Metrics currentMemoryUsedBytes
+                         */
+    
+                        /**
+                         * Constructs a new Metrics.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a Metrics.
+                         * @implements IMetrics
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IMetrics=} [properties] Properties to set
+                         */
+                        function Metrics(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * Metrics p99CpuUtilization.
+                         * @member {google.cloud.databasecenter.v1beta.IMetricData|null|undefined} p99CpuUtilization
+                         * @memberof google.cloud.databasecenter.v1beta.Metrics
+                         * @instance
+                         */
+                        Metrics.prototype.p99CpuUtilization = null;
+    
+                        /**
+                         * Metrics p95CpuUtilization.
+                         * @member {google.cloud.databasecenter.v1beta.IMetricData|null|undefined} p95CpuUtilization
+                         * @memberof google.cloud.databasecenter.v1beta.Metrics
+                         * @instance
+                         */
+                        Metrics.prototype.p95CpuUtilization = null;
+    
+                        /**
+                         * Metrics currentStorageUsedBytes.
+                         * @member {google.cloud.databasecenter.v1beta.IMetricData|null|undefined} currentStorageUsedBytes
+                         * @memberof google.cloud.databasecenter.v1beta.Metrics
+                         * @instance
+                         */
+                        Metrics.prototype.currentStorageUsedBytes = null;
+    
+                        /**
+                         * Metrics peakStorageUtilization.
+                         * @member {google.cloud.databasecenter.v1beta.IMetricData|null|undefined} peakStorageUtilization
+                         * @memberof google.cloud.databasecenter.v1beta.Metrics
+                         * @instance
+                         */
+                        Metrics.prototype.peakStorageUtilization = null;
+    
+                        /**
+                         * Metrics peakMemoryUtilization.
+                         * @member {google.cloud.databasecenter.v1beta.IMetricData|null|undefined} peakMemoryUtilization
+                         * @memberof google.cloud.databasecenter.v1beta.Metrics
+                         * @instance
+                         */
+                        Metrics.prototype.peakMemoryUtilization = null;
+    
+                        /**
+                         * Metrics peakNumberConnections.
+                         * @member {google.cloud.databasecenter.v1beta.IMetricData|null|undefined} peakNumberConnections
+                         * @memberof google.cloud.databasecenter.v1beta.Metrics
+                         * @instance
+                         */
+                        Metrics.prototype.peakNumberConnections = null;
+    
+                        /**
+                         * Metrics nodeCount.
+                         * @member {google.cloud.databasecenter.v1beta.IMetricData|null|undefined} nodeCount
+                         * @memberof google.cloud.databasecenter.v1beta.Metrics
+                         * @instance
+                         */
+                        Metrics.prototype.nodeCount = null;
+    
+                        /**
+                         * Metrics processingUnitCount.
+                         * @member {google.cloud.databasecenter.v1beta.IMetricData|null|undefined} processingUnitCount
+                         * @memberof google.cloud.databasecenter.v1beta.Metrics
+                         * @instance
+                         */
+                        Metrics.prototype.processingUnitCount = null;
+    
+                        /**
+                         * Metrics currentMemoryUsedBytes.
+                         * @member {google.cloud.databasecenter.v1beta.IMetricData|null|undefined} currentMemoryUsedBytes
+                         * @memberof google.cloud.databasecenter.v1beta.Metrics
+                         * @instance
+                         */
+                        Metrics.prototype.currentMemoryUsedBytes = null;
+    
+                        // OneOf field names bound to virtual getters and setters
+                        var $oneOfFields;
+    
+                        // Virtual OneOf for proto3 optional field
+                        Object.defineProperty(Metrics.prototype, "_p99CpuUtilization", {
+                            get: $util.oneOfGetter($oneOfFields = ["p99CpuUtilization"]),
+                            set: $util.oneOfSetter($oneOfFields)
+                        });
+    
+                        // Virtual OneOf for proto3 optional field
+                        Object.defineProperty(Metrics.prototype, "_p95CpuUtilization", {
+                            get: $util.oneOfGetter($oneOfFields = ["p95CpuUtilization"]),
+                            set: $util.oneOfSetter($oneOfFields)
+                        });
+    
+                        // Virtual OneOf for proto3 optional field
+                        Object.defineProperty(Metrics.prototype, "_currentStorageUsedBytes", {
+                            get: $util.oneOfGetter($oneOfFields = ["currentStorageUsedBytes"]),
+                            set: $util.oneOfSetter($oneOfFields)
+                        });
+    
+                        // Virtual OneOf for proto3 optional field
+                        Object.defineProperty(Metrics.prototype, "_peakStorageUtilization", {
+                            get: $util.oneOfGetter($oneOfFields = ["peakStorageUtilization"]),
+                            set: $util.oneOfSetter($oneOfFields)
+                        });
+    
+                        // Virtual OneOf for proto3 optional field
+                        Object.defineProperty(Metrics.prototype, "_peakMemoryUtilization", {
+                            get: $util.oneOfGetter($oneOfFields = ["peakMemoryUtilization"]),
+                            set: $util.oneOfSetter($oneOfFields)
+                        });
+    
+                        // Virtual OneOf for proto3 optional field
+                        Object.defineProperty(Metrics.prototype, "_peakNumberConnections", {
+                            get: $util.oneOfGetter($oneOfFields = ["peakNumberConnections"]),
+                            set: $util.oneOfSetter($oneOfFields)
+                        });
+    
+                        // Virtual OneOf for proto3 optional field
+                        Object.defineProperty(Metrics.prototype, "_nodeCount", {
+                            get: $util.oneOfGetter($oneOfFields = ["nodeCount"]),
+                            set: $util.oneOfSetter($oneOfFields)
+                        });
+    
+                        // Virtual OneOf for proto3 optional field
+                        Object.defineProperty(Metrics.prototype, "_processingUnitCount", {
+                            get: $util.oneOfGetter($oneOfFields = ["processingUnitCount"]),
+                            set: $util.oneOfSetter($oneOfFields)
+                        });
+    
+                        // Virtual OneOf for proto3 optional field
+                        Object.defineProperty(Metrics.prototype, "_currentMemoryUsedBytes", {
+                            get: $util.oneOfGetter($oneOfFields = ["currentMemoryUsedBytes"]),
+                            set: $util.oneOfSetter($oneOfFields)
+                        });
+    
+                        /**
+                         * Creates a new Metrics instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.Metrics
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IMetrics=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.Metrics} Metrics instance
+                         */
+                        Metrics.create = function create(properties) {
+                            return new Metrics(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified Metrics message. Does not implicitly {@link google.cloud.databasecenter.v1beta.Metrics.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.Metrics
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IMetrics} message Metrics message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        Metrics.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.p99CpuUtilization != null && Object.hasOwnProperty.call(message, "p99CpuUtilization"))
+                                $root.google.cloud.databasecenter.v1beta.MetricData.encode(message.p99CpuUtilization, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                            if (message.p95CpuUtilization != null && Object.hasOwnProperty.call(message, "p95CpuUtilization"))
+                                $root.google.cloud.databasecenter.v1beta.MetricData.encode(message.p95CpuUtilization, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+                            if (message.currentStorageUsedBytes != null && Object.hasOwnProperty.call(message, "currentStorageUsedBytes"))
+                                $root.google.cloud.databasecenter.v1beta.MetricData.encode(message.currentStorageUsedBytes, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+                            if (message.peakStorageUtilization != null && Object.hasOwnProperty.call(message, "peakStorageUtilization"))
+                                $root.google.cloud.databasecenter.v1beta.MetricData.encode(message.peakStorageUtilization, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
+                            if (message.peakMemoryUtilization != null && Object.hasOwnProperty.call(message, "peakMemoryUtilization"))
+                                $root.google.cloud.databasecenter.v1beta.MetricData.encode(message.peakMemoryUtilization, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
+                            if (message.peakNumberConnections != null && Object.hasOwnProperty.call(message, "peakNumberConnections"))
+                                $root.google.cloud.databasecenter.v1beta.MetricData.encode(message.peakNumberConnections, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();
+                            if (message.nodeCount != null && Object.hasOwnProperty.call(message, "nodeCount"))
+                                $root.google.cloud.databasecenter.v1beta.MetricData.encode(message.nodeCount, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();
+                            if (message.processingUnitCount != null && Object.hasOwnProperty.call(message, "processingUnitCount"))
+                                $root.google.cloud.databasecenter.v1beta.MetricData.encode(message.processingUnitCount, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();
+                            if (message.currentMemoryUsedBytes != null && Object.hasOwnProperty.call(message, "currentMemoryUsedBytes"))
+                                $root.google.cloud.databasecenter.v1beta.MetricData.encode(message.currentMemoryUsedBytes, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim();
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified Metrics message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.Metrics.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.Metrics
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IMetrics} message Metrics message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        Metrics.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a Metrics message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.Metrics
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.Metrics} Metrics
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        Metrics.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.Metrics();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.p99CpuUtilization = $root.google.cloud.databasecenter.v1beta.MetricData.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 2: {
+                                        message.p95CpuUtilization = $root.google.cloud.databasecenter.v1beta.MetricData.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 3: {
+                                        message.currentStorageUsedBytes = $root.google.cloud.databasecenter.v1beta.MetricData.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 4: {
+                                        message.peakStorageUtilization = $root.google.cloud.databasecenter.v1beta.MetricData.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 5: {
+                                        message.peakMemoryUtilization = $root.google.cloud.databasecenter.v1beta.MetricData.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 6: {
+                                        message.peakNumberConnections = $root.google.cloud.databasecenter.v1beta.MetricData.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 7: {
+                                        message.nodeCount = $root.google.cloud.databasecenter.v1beta.MetricData.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 8: {
+                                        message.processingUnitCount = $root.google.cloud.databasecenter.v1beta.MetricData.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 9: {
+                                        message.currentMemoryUsedBytes = $root.google.cloud.databasecenter.v1beta.MetricData.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a Metrics message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.Metrics
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.Metrics} Metrics
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        Metrics.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a Metrics message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.Metrics
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        Metrics.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            var properties = {};
+                            if (message.p99CpuUtilization != null && message.hasOwnProperty("p99CpuUtilization")) {
+                                properties._p99CpuUtilization = 1;
+                                {
+                                    var error = $root.google.cloud.databasecenter.v1beta.MetricData.verify(message.p99CpuUtilization);
+                                    if (error)
+                                        return "p99CpuUtilization." + error;
+                                }
+                            }
+                            if (message.p95CpuUtilization != null && message.hasOwnProperty("p95CpuUtilization")) {
+                                properties._p95CpuUtilization = 1;
+                                {
+                                    var error = $root.google.cloud.databasecenter.v1beta.MetricData.verify(message.p95CpuUtilization);
+                                    if (error)
+                                        return "p95CpuUtilization." + error;
+                                }
+                            }
+                            if (message.currentStorageUsedBytes != null && message.hasOwnProperty("currentStorageUsedBytes")) {
+                                properties._currentStorageUsedBytes = 1;
+                                {
+                                    var error = $root.google.cloud.databasecenter.v1beta.MetricData.verify(message.currentStorageUsedBytes);
+                                    if (error)
+                                        return "currentStorageUsedBytes." + error;
+                                }
+                            }
+                            if (message.peakStorageUtilization != null && message.hasOwnProperty("peakStorageUtilization")) {
+                                properties._peakStorageUtilization = 1;
+                                {
+                                    var error = $root.google.cloud.databasecenter.v1beta.MetricData.verify(message.peakStorageUtilization);
+                                    if (error)
+                                        return "peakStorageUtilization." + error;
+                                }
+                            }
+                            if (message.peakMemoryUtilization != null && message.hasOwnProperty("peakMemoryUtilization")) {
+                                properties._peakMemoryUtilization = 1;
+                                {
+                                    var error = $root.google.cloud.databasecenter.v1beta.MetricData.verify(message.peakMemoryUtilization);
+                                    if (error)
+                                        return "peakMemoryUtilization." + error;
+                                }
+                            }
+                            if (message.peakNumberConnections != null && message.hasOwnProperty("peakNumberConnections")) {
+                                properties._peakNumberConnections = 1;
+                                {
+                                    var error = $root.google.cloud.databasecenter.v1beta.MetricData.verify(message.peakNumberConnections);
+                                    if (error)
+                                        return "peakNumberConnections." + error;
+                                }
+                            }
+                            if (message.nodeCount != null && message.hasOwnProperty("nodeCount")) {
+                                properties._nodeCount = 1;
+                                {
+                                    var error = $root.google.cloud.databasecenter.v1beta.MetricData.verify(message.nodeCount);
+                                    if (error)
+                                        return "nodeCount." + error;
+                                }
+                            }
+                            if (message.processingUnitCount != null && message.hasOwnProperty("processingUnitCount")) {
+                                properties._processingUnitCount = 1;
+                                {
+                                    var error = $root.google.cloud.databasecenter.v1beta.MetricData.verify(message.processingUnitCount);
+                                    if (error)
+                                        return "processingUnitCount." + error;
+                                }
+                            }
+                            if (message.currentMemoryUsedBytes != null && message.hasOwnProperty("currentMemoryUsedBytes")) {
+                                properties._currentMemoryUsedBytes = 1;
+                                {
+                                    var error = $root.google.cloud.databasecenter.v1beta.MetricData.verify(message.currentMemoryUsedBytes);
+                                    if (error)
+                                        return "currentMemoryUsedBytes." + error;
+                                }
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a Metrics message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.Metrics
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.Metrics} Metrics
+                         */
+                        Metrics.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.Metrics)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.Metrics();
+                            if (object.p99CpuUtilization != null) {
+                                if (typeof object.p99CpuUtilization !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.Metrics.p99CpuUtilization: object expected");
+                                message.p99CpuUtilization = $root.google.cloud.databasecenter.v1beta.MetricData.fromObject(object.p99CpuUtilization);
+                            }
+                            if (object.p95CpuUtilization != null) {
+                                if (typeof object.p95CpuUtilization !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.Metrics.p95CpuUtilization: object expected");
+                                message.p95CpuUtilization = $root.google.cloud.databasecenter.v1beta.MetricData.fromObject(object.p95CpuUtilization);
+                            }
+                            if (object.currentStorageUsedBytes != null) {
+                                if (typeof object.currentStorageUsedBytes !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.Metrics.currentStorageUsedBytes: object expected");
+                                message.currentStorageUsedBytes = $root.google.cloud.databasecenter.v1beta.MetricData.fromObject(object.currentStorageUsedBytes);
+                            }
+                            if (object.peakStorageUtilization != null) {
+                                if (typeof object.peakStorageUtilization !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.Metrics.peakStorageUtilization: object expected");
+                                message.peakStorageUtilization = $root.google.cloud.databasecenter.v1beta.MetricData.fromObject(object.peakStorageUtilization);
+                            }
+                            if (object.peakMemoryUtilization != null) {
+                                if (typeof object.peakMemoryUtilization !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.Metrics.peakMemoryUtilization: object expected");
+                                message.peakMemoryUtilization = $root.google.cloud.databasecenter.v1beta.MetricData.fromObject(object.peakMemoryUtilization);
+                            }
+                            if (object.peakNumberConnections != null) {
+                                if (typeof object.peakNumberConnections !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.Metrics.peakNumberConnections: object expected");
+                                message.peakNumberConnections = $root.google.cloud.databasecenter.v1beta.MetricData.fromObject(object.peakNumberConnections);
+                            }
+                            if (object.nodeCount != null) {
+                                if (typeof object.nodeCount !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.Metrics.nodeCount: object expected");
+                                message.nodeCount = $root.google.cloud.databasecenter.v1beta.MetricData.fromObject(object.nodeCount);
+                            }
+                            if (object.processingUnitCount != null) {
+                                if (typeof object.processingUnitCount !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.Metrics.processingUnitCount: object expected");
+                                message.processingUnitCount = $root.google.cloud.databasecenter.v1beta.MetricData.fromObject(object.processingUnitCount);
+                            }
+                            if (object.currentMemoryUsedBytes != null) {
+                                if (typeof object.currentMemoryUsedBytes !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.Metrics.currentMemoryUsedBytes: object expected");
+                                message.currentMemoryUsedBytes = $root.google.cloud.databasecenter.v1beta.MetricData.fromObject(object.currentMemoryUsedBytes);
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a Metrics message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.Metrics
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.Metrics} message Metrics
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        Metrics.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (message.p99CpuUtilization != null && message.hasOwnProperty("p99CpuUtilization")) {
+                                object.p99CpuUtilization = $root.google.cloud.databasecenter.v1beta.MetricData.toObject(message.p99CpuUtilization, options);
+                                if (options.oneofs)
+                                    object._p99CpuUtilization = "p99CpuUtilization";
+                            }
+                            if (message.p95CpuUtilization != null && message.hasOwnProperty("p95CpuUtilization")) {
+                                object.p95CpuUtilization = $root.google.cloud.databasecenter.v1beta.MetricData.toObject(message.p95CpuUtilization, options);
+                                if (options.oneofs)
+                                    object._p95CpuUtilization = "p95CpuUtilization";
+                            }
+                            if (message.currentStorageUsedBytes != null && message.hasOwnProperty("currentStorageUsedBytes")) {
+                                object.currentStorageUsedBytes = $root.google.cloud.databasecenter.v1beta.MetricData.toObject(message.currentStorageUsedBytes, options);
+                                if (options.oneofs)
+                                    object._currentStorageUsedBytes = "currentStorageUsedBytes";
+                            }
+                            if (message.peakStorageUtilization != null && message.hasOwnProperty("peakStorageUtilization")) {
+                                object.peakStorageUtilization = $root.google.cloud.databasecenter.v1beta.MetricData.toObject(message.peakStorageUtilization, options);
+                                if (options.oneofs)
+                                    object._peakStorageUtilization = "peakStorageUtilization";
+                            }
+                            if (message.peakMemoryUtilization != null && message.hasOwnProperty("peakMemoryUtilization")) {
+                                object.peakMemoryUtilization = $root.google.cloud.databasecenter.v1beta.MetricData.toObject(message.peakMemoryUtilization, options);
+                                if (options.oneofs)
+                                    object._peakMemoryUtilization = "peakMemoryUtilization";
+                            }
+                            if (message.peakNumberConnections != null && message.hasOwnProperty("peakNumberConnections")) {
+                                object.peakNumberConnections = $root.google.cloud.databasecenter.v1beta.MetricData.toObject(message.peakNumberConnections, options);
+                                if (options.oneofs)
+                                    object._peakNumberConnections = "peakNumberConnections";
+                            }
+                            if (message.nodeCount != null && message.hasOwnProperty("nodeCount")) {
+                                object.nodeCount = $root.google.cloud.databasecenter.v1beta.MetricData.toObject(message.nodeCount, options);
+                                if (options.oneofs)
+                                    object._nodeCount = "nodeCount";
+                            }
+                            if (message.processingUnitCount != null && message.hasOwnProperty("processingUnitCount")) {
+                                object.processingUnitCount = $root.google.cloud.databasecenter.v1beta.MetricData.toObject(message.processingUnitCount, options);
+                                if (options.oneofs)
+                                    object._processingUnitCount = "processingUnitCount";
+                            }
+                            if (message.currentMemoryUsedBytes != null && message.hasOwnProperty("currentMemoryUsedBytes")) {
+                                object.currentMemoryUsedBytes = $root.google.cloud.databasecenter.v1beta.MetricData.toObject(message.currentMemoryUsedBytes, options);
+                                if (options.oneofs)
+                                    object._currentMemoryUsedBytes = "currentMemoryUsedBytes";
+                            }
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this Metrics to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.Metrics
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        Metrics.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for Metrics
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.Metrics
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        Metrics.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.Metrics";
+                        };
+    
+                        return Metrics;
+                    })();
+    
+                    v1beta.MetricData = (function() {
+    
+                        /**
+                         * Properties of a MetricData.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IMetricData
+                         * @property {google.cloud.databasecenter.v1beta.ITypedValue|null} [value] MetricData value
+                         * @property {google.protobuf.ITimestamp|null} [observationTime] MetricData observationTime
+                         */
+    
+                        /**
+                         * Constructs a new MetricData.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a MetricData.
+                         * @implements IMetricData
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IMetricData=} [properties] Properties to set
+                         */
+                        function MetricData(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * MetricData value.
+                         * @member {google.cloud.databasecenter.v1beta.ITypedValue|null|undefined} value
+                         * @memberof google.cloud.databasecenter.v1beta.MetricData
+                         * @instance
+                         */
+                        MetricData.prototype.value = null;
+    
+                        /**
+                         * MetricData observationTime.
+                         * @member {google.protobuf.ITimestamp|null|undefined} observationTime
+                         * @memberof google.cloud.databasecenter.v1beta.MetricData
+                         * @instance
+                         */
+                        MetricData.prototype.observationTime = null;
+    
+                        /**
+                         * Creates a new MetricData instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.MetricData
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IMetricData=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.MetricData} MetricData instance
+                         */
+                        MetricData.create = function create(properties) {
+                            return new MetricData(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified MetricData message. Does not implicitly {@link google.cloud.databasecenter.v1beta.MetricData.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.MetricData
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IMetricData} message MetricData message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        MetricData.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.value != null && Object.hasOwnProperty.call(message, "value"))
+                                $root.google.cloud.databasecenter.v1beta.TypedValue.encode(message.value, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                            if (message.observationTime != null && Object.hasOwnProperty.call(message, "observationTime"))
+                                $root.google.protobuf.Timestamp.encode(message.observationTime, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified MetricData message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.MetricData.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.MetricData
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IMetricData} message MetricData message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        MetricData.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a MetricData message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.MetricData
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.MetricData} MetricData
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        MetricData.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.MetricData();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.value = $root.google.cloud.databasecenter.v1beta.TypedValue.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 2: {
+                                        message.observationTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a MetricData message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.MetricData
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.MetricData} MetricData
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        MetricData.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a MetricData message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.MetricData
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        MetricData.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.value != null && message.hasOwnProperty("value")) {
+                                var error = $root.google.cloud.databasecenter.v1beta.TypedValue.verify(message.value);
+                                if (error)
+                                    return "value." + error;
+                            }
+                            if (message.observationTime != null && message.hasOwnProperty("observationTime")) {
+                                var error = $root.google.protobuf.Timestamp.verify(message.observationTime);
+                                if (error)
+                                    return "observationTime." + error;
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a MetricData message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.MetricData
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.MetricData} MetricData
+                         */
+                        MetricData.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.MetricData)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.MetricData();
+                            if (object.value != null) {
+                                if (typeof object.value !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.MetricData.value: object expected");
+                                message.value = $root.google.cloud.databasecenter.v1beta.TypedValue.fromObject(object.value);
+                            }
+                            if (object.observationTime != null) {
+                                if (typeof object.observationTime !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.MetricData.observationTime: object expected");
+                                message.observationTime = $root.google.protobuf.Timestamp.fromObject(object.observationTime);
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a MetricData message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.MetricData
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.MetricData} message MetricData
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        MetricData.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.defaults) {
+                                object.value = null;
+                                object.observationTime = null;
+                            }
+                            if (message.value != null && message.hasOwnProperty("value"))
+                                object.value = $root.google.cloud.databasecenter.v1beta.TypedValue.toObject(message.value, options);
+                            if (message.observationTime != null && message.hasOwnProperty("observationTime"))
+                                object.observationTime = $root.google.protobuf.Timestamp.toObject(message.observationTime, options);
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this MetricData to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.MetricData
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        MetricData.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for MetricData
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.MetricData
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        MetricData.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.MetricData";
+                        };
+    
+                        return MetricData;
+                    })();
+    
+                    v1beta.TypedValue = (function() {
+    
+                        /**
+                         * Properties of a TypedValue.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface ITypedValue
+                         * @property {number|null} [doubleValue] TypedValue doubleValue
+                         * @property {number|Long|null} [int64Value] TypedValue int64Value
+                         */
+    
+                        /**
+                         * Constructs a new TypedValue.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a TypedValue.
+                         * @implements ITypedValue
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.ITypedValue=} [properties] Properties to set
+                         */
+                        function TypedValue(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * TypedValue doubleValue.
+                         * @member {number|null|undefined} doubleValue
+                         * @memberof google.cloud.databasecenter.v1beta.TypedValue
+                         * @instance
+                         */
+                        TypedValue.prototype.doubleValue = null;
+    
+                        /**
+                         * TypedValue int64Value.
+                         * @member {number|Long|null|undefined} int64Value
+                         * @memberof google.cloud.databasecenter.v1beta.TypedValue
+                         * @instance
+                         */
+                        TypedValue.prototype.int64Value = null;
+    
+                        // OneOf field names bound to virtual getters and setters
+                        var $oneOfFields;
+    
+                        /**
+                         * TypedValue value.
+                         * @member {"doubleValue"|"int64Value"|undefined} value
+                         * @memberof google.cloud.databasecenter.v1beta.TypedValue
+                         * @instance
+                         */
+                        Object.defineProperty(TypedValue.prototype, "value", {
+                            get: $util.oneOfGetter($oneOfFields = ["doubleValue", "int64Value"]),
+                            set: $util.oneOfSetter($oneOfFields)
+                        });
+    
+                        /**
+                         * Creates a new TypedValue instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.TypedValue
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ITypedValue=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.TypedValue} TypedValue instance
+                         */
+                        TypedValue.create = function create(properties) {
+                            return new TypedValue(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified TypedValue message. Does not implicitly {@link google.cloud.databasecenter.v1beta.TypedValue.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.TypedValue
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ITypedValue} message TypedValue message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        TypedValue.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.doubleValue != null && Object.hasOwnProperty.call(message, "doubleValue"))
+                                writer.uint32(/* id 1, wireType 1 =*/9).double(message.doubleValue);
+                            if (message.int64Value != null && Object.hasOwnProperty.call(message, "int64Value"))
+                                writer.uint32(/* id 2, wireType 0 =*/16).int64(message.int64Value);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified TypedValue message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.TypedValue.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.TypedValue
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ITypedValue} message TypedValue message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        TypedValue.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a TypedValue message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.TypedValue
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.TypedValue} TypedValue
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        TypedValue.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.TypedValue();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.doubleValue = reader.double();
+                                        break;
+                                    }
+                                case 2: {
+                                        message.int64Value = reader.int64();
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a TypedValue message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.TypedValue
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.TypedValue} TypedValue
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        TypedValue.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a TypedValue message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.TypedValue
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        TypedValue.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            var properties = {};
+                            if (message.doubleValue != null && message.hasOwnProperty("doubleValue")) {
+                                properties.value = 1;
+                                if (typeof message.doubleValue !== "number")
+                                    return "doubleValue: number expected";
+                            }
+                            if (message.int64Value != null && message.hasOwnProperty("int64Value")) {
+                                if (properties.value === 1)
+                                    return "value: multiple values";
+                                properties.value = 1;
+                                if (!$util.isInteger(message.int64Value) && !(message.int64Value && $util.isInteger(message.int64Value.low) && $util.isInteger(message.int64Value.high)))
+                                    return "int64Value: integer|Long expected";
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a TypedValue message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.TypedValue
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.TypedValue} TypedValue
+                         */
+                        TypedValue.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.TypedValue)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.TypedValue();
+                            if (object.doubleValue != null)
+                                message.doubleValue = Number(object.doubleValue);
+                            if (object.int64Value != null)
+                                if ($util.Long)
+                                    (message.int64Value = $util.Long.fromValue(object.int64Value)).unsigned = false;
+                                else if (typeof object.int64Value === "string")
+                                    message.int64Value = parseInt(object.int64Value, 10);
+                                else if (typeof object.int64Value === "number")
+                                    message.int64Value = object.int64Value;
+                                else if (typeof object.int64Value === "object")
+                                    message.int64Value = new $util.LongBits(object.int64Value.low >>> 0, object.int64Value.high >>> 0).toNumber();
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a TypedValue message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.TypedValue
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.TypedValue} message TypedValue
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        TypedValue.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (message.doubleValue != null && message.hasOwnProperty("doubleValue")) {
+                                object.doubleValue = options.json && !isFinite(message.doubleValue) ? String(message.doubleValue) : message.doubleValue;
+                                if (options.oneofs)
+                                    object.value = "doubleValue";
+                            }
+                            if (message.int64Value != null && message.hasOwnProperty("int64Value")) {
+                                if (typeof message.int64Value === "number")
+                                    object.int64Value = options.longs === String ? String(message.int64Value) : message.int64Value;
+                                else
+                                    object.int64Value = options.longs === String ? $util.Long.prototype.toString.call(message.int64Value) : options.longs === Number ? new $util.LongBits(message.int64Value.low >>> 0, message.int64Value.high >>> 0).toNumber() : message.int64Value;
+                                if (options.oneofs)
+                                    object.value = "int64Value";
+                            }
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this TypedValue to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.TypedValue
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        TypedValue.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for TypedValue
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.TypedValue
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        TypedValue.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.TypedValue";
+                        };
+    
+                        return TypedValue;
+                    })();
+    
+                    /**
+                     * OperationErrorType enum.
+                     * @name google.cloud.databasecenter.v1beta.OperationErrorType
+                     * @enum {number}
+                     * @property {number} OPERATION_ERROR_TYPE_UNSPECIFIED=0 OPERATION_ERROR_TYPE_UNSPECIFIED value
+                     * @property {number} KMS_KEY_ERROR=1 KMS_KEY_ERROR value
+                     * @property {number} DATABASE_ERROR=2 DATABASE_ERROR value
+                     * @property {number} STOCKOUT_ERROR=3 STOCKOUT_ERROR value
+                     * @property {number} CANCELLATION_ERROR=4 CANCELLATION_ERROR value
+                     * @property {number} SQLSERVER_ERROR=5 SQLSERVER_ERROR value
+                     * @property {number} INTERNAL_ERROR=6 INTERNAL_ERROR value
+                     */
+                    v1beta.OperationErrorType = (function() {
+                        var valuesById = {}, values = Object.create(valuesById);
+                        values[valuesById[0] = "OPERATION_ERROR_TYPE_UNSPECIFIED"] = 0;
+                        values[valuesById[1] = "KMS_KEY_ERROR"] = 1;
+                        values[valuesById[2] = "DATABASE_ERROR"] = 2;
+                        values[valuesById[3] = "STOCKOUT_ERROR"] = 3;
+                        values[valuesById[4] = "CANCELLATION_ERROR"] = 4;
+                        values[valuesById[5] = "SQLSERVER_ERROR"] = 5;
+                        values[valuesById[6] = "INTERNAL_ERROR"] = 6;
+                        return values;
+                    })();
+    
+                    /**
+                     * Engine enum.
+                     * @name google.cloud.databasecenter.v1beta.Engine
+                     * @enum {number}
+                     * @property {number} ENGINE_UNSPECIFIED=0 ENGINE_UNSPECIFIED value
+                     * @property {number} ENGINE_MYSQL=1 ENGINE_MYSQL value
+                     * @property {number} ENGINE_POSTGRES=2 ENGINE_POSTGRES value
+                     * @property {number} ENGINE_SQL_SERVER=3 ENGINE_SQL_SERVER value
+                     * @property {number} ENGINE_NATIVE=4 ENGINE_NATIVE value
+                     * @property {number} ENGINE_MEMORYSTORE_FOR_REDIS=8 ENGINE_MEMORYSTORE_FOR_REDIS value
+                     * @property {number} ENGINE_MEMORYSTORE_FOR_REDIS_CLUSTER=9 ENGINE_MEMORYSTORE_FOR_REDIS_CLUSTER value
+                     * @property {number} ENGINE_FIRESTORE_WITH_NATIVE_MODE=10 ENGINE_FIRESTORE_WITH_NATIVE_MODE value
+                     * @property {number} ENGINE_FIRESTORE_WITH_DATASTORE_MODE=11 ENGINE_FIRESTORE_WITH_DATASTORE_MODE value
+                     * @property {number} ENGINE_EXADATA_ORACLE=12 ENGINE_EXADATA_ORACLE value
+                     * @property {number} ENGINE_ADB_SERVERLESS_ORACLE=13 ENGINE_ADB_SERVERLESS_ORACLE value
+                     * @property {number} ENGINE_FIRESTORE_WITH_MONGODB_COMPATIBILITY_MODE=14 ENGINE_FIRESTORE_WITH_MONGODB_COMPATIBILITY_MODE value
+                     * @property {number} ENGINE_OTHER=6 ENGINE_OTHER value
+                     */
+                    v1beta.Engine = (function() {
+                        var valuesById = {}, values = Object.create(valuesById);
+                        values[valuesById[0] = "ENGINE_UNSPECIFIED"] = 0;
+                        values[valuesById[1] = "ENGINE_MYSQL"] = 1;
+                        values[valuesById[2] = "ENGINE_POSTGRES"] = 2;
+                        values[valuesById[3] = "ENGINE_SQL_SERVER"] = 3;
+                        values[valuesById[4] = "ENGINE_NATIVE"] = 4;
+                        values[valuesById[8] = "ENGINE_MEMORYSTORE_FOR_REDIS"] = 8;
+                        values[valuesById[9] = "ENGINE_MEMORYSTORE_FOR_REDIS_CLUSTER"] = 9;
+                        values[valuesById[10] = "ENGINE_FIRESTORE_WITH_NATIVE_MODE"] = 10;
+                        values[valuesById[11] = "ENGINE_FIRESTORE_WITH_DATASTORE_MODE"] = 11;
+                        values[valuesById[12] = "ENGINE_EXADATA_ORACLE"] = 12;
+                        values[valuesById[13] = "ENGINE_ADB_SERVERLESS_ORACLE"] = 13;
+                        values[valuesById[14] = "ENGINE_FIRESTORE_WITH_MONGODB_COMPATIBILITY_MODE"] = 14;
+                        values[valuesById[6] = "ENGINE_OTHER"] = 6;
+                        return values;
+                    })();
+    
+                    /**
+                     * ProductType enum.
+                     * @name google.cloud.databasecenter.v1beta.ProductType
+                     * @enum {number}
+                     * @property {number} PRODUCT_TYPE_UNSPECIFIED=0 PRODUCT_TYPE_UNSPECIFIED value
+                     * @property {number} PRODUCT_TYPE_CLOUD_SQL=1 PRODUCT_TYPE_CLOUD_SQL value
+                     * @property {number} PRODUCT_TYPE_ALLOYDB=2 PRODUCT_TYPE_ALLOYDB value
+                     * @property {number} PRODUCT_TYPE_SPANNER=3 PRODUCT_TYPE_SPANNER value
+                     * @property {number} PRODUCT_TYPE_BIGTABLE=6 PRODUCT_TYPE_BIGTABLE value
+                     * @property {number} PRODUCT_TYPE_MEMORYSTORE=7 PRODUCT_TYPE_MEMORYSTORE value
+                     * @property {number} PRODUCT_TYPE_FIRESTORE=8 PRODUCT_TYPE_FIRESTORE value
+                     * @property {number} PRODUCT_TYPE_COMPUTE_ENGINE=9 PRODUCT_TYPE_COMPUTE_ENGINE value
+                     * @property {number} PRODUCT_TYPE_ORACLE_ON_GCP=10 PRODUCT_TYPE_ORACLE_ON_GCP value
+                     * @property {number} PRODUCT_TYPE_BIGQUERY=11 PRODUCT_TYPE_BIGQUERY value
+                     * @property {number} PRODUCT_TYPE_OTHER=5 PRODUCT_TYPE_OTHER value
+                     */
+                    v1beta.ProductType = (function() {
+                        var valuesById = {}, values = Object.create(valuesById);
+                        values[valuesById[0] = "PRODUCT_TYPE_UNSPECIFIED"] = 0;
+                        values[valuesById[1] = "PRODUCT_TYPE_CLOUD_SQL"] = 1;
+                        values[valuesById[2] = "PRODUCT_TYPE_ALLOYDB"] = 2;
+                        values[valuesById[3] = "PRODUCT_TYPE_SPANNER"] = 3;
+                        values[valuesById[6] = "PRODUCT_TYPE_BIGTABLE"] = 6;
+                        values[valuesById[7] = "PRODUCT_TYPE_MEMORYSTORE"] = 7;
+                        values[valuesById[8] = "PRODUCT_TYPE_FIRESTORE"] = 8;
+                        values[valuesById[9] = "PRODUCT_TYPE_COMPUTE_ENGINE"] = 9;
+                        values[valuesById[10] = "PRODUCT_TYPE_ORACLE_ON_GCP"] = 10;
+                        values[valuesById[11] = "PRODUCT_TYPE_BIGQUERY"] = 11;
+                        values[valuesById[5] = "PRODUCT_TYPE_OTHER"] = 5;
+                        return values;
+                    })();
+    
+                    v1beta.Product = (function() {
+    
+                        /**
+                         * Properties of a Product.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IProduct
+                         * @property {google.cloud.databasecenter.v1beta.ProductType|null} [type] Product type
+                         * @property {google.cloud.databasecenter.v1beta.Engine|null} [engine] Product engine
+                         * @property {string|null} [version] Product version
+                         * @property {string|null} [minorVersion] Product minorVersion
+                         */
+    
+                        /**
+                         * Constructs a new Product.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a Product.
+                         * @implements IProduct
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IProduct=} [properties] Properties to set
+                         */
+                        function Product(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * Product type.
+                         * @member {google.cloud.databasecenter.v1beta.ProductType} type
+                         * @memberof google.cloud.databasecenter.v1beta.Product
+                         * @instance
+                         */
+                        Product.prototype.type = 0;
+    
+                        /**
+                         * Product engine.
+                         * @member {google.cloud.databasecenter.v1beta.Engine} engine
+                         * @memberof google.cloud.databasecenter.v1beta.Product
+                         * @instance
+                         */
+                        Product.prototype.engine = 0;
+    
+                        /**
+                         * Product version.
+                         * @member {string} version
+                         * @memberof google.cloud.databasecenter.v1beta.Product
+                         * @instance
+                         */
+                        Product.prototype.version = "";
+    
+                        /**
+                         * Product minorVersion.
+                         * @member {string} minorVersion
+                         * @memberof google.cloud.databasecenter.v1beta.Product
+                         * @instance
+                         */
+                        Product.prototype.minorVersion = "";
+    
+                        /**
+                         * Creates a new Product instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.Product
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IProduct=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.Product} Product instance
+                         */
+                        Product.create = function create(properties) {
+                            return new Product(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified Product message. Does not implicitly {@link google.cloud.databasecenter.v1beta.Product.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.Product
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IProduct} message Product message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        Product.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.type != null && Object.hasOwnProperty.call(message, "type"))
+                                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);
+                            if (message.engine != null && Object.hasOwnProperty.call(message, "engine"))
+                                writer.uint32(/* id 2, wireType 0 =*/16).int32(message.engine);
+                            if (message.version != null && Object.hasOwnProperty.call(message, "version"))
+                                writer.uint32(/* id 3, wireType 2 =*/26).string(message.version);
+                            if (message.minorVersion != null && Object.hasOwnProperty.call(message, "minorVersion"))
+                                writer.uint32(/* id 4, wireType 2 =*/34).string(message.minorVersion);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified Product message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.Product.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.Product
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IProduct} message Product message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        Product.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a Product message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.Product
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.Product} Product
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        Product.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.Product();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.type = reader.int32();
+                                        break;
+                                    }
+                                case 2: {
+                                        message.engine = reader.int32();
+                                        break;
+                                    }
+                                case 3: {
+                                        message.version = reader.string();
+                                        break;
+                                    }
+                                case 4: {
+                                        message.minorVersion = reader.string();
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a Product message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.Product
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.Product} Product
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        Product.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a Product message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.Product
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        Product.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.type != null && message.hasOwnProperty("type"))
+                                switch (message.type) {
+                                default:
+                                    return "type: enum value expected";
+                                case 0:
+                                case 1:
+                                case 2:
+                                case 3:
+                                case 6:
+                                case 7:
+                                case 8:
+                                case 9:
+                                case 10:
+                                case 11:
+                                case 5:
+                                    break;
+                                }
+                            if (message.engine != null && message.hasOwnProperty("engine"))
+                                switch (message.engine) {
+                                default:
+                                    return "engine: enum value expected";
+                                case 0:
+                                case 1:
+                                case 2:
+                                case 3:
+                                case 4:
+                                case 8:
+                                case 9:
+                                case 10:
+                                case 11:
+                                case 12:
+                                case 13:
+                                case 14:
+                                case 6:
+                                    break;
+                                }
+                            if (message.version != null && message.hasOwnProperty("version"))
+                                if (!$util.isString(message.version))
+                                    return "version: string expected";
+                            if (message.minorVersion != null && message.hasOwnProperty("minorVersion"))
+                                if (!$util.isString(message.minorVersion))
+                                    return "minorVersion: string expected";
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a Product message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.Product
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.Product} Product
+                         */
+                        Product.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.Product)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.Product();
+                            switch (object.type) {
+                            default:
+                                if (typeof object.type === "number") {
+                                    message.type = object.type;
+                                    break;
+                                }
+                                break;
+                            case "PRODUCT_TYPE_UNSPECIFIED":
+                            case 0:
+                                message.type = 0;
+                                break;
+                            case "PRODUCT_TYPE_CLOUD_SQL":
+                            case 1:
+                                message.type = 1;
+                                break;
+                            case "PRODUCT_TYPE_ALLOYDB":
+                            case 2:
+                                message.type = 2;
+                                break;
+                            case "PRODUCT_TYPE_SPANNER":
+                            case 3:
+                                message.type = 3;
+                                break;
+                            case "PRODUCT_TYPE_BIGTABLE":
+                            case 6:
+                                message.type = 6;
+                                break;
+                            case "PRODUCT_TYPE_MEMORYSTORE":
+                            case 7:
+                                message.type = 7;
+                                break;
+                            case "PRODUCT_TYPE_FIRESTORE":
+                            case 8:
+                                message.type = 8;
+                                break;
+                            case "PRODUCT_TYPE_COMPUTE_ENGINE":
+                            case 9:
+                                message.type = 9;
+                                break;
+                            case "PRODUCT_TYPE_ORACLE_ON_GCP":
+                            case 10:
+                                message.type = 10;
+                                break;
+                            case "PRODUCT_TYPE_BIGQUERY":
+                            case 11:
+                                message.type = 11;
+                                break;
+                            case "PRODUCT_TYPE_OTHER":
+                            case 5:
+                                message.type = 5;
+                                break;
+                            }
+                            switch (object.engine) {
+                            default:
+                                if (typeof object.engine === "number") {
+                                    message.engine = object.engine;
+                                    break;
+                                }
+                                break;
+                            case "ENGINE_UNSPECIFIED":
+                            case 0:
+                                message.engine = 0;
+                                break;
+                            case "ENGINE_MYSQL":
+                            case 1:
+                                message.engine = 1;
+                                break;
+                            case "ENGINE_POSTGRES":
+                            case 2:
+                                message.engine = 2;
+                                break;
+                            case "ENGINE_SQL_SERVER":
+                            case 3:
+                                message.engine = 3;
+                                break;
+                            case "ENGINE_NATIVE":
+                            case 4:
+                                message.engine = 4;
+                                break;
+                            case "ENGINE_MEMORYSTORE_FOR_REDIS":
+                            case 8:
+                                message.engine = 8;
+                                break;
+                            case "ENGINE_MEMORYSTORE_FOR_REDIS_CLUSTER":
+                            case 9:
+                                message.engine = 9;
+                                break;
+                            case "ENGINE_FIRESTORE_WITH_NATIVE_MODE":
+                            case 10:
+                                message.engine = 10;
+                                break;
+                            case "ENGINE_FIRESTORE_WITH_DATASTORE_MODE":
+                            case 11:
+                                message.engine = 11;
+                                break;
+                            case "ENGINE_EXADATA_ORACLE":
+                            case 12:
+                                message.engine = 12;
+                                break;
+                            case "ENGINE_ADB_SERVERLESS_ORACLE":
+                            case 13:
+                                message.engine = 13;
+                                break;
+                            case "ENGINE_FIRESTORE_WITH_MONGODB_COMPATIBILITY_MODE":
+                            case 14:
+                                message.engine = 14;
+                                break;
+                            case "ENGINE_OTHER":
+                            case 6:
+                                message.engine = 6;
+                                break;
+                            }
+                            if (object.version != null)
+                                message.version = String(object.version);
+                            if (object.minorVersion != null)
+                                message.minorVersion = String(object.minorVersion);
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a Product message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.Product
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.Product} message Product
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        Product.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.defaults) {
+                                object.type = options.enums === String ? "PRODUCT_TYPE_UNSPECIFIED" : 0;
+                                object.engine = options.enums === String ? "ENGINE_UNSPECIFIED" : 0;
+                                object.version = "";
+                                object.minorVersion = "";
+                            }
+                            if (message.type != null && message.hasOwnProperty("type"))
+                                object.type = options.enums === String ? $root.google.cloud.databasecenter.v1beta.ProductType[message.type] === undefined ? message.type : $root.google.cloud.databasecenter.v1beta.ProductType[message.type] : message.type;
+                            if (message.engine != null && message.hasOwnProperty("engine"))
+                                object.engine = options.enums === String ? $root.google.cloud.databasecenter.v1beta.Engine[message.engine] === undefined ? message.engine : $root.google.cloud.databasecenter.v1beta.Engine[message.engine] : message.engine;
+                            if (message.version != null && message.hasOwnProperty("version"))
+                                object.version = message.version;
+                            if (message.minorVersion != null && message.hasOwnProperty("minorVersion"))
+                                object.minorVersion = message.minorVersion;
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this Product to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.Product
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        Product.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for Product
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.Product
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        Product.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.Product";
+                        };
+    
+                        return Product;
+                    })();
+    
+                    v1beta.DatabaseCenter = (function() {
+    
+                        /**
+                         * Constructs a new DatabaseCenter service.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a DatabaseCenter
+                         * @extends $protobuf.rpc.Service
+                         * @constructor
+                         * @param {$protobuf.RPCImpl} rpcImpl RPC implementation
+                         * @param {boolean} [requestDelimited=false] Whether requests are length-delimited
+                         * @param {boolean} [responseDelimited=false] Whether responses are length-delimited
+                         */
+                        function DatabaseCenter(rpcImpl, requestDelimited, responseDelimited) {
+                            $protobuf.rpc.Service.call(this, rpcImpl, requestDelimited, responseDelimited);
+                        }
+    
+                        (DatabaseCenter.prototype = Object.create($protobuf.rpc.Service.prototype)).constructor = DatabaseCenter;
+    
+                        /**
+                         * Creates new DatabaseCenter service using the specified rpc implementation.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseCenter
+                         * @static
+                         * @param {$protobuf.RPCImpl} rpcImpl RPC implementation
+                         * @param {boolean} [requestDelimited=false] Whether requests are length-delimited
+                         * @param {boolean} [responseDelimited=false] Whether responses are length-delimited
+                         * @returns {DatabaseCenter} RPC service. Useful where requests and/or responses are streamed.
+                         */
+                        DatabaseCenter.create = function create(rpcImpl, requestDelimited, responseDelimited) {
+                            return new this(rpcImpl, requestDelimited, responseDelimited);
+                        };
+    
+                        /**
+                         * Callback as used by {@link google.cloud.databasecenter.v1beta.DatabaseCenter|queryProducts}.
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseCenter
+                         * @typedef QueryProductsCallback
+                         * @type {function}
+                         * @param {Error|null} error Error, if any
+                         * @param {google.cloud.databasecenter.v1beta.QueryProductsResponse} [response] QueryProductsResponse
+                         */
+    
+                        /**
+                         * Calls QueryProducts.
+                         * @function queryProducts
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseCenter
+                         * @instance
+                         * @param {google.cloud.databasecenter.v1beta.IQueryProductsRequest} request QueryProductsRequest message or plain object
+                         * @param {google.cloud.databasecenter.v1beta.DatabaseCenter.QueryProductsCallback} callback Node-style callback called with the error, if any, and QueryProductsResponse
+                         * @returns {undefined}
+                         * @variation 1
+                         */
+                        Object.defineProperty(DatabaseCenter.prototype.queryProducts = function queryProducts(request, callback) {
+                            return this.rpcCall(queryProducts, $root.google.cloud.databasecenter.v1beta.QueryProductsRequest, $root.google.cloud.databasecenter.v1beta.QueryProductsResponse, request, callback);
+                        }, "name", { value: "QueryProducts" });
+    
+                        /**
+                         * Calls QueryProducts.
+                         * @function queryProducts
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseCenter
+                         * @instance
+                         * @param {google.cloud.databasecenter.v1beta.IQueryProductsRequest} request QueryProductsRequest message or plain object
+                         * @returns {Promise<google.cloud.databasecenter.v1beta.QueryProductsResponse>} Promise
+                         * @variation 2
+                         */
+    
+                        /**
+                         * Callback as used by {@link google.cloud.databasecenter.v1beta.DatabaseCenter|aggregateFleet}.
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseCenter
+                         * @typedef AggregateFleetCallback
+                         * @type {function}
+                         * @param {Error|null} error Error, if any
+                         * @param {google.cloud.databasecenter.v1beta.AggregateFleetResponse} [response] AggregateFleetResponse
+                         */
+    
+                        /**
+                         * Calls AggregateFleet.
+                         * @function aggregateFleet
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseCenter
+                         * @instance
+                         * @param {google.cloud.databasecenter.v1beta.IAggregateFleetRequest} request AggregateFleetRequest message or plain object
+                         * @param {google.cloud.databasecenter.v1beta.DatabaseCenter.AggregateFleetCallback} callback Node-style callback called with the error, if any, and AggregateFleetResponse
+                         * @returns {undefined}
+                         * @variation 1
+                         */
+                        Object.defineProperty(DatabaseCenter.prototype.aggregateFleet = function aggregateFleet(request, callback) {
+                            return this.rpcCall(aggregateFleet, $root.google.cloud.databasecenter.v1beta.AggregateFleetRequest, $root.google.cloud.databasecenter.v1beta.AggregateFleetResponse, request, callback);
+                        }, "name", { value: "AggregateFleet" });
+    
+                        /**
+                         * Calls AggregateFleet.
+                         * @function aggregateFleet
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseCenter
+                         * @instance
+                         * @param {google.cloud.databasecenter.v1beta.IAggregateFleetRequest} request AggregateFleetRequest message or plain object
+                         * @returns {Promise<google.cloud.databasecenter.v1beta.AggregateFleetResponse>} Promise
+                         * @variation 2
+                         */
+    
+                        /**
+                         * Callback as used by {@link google.cloud.databasecenter.v1beta.DatabaseCenter|queryDatabaseResourceGroups}.
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseCenter
+                         * @typedef QueryDatabaseResourceGroupsCallback
+                         * @type {function}
+                         * @param {Error|null} error Error, if any
+                         * @param {google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse} [response] QueryDatabaseResourceGroupsResponse
+                         */
+    
+                        /**
+                         * Calls QueryDatabaseResourceGroups.
+                         * @function queryDatabaseResourceGroups
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseCenter
+                         * @instance
+                         * @param {google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsRequest} request QueryDatabaseResourceGroupsRequest message or plain object
+                         * @param {google.cloud.databasecenter.v1beta.DatabaseCenter.QueryDatabaseResourceGroupsCallback} callback Node-style callback called with the error, if any, and QueryDatabaseResourceGroupsResponse
+                         * @returns {undefined}
+                         * @variation 1
+                         */
+                        Object.defineProperty(DatabaseCenter.prototype.queryDatabaseResourceGroups = function queryDatabaseResourceGroups(request, callback) {
+                            return this.rpcCall(queryDatabaseResourceGroups, $root.google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest, $root.google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse, request, callback);
+                        }, "name", { value: "QueryDatabaseResourceGroups" });
+    
+                        /**
+                         * Calls QueryDatabaseResourceGroups.
+                         * @function queryDatabaseResourceGroups
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseCenter
+                         * @instance
+                         * @param {google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsRequest} request QueryDatabaseResourceGroupsRequest message or plain object
+                         * @returns {Promise<google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse>} Promise
+                         * @variation 2
+                         */
+    
+                        /**
+                         * Callback as used by {@link google.cloud.databasecenter.v1beta.DatabaseCenter|aggregateIssueStats}.
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseCenter
+                         * @typedef AggregateIssueStatsCallback
+                         * @type {function}
+                         * @param {Error|null} error Error, if any
+                         * @param {google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse} [response] AggregateIssueStatsResponse
+                         */
+    
+                        /**
+                         * Calls AggregateIssueStats.
+                         * @function aggregateIssueStats
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseCenter
+                         * @instance
+                         * @param {google.cloud.databasecenter.v1beta.IAggregateIssueStatsRequest} request AggregateIssueStatsRequest message or plain object
+                         * @param {google.cloud.databasecenter.v1beta.DatabaseCenter.AggregateIssueStatsCallback} callback Node-style callback called with the error, if any, and AggregateIssueStatsResponse
+                         * @returns {undefined}
+                         * @variation 1
+                         */
+                        Object.defineProperty(DatabaseCenter.prototype.aggregateIssueStats = function aggregateIssueStats(request, callback) {
+                            return this.rpcCall(aggregateIssueStats, $root.google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest, $root.google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse, request, callback);
+                        }, "name", { value: "AggregateIssueStats" });
+    
+                        /**
+                         * Calls AggregateIssueStats.
+                         * @function aggregateIssueStats
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseCenter
+                         * @instance
+                         * @param {google.cloud.databasecenter.v1beta.IAggregateIssueStatsRequest} request AggregateIssueStatsRequest message or plain object
+                         * @returns {Promise<google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse>} Promise
+                         * @variation 2
+                         */
+    
+                        /**
+                         * Callback as used by {@link google.cloud.databasecenter.v1beta.DatabaseCenter|queryIssues}.
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseCenter
+                         * @typedef QueryIssuesCallback
+                         * @type {function}
+                         * @param {Error|null} error Error, if any
+                         * @param {google.cloud.databasecenter.v1beta.QueryIssuesResponse} [response] QueryIssuesResponse
+                         */
+    
+                        /**
+                         * Calls QueryIssues.
+                         * @function queryIssues
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseCenter
+                         * @instance
+                         * @param {google.cloud.databasecenter.v1beta.IQueryIssuesRequest} request QueryIssuesRequest message or plain object
+                         * @param {google.cloud.databasecenter.v1beta.DatabaseCenter.QueryIssuesCallback} callback Node-style callback called with the error, if any, and QueryIssuesResponse
+                         * @returns {undefined}
+                         * @variation 1
+                         */
+                        Object.defineProperty(DatabaseCenter.prototype.queryIssues = function queryIssues(request, callback) {
+                            return this.rpcCall(queryIssues, $root.google.cloud.databasecenter.v1beta.QueryIssuesRequest, $root.google.cloud.databasecenter.v1beta.QueryIssuesResponse, request, callback);
+                        }, "name", { value: "QueryIssues" });
+    
+                        /**
+                         * Calls QueryIssues.
+                         * @function queryIssues
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseCenter
+                         * @instance
+                         * @param {google.cloud.databasecenter.v1beta.IQueryIssuesRequest} request QueryIssuesRequest message or plain object
+                         * @returns {Promise<google.cloud.databasecenter.v1beta.QueryIssuesResponse>} Promise
+                         * @variation 2
+                         */
+    
+                        return DatabaseCenter;
+                    })();
+    
+                    /**
+                     * Edition enum.
+                     * @name google.cloud.databasecenter.v1beta.Edition
+                     * @enum {number}
+                     * @property {number} EDITION_UNSPECIFIED=0 EDITION_UNSPECIFIED value
+                     * @property {number} EDITION_ENTERPRISE=1 EDITION_ENTERPRISE value
+                     * @property {number} EDITION_ENTERPRISE_PLUS=2 EDITION_ENTERPRISE_PLUS value
+                     * @property {number} EDITION_STANDARD=3 EDITION_STANDARD value
+                     */
+                    v1beta.Edition = (function() {
+                        var valuesById = {}, values = Object.create(valuesById);
+                        values[valuesById[0] = "EDITION_UNSPECIFIED"] = 0;
+                        values[valuesById[1] = "EDITION_ENTERPRISE"] = 1;
+                        values[valuesById[2] = "EDITION_ENTERPRISE_PLUS"] = 2;
+                        values[valuesById[3] = "EDITION_STANDARD"] = 3;
+                        return values;
+                    })();
+    
+                    /**
+                     * SubResourceType enum.
+                     * @name google.cloud.databasecenter.v1beta.SubResourceType
+                     * @enum {number}
+                     * @property {number} SUB_RESOURCE_TYPE_UNSPECIFIED=0 SUB_RESOURCE_TYPE_UNSPECIFIED value
+                     * @property {number} SUB_RESOURCE_TYPE_PRIMARY=1 SUB_RESOURCE_TYPE_PRIMARY value
+                     * @property {number} SUB_RESOURCE_TYPE_SECONDARY=2 SUB_RESOURCE_TYPE_SECONDARY value
+                     * @property {number} SUB_RESOURCE_TYPE_READ_REPLICA=3 SUB_RESOURCE_TYPE_READ_REPLICA value
+                     * @property {number} SUB_RESOURCE_TYPE_EXTERNAL_PRIMARY=5 SUB_RESOURCE_TYPE_EXTERNAL_PRIMARY value
+                     * @property {number} SUB_RESOURCE_TYPE_READ_POOL=6 SUB_RESOURCE_TYPE_READ_POOL value
+                     * @property {number} SUB_RESOURCE_TYPE_RESERVATION=7 SUB_RESOURCE_TYPE_RESERVATION value
+                     * @property {number} SUB_RESOURCE_TYPE_DATASET=8 SUB_RESOURCE_TYPE_DATASET value
+                     * @property {number} SUB_RESOURCE_TYPE_OTHER=4 SUB_RESOURCE_TYPE_OTHER value
+                     */
+                    v1beta.SubResourceType = (function() {
+                        var valuesById = {}, values = Object.create(valuesById);
+                        values[valuesById[0] = "SUB_RESOURCE_TYPE_UNSPECIFIED"] = 0;
+                        values[valuesById[1] = "SUB_RESOURCE_TYPE_PRIMARY"] = 1;
+                        values[valuesById[2] = "SUB_RESOURCE_TYPE_SECONDARY"] = 2;
+                        values[valuesById[3] = "SUB_RESOURCE_TYPE_READ_REPLICA"] = 3;
+                        values[valuesById[5] = "SUB_RESOURCE_TYPE_EXTERNAL_PRIMARY"] = 5;
+                        values[valuesById[6] = "SUB_RESOURCE_TYPE_READ_POOL"] = 6;
+                        values[valuesById[7] = "SUB_RESOURCE_TYPE_RESERVATION"] = 7;
+                        values[valuesById[8] = "SUB_RESOURCE_TYPE_DATASET"] = 8;
+                        values[valuesById[4] = "SUB_RESOURCE_TYPE_OTHER"] = 4;
+                        return values;
+                    })();
+    
+                    /**
+                     * ManagementType enum.
+                     * @name google.cloud.databasecenter.v1beta.ManagementType
+                     * @enum {number}
+                     * @property {number} MANAGEMENT_TYPE_UNSPECIFIED=0 MANAGEMENT_TYPE_UNSPECIFIED value
+                     * @property {number} MANAGEMENT_TYPE_GCP_MANAGED=1 MANAGEMENT_TYPE_GCP_MANAGED value
+                     * @property {number} MANAGEMENT_TYPE_SELF_MANAGED=2 MANAGEMENT_TYPE_SELF_MANAGED value
+                     */
+                    v1beta.ManagementType = (function() {
+                        var valuesById = {}, values = Object.create(valuesById);
+                        values[valuesById[0] = "MANAGEMENT_TYPE_UNSPECIFIED"] = 0;
+                        values[valuesById[1] = "MANAGEMENT_TYPE_GCP_MANAGED"] = 1;
+                        values[valuesById[2] = "MANAGEMENT_TYPE_SELF_MANAGED"] = 2;
+                        return values;
+                    })();
+    
+                    /**
+                     * ResourceCategory enum.
+                     * @name google.cloud.databasecenter.v1beta.ResourceCategory
+                     * @enum {number}
+                     * @property {number} RESOURCE_CATEGORY_UNSPECIFIED=0 RESOURCE_CATEGORY_UNSPECIFIED value
+                     * @property {number} INSTANCE=1 INSTANCE value
+                     * @property {number} CLUSTER=2 CLUSTER value
+                     * @property {number} DATABASE=3 DATABASE value
+                     * @property {number} DATASET=4 DATASET value
+                     * @property {number} RESERVATION=5 RESERVATION value
+                     */
+                    v1beta.ResourceCategory = (function() {
+                        var valuesById = {}, values = Object.create(valuesById);
+                        values[valuesById[0] = "RESOURCE_CATEGORY_UNSPECIFIED"] = 0;
+                        values[valuesById[1] = "INSTANCE"] = 1;
+                        values[valuesById[2] = "CLUSTER"] = 2;
+                        values[valuesById[3] = "DATABASE"] = 3;
+                        values[valuesById[4] = "DATASET"] = 4;
+                        values[valuesById[5] = "RESERVATION"] = 5;
+                        return values;
+                    })();
+    
+                    v1beta.QueryProductsRequest = (function() {
+    
+                        /**
+                         * Properties of a QueryProductsRequest.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IQueryProductsRequest
+                         * @property {string|null} [parent] QueryProductsRequest parent
+                         * @property {number|null} [pageSize] QueryProductsRequest pageSize
+                         * @property {string|null} [pageToken] QueryProductsRequest pageToken
+                         */
+    
+                        /**
+                         * Constructs a new QueryProductsRequest.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a QueryProductsRequest.
+                         * @implements IQueryProductsRequest
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IQueryProductsRequest=} [properties] Properties to set
+                         */
+                        function QueryProductsRequest(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * QueryProductsRequest parent.
+                         * @member {string} parent
+                         * @memberof google.cloud.databasecenter.v1beta.QueryProductsRequest
+                         * @instance
+                         */
+                        QueryProductsRequest.prototype.parent = "";
+    
+                        /**
+                         * QueryProductsRequest pageSize.
+                         * @member {number} pageSize
+                         * @memberof google.cloud.databasecenter.v1beta.QueryProductsRequest
+                         * @instance
+                         */
+                        QueryProductsRequest.prototype.pageSize = 0;
+    
+                        /**
+                         * QueryProductsRequest pageToken.
+                         * @member {string} pageToken
+                         * @memberof google.cloud.databasecenter.v1beta.QueryProductsRequest
+                         * @instance
+                         */
+                        QueryProductsRequest.prototype.pageToken = "";
+    
+                        /**
+                         * Creates a new QueryProductsRequest instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.QueryProductsRequest
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IQueryProductsRequest=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.QueryProductsRequest} QueryProductsRequest instance
+                         */
+                        QueryProductsRequest.create = function create(properties) {
+                            return new QueryProductsRequest(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified QueryProductsRequest message. Does not implicitly {@link google.cloud.databasecenter.v1beta.QueryProductsRequest.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.QueryProductsRequest
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IQueryProductsRequest} message QueryProductsRequest message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        QueryProductsRequest.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.pageSize != null && Object.hasOwnProperty.call(message, "pageSize"))
+                                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.pageSize);
+                            if (message.pageToken != null && Object.hasOwnProperty.call(message, "pageToken"))
+                                writer.uint32(/* id 2, wireType 2 =*/18).string(message.pageToken);
+                            if (message.parent != null && Object.hasOwnProperty.call(message, "parent"))
+                                writer.uint32(/* id 3, wireType 2 =*/26).string(message.parent);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified QueryProductsRequest message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.QueryProductsRequest.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.QueryProductsRequest
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IQueryProductsRequest} message QueryProductsRequest message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        QueryProductsRequest.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a QueryProductsRequest message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.QueryProductsRequest
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.QueryProductsRequest} QueryProductsRequest
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        QueryProductsRequest.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.QueryProductsRequest();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 3: {
+                                        message.parent = reader.string();
+                                        break;
+                                    }
+                                case 1: {
+                                        message.pageSize = reader.int32();
+                                        break;
+                                    }
+                                case 2: {
+                                        message.pageToken = reader.string();
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a QueryProductsRequest message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.QueryProductsRequest
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.QueryProductsRequest} QueryProductsRequest
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        QueryProductsRequest.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a QueryProductsRequest message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.QueryProductsRequest
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        QueryProductsRequest.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.parent != null && message.hasOwnProperty("parent"))
+                                if (!$util.isString(message.parent))
+                                    return "parent: string expected";
+                            if (message.pageSize != null && message.hasOwnProperty("pageSize"))
+                                if (!$util.isInteger(message.pageSize))
+                                    return "pageSize: integer expected";
+                            if (message.pageToken != null && message.hasOwnProperty("pageToken"))
+                                if (!$util.isString(message.pageToken))
+                                    return "pageToken: string expected";
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a QueryProductsRequest message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.QueryProductsRequest
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.QueryProductsRequest} QueryProductsRequest
+                         */
+                        QueryProductsRequest.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.QueryProductsRequest)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.QueryProductsRequest();
+                            if (object.parent != null)
+                                message.parent = String(object.parent);
+                            if (object.pageSize != null)
+                                message.pageSize = object.pageSize | 0;
+                            if (object.pageToken != null)
+                                message.pageToken = String(object.pageToken);
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a QueryProductsRequest message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.QueryProductsRequest
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.QueryProductsRequest} message QueryProductsRequest
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        QueryProductsRequest.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.defaults) {
+                                object.pageSize = 0;
+                                object.pageToken = "";
+                                object.parent = "";
+                            }
+                            if (message.pageSize != null && message.hasOwnProperty("pageSize"))
+                                object.pageSize = message.pageSize;
+                            if (message.pageToken != null && message.hasOwnProperty("pageToken"))
+                                object.pageToken = message.pageToken;
+                            if (message.parent != null && message.hasOwnProperty("parent"))
+                                object.parent = message.parent;
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this QueryProductsRequest to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.QueryProductsRequest
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        QueryProductsRequest.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for QueryProductsRequest
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.QueryProductsRequest
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        QueryProductsRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.QueryProductsRequest";
+                        };
+    
+                        return QueryProductsRequest;
+                    })();
+    
+                    v1beta.QueryProductsResponse = (function() {
+    
+                        /**
+                         * Properties of a QueryProductsResponse.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IQueryProductsResponse
+                         * @property {Array.<google.cloud.databasecenter.v1beta.IProduct>|null} [products] QueryProductsResponse products
+                         * @property {string|null} [nextPageToken] QueryProductsResponse nextPageToken
+                         * @property {Array.<string>|null} [unreachable] QueryProductsResponse unreachable
+                         */
+    
+                        /**
+                         * Constructs a new QueryProductsResponse.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a QueryProductsResponse.
+                         * @implements IQueryProductsResponse
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IQueryProductsResponse=} [properties] Properties to set
+                         */
+                        function QueryProductsResponse(properties) {
+                            this.products = [];
+                            this.unreachable = [];
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * QueryProductsResponse products.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.IProduct>} products
+                         * @memberof google.cloud.databasecenter.v1beta.QueryProductsResponse
+                         * @instance
+                         */
+                        QueryProductsResponse.prototype.products = $util.emptyArray;
+    
+                        /**
+                         * QueryProductsResponse nextPageToken.
+                         * @member {string} nextPageToken
+                         * @memberof google.cloud.databasecenter.v1beta.QueryProductsResponse
+                         * @instance
+                         */
+                        QueryProductsResponse.prototype.nextPageToken = "";
+    
+                        /**
+                         * QueryProductsResponse unreachable.
+                         * @member {Array.<string>} unreachable
+                         * @memberof google.cloud.databasecenter.v1beta.QueryProductsResponse
+                         * @instance
+                         */
+                        QueryProductsResponse.prototype.unreachable = $util.emptyArray;
+    
+                        /**
+                         * Creates a new QueryProductsResponse instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.QueryProductsResponse
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IQueryProductsResponse=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.QueryProductsResponse} QueryProductsResponse instance
+                         */
+                        QueryProductsResponse.create = function create(properties) {
+                            return new QueryProductsResponse(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified QueryProductsResponse message. Does not implicitly {@link google.cloud.databasecenter.v1beta.QueryProductsResponse.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.QueryProductsResponse
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IQueryProductsResponse} message QueryProductsResponse message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        QueryProductsResponse.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.products != null && message.products.length)
+                                for (var i = 0; i < message.products.length; ++i)
+                                    $root.google.cloud.databasecenter.v1beta.Product.encode(message.products[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                            if (message.nextPageToken != null && Object.hasOwnProperty.call(message, "nextPageToken"))
+                                writer.uint32(/* id 2, wireType 2 =*/18).string(message.nextPageToken);
+                            if (message.unreachable != null && message.unreachable.length)
+                                for (var i = 0; i < message.unreachable.length; ++i)
+                                    writer.uint32(/* id 3, wireType 2 =*/26).string(message.unreachable[i]);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified QueryProductsResponse message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.QueryProductsResponse.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.QueryProductsResponse
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IQueryProductsResponse} message QueryProductsResponse message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        QueryProductsResponse.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a QueryProductsResponse message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.QueryProductsResponse
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.QueryProductsResponse} QueryProductsResponse
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        QueryProductsResponse.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.QueryProductsResponse();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        if (!(message.products && message.products.length))
+                                            message.products = [];
+                                        message.products.push($root.google.cloud.databasecenter.v1beta.Product.decode(reader, reader.uint32()));
+                                        break;
+                                    }
+                                case 2: {
+                                        message.nextPageToken = reader.string();
+                                        break;
+                                    }
+                                case 3: {
+                                        if (!(message.unreachable && message.unreachable.length))
+                                            message.unreachable = [];
+                                        message.unreachable.push(reader.string());
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a QueryProductsResponse message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.QueryProductsResponse
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.QueryProductsResponse} QueryProductsResponse
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        QueryProductsResponse.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a QueryProductsResponse message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.QueryProductsResponse
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        QueryProductsResponse.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.products != null && message.hasOwnProperty("products")) {
+                                if (!Array.isArray(message.products))
+                                    return "products: array expected";
+                                for (var i = 0; i < message.products.length; ++i) {
+                                    var error = $root.google.cloud.databasecenter.v1beta.Product.verify(message.products[i]);
+                                    if (error)
+                                        return "products." + error;
+                                }
+                            }
+                            if (message.nextPageToken != null && message.hasOwnProperty("nextPageToken"))
+                                if (!$util.isString(message.nextPageToken))
+                                    return "nextPageToken: string expected";
+                            if (message.unreachable != null && message.hasOwnProperty("unreachable")) {
+                                if (!Array.isArray(message.unreachable))
+                                    return "unreachable: array expected";
+                                for (var i = 0; i < message.unreachable.length; ++i)
+                                    if (!$util.isString(message.unreachable[i]))
+                                        return "unreachable: string[] expected";
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a QueryProductsResponse message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.QueryProductsResponse
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.QueryProductsResponse} QueryProductsResponse
+                         */
+                        QueryProductsResponse.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.QueryProductsResponse)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.QueryProductsResponse();
+                            if (object.products) {
+                                if (!Array.isArray(object.products))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.QueryProductsResponse.products: array expected");
+                                message.products = [];
+                                for (var i = 0; i < object.products.length; ++i) {
+                                    if (typeof object.products[i] !== "object")
+                                        throw TypeError(".google.cloud.databasecenter.v1beta.QueryProductsResponse.products: object expected");
+                                    message.products[i] = $root.google.cloud.databasecenter.v1beta.Product.fromObject(object.products[i]);
+                                }
+                            }
+                            if (object.nextPageToken != null)
+                                message.nextPageToken = String(object.nextPageToken);
+                            if (object.unreachable) {
+                                if (!Array.isArray(object.unreachable))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.QueryProductsResponse.unreachable: array expected");
+                                message.unreachable = [];
+                                for (var i = 0; i < object.unreachable.length; ++i)
+                                    message.unreachable[i] = String(object.unreachable[i]);
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a QueryProductsResponse message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.QueryProductsResponse
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.QueryProductsResponse} message QueryProductsResponse
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        QueryProductsResponse.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.arrays || options.defaults) {
+                                object.products = [];
+                                object.unreachable = [];
+                            }
+                            if (options.defaults)
+                                object.nextPageToken = "";
+                            if (message.products && message.products.length) {
+                                object.products = [];
+                                for (var j = 0; j < message.products.length; ++j)
+                                    object.products[j] = $root.google.cloud.databasecenter.v1beta.Product.toObject(message.products[j], options);
+                            }
+                            if (message.nextPageToken != null && message.hasOwnProperty("nextPageToken"))
+                                object.nextPageToken = message.nextPageToken;
+                            if (message.unreachable && message.unreachable.length) {
+                                object.unreachable = [];
+                                for (var j = 0; j < message.unreachable.length; ++j)
+                                    object.unreachable[j] = message.unreachable[j];
+                            }
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this QueryProductsResponse to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.QueryProductsResponse
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        QueryProductsResponse.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for QueryProductsResponse
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.QueryProductsResponse
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        QueryProductsResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.QueryProductsResponse";
+                        };
+    
+                        return QueryProductsResponse;
+                    })();
+    
+                    v1beta.QueryDatabaseResourceGroupsRequest = (function() {
+    
+                        /**
+                         * Properties of a QueryDatabaseResourceGroupsRequest.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IQueryDatabaseResourceGroupsRequest
+                         * @property {string|null} [parent] QueryDatabaseResourceGroupsRequest parent
+                         * @property {string|null} [filter] QueryDatabaseResourceGroupsRequest filter
+                         * @property {Array.<google.cloud.databasecenter.v1beta.ISignalTypeGroup>|null} [signalTypeGroups] QueryDatabaseResourceGroupsRequest signalTypeGroups
+                         * @property {Array.<google.cloud.databasecenter.v1beta.ISignalFilter>|null} [signalFilters] QueryDatabaseResourceGroupsRequest signalFilters
+                         * @property {string|null} [orderBy] QueryDatabaseResourceGroupsRequest orderBy
+                         * @property {number|null} [pageSize] QueryDatabaseResourceGroupsRequest pageSize
+                         * @property {string|null} [pageToken] QueryDatabaseResourceGroupsRequest pageToken
+                         */
+    
+                        /**
+                         * Constructs a new QueryDatabaseResourceGroupsRequest.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a QueryDatabaseResourceGroupsRequest.
+                         * @implements IQueryDatabaseResourceGroupsRequest
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsRequest=} [properties] Properties to set
+                         */
+                        function QueryDatabaseResourceGroupsRequest(properties) {
+                            this.signalTypeGroups = [];
+                            this.signalFilters = [];
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * QueryDatabaseResourceGroupsRequest parent.
+                         * @member {string} parent
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest
+                         * @instance
+                         */
+                        QueryDatabaseResourceGroupsRequest.prototype.parent = "";
+    
+                        /**
+                         * QueryDatabaseResourceGroupsRequest filter.
+                         * @member {string} filter
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest
+                         * @instance
+                         */
+                        QueryDatabaseResourceGroupsRequest.prototype.filter = "";
+    
+                        /**
+                         * QueryDatabaseResourceGroupsRequest signalTypeGroups.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.ISignalTypeGroup>} signalTypeGroups
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest
+                         * @instance
+                         */
+                        QueryDatabaseResourceGroupsRequest.prototype.signalTypeGroups = $util.emptyArray;
+    
+                        /**
+                         * QueryDatabaseResourceGroupsRequest signalFilters.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.ISignalFilter>} signalFilters
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest
+                         * @instance
+                         */
+                        QueryDatabaseResourceGroupsRequest.prototype.signalFilters = $util.emptyArray;
+    
+                        /**
+                         * QueryDatabaseResourceGroupsRequest orderBy.
+                         * @member {string} orderBy
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest
+                         * @instance
+                         */
+                        QueryDatabaseResourceGroupsRequest.prototype.orderBy = "";
+    
+                        /**
+                         * QueryDatabaseResourceGroupsRequest pageSize.
+                         * @member {number} pageSize
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest
+                         * @instance
+                         */
+                        QueryDatabaseResourceGroupsRequest.prototype.pageSize = 0;
+    
+                        /**
+                         * QueryDatabaseResourceGroupsRequest pageToken.
+                         * @member {string} pageToken
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest
+                         * @instance
+                         */
+                        QueryDatabaseResourceGroupsRequest.prototype.pageToken = "";
+    
+                        /**
+                         * Creates a new QueryDatabaseResourceGroupsRequest instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsRequest=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest} QueryDatabaseResourceGroupsRequest instance
+                         */
+                        QueryDatabaseResourceGroupsRequest.create = function create(properties) {
+                            return new QueryDatabaseResourceGroupsRequest(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified QueryDatabaseResourceGroupsRequest message. Does not implicitly {@link google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsRequest} message QueryDatabaseResourceGroupsRequest message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        QueryDatabaseResourceGroupsRequest.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.parent != null && Object.hasOwnProperty.call(message, "parent"))
+                                writer.uint32(/* id 1, wireType 2 =*/10).string(message.parent);
+                            if (message.filter != null && Object.hasOwnProperty.call(message, "filter"))
+                                writer.uint32(/* id 2, wireType 2 =*/18).string(message.filter);
+                            if (message.signalTypeGroups != null && message.signalTypeGroups.length)
+                                for (var i = 0; i < message.signalTypeGroups.length; ++i)
+                                    $root.google.cloud.databasecenter.v1beta.SignalTypeGroup.encode(message.signalTypeGroups[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+                            if (message.signalFilters != null && message.signalFilters.length)
+                                for (var i = 0; i < message.signalFilters.length; ++i)
+                                    $root.google.cloud.databasecenter.v1beta.SignalFilter.encode(message.signalFilters[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
+                            if (message.orderBy != null && Object.hasOwnProperty.call(message, "orderBy"))
+                                writer.uint32(/* id 5, wireType 2 =*/42).string(message.orderBy);
+                            if (message.pageSize != null && Object.hasOwnProperty.call(message, "pageSize"))
+                                writer.uint32(/* id 6, wireType 0 =*/48).int32(message.pageSize);
+                            if (message.pageToken != null && Object.hasOwnProperty.call(message, "pageToken"))
+                                writer.uint32(/* id 7, wireType 2 =*/58).string(message.pageToken);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified QueryDatabaseResourceGroupsRequest message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsRequest} message QueryDatabaseResourceGroupsRequest message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        QueryDatabaseResourceGroupsRequest.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a QueryDatabaseResourceGroupsRequest message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest} QueryDatabaseResourceGroupsRequest
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        QueryDatabaseResourceGroupsRequest.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.parent = reader.string();
+                                        break;
+                                    }
+                                case 2: {
+                                        message.filter = reader.string();
+                                        break;
+                                    }
+                                case 3: {
+                                        if (!(message.signalTypeGroups && message.signalTypeGroups.length))
+                                            message.signalTypeGroups = [];
+                                        message.signalTypeGroups.push($root.google.cloud.databasecenter.v1beta.SignalTypeGroup.decode(reader, reader.uint32()));
+                                        break;
+                                    }
+                                case 4: {
+                                        if (!(message.signalFilters && message.signalFilters.length))
+                                            message.signalFilters = [];
+                                        message.signalFilters.push($root.google.cloud.databasecenter.v1beta.SignalFilter.decode(reader, reader.uint32()));
+                                        break;
+                                    }
+                                case 5: {
+                                        message.orderBy = reader.string();
+                                        break;
+                                    }
+                                case 6: {
+                                        message.pageSize = reader.int32();
+                                        break;
+                                    }
+                                case 7: {
+                                        message.pageToken = reader.string();
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a QueryDatabaseResourceGroupsRequest message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest} QueryDatabaseResourceGroupsRequest
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        QueryDatabaseResourceGroupsRequest.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a QueryDatabaseResourceGroupsRequest message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        QueryDatabaseResourceGroupsRequest.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.parent != null && message.hasOwnProperty("parent"))
+                                if (!$util.isString(message.parent))
+                                    return "parent: string expected";
+                            if (message.filter != null && message.hasOwnProperty("filter"))
+                                if (!$util.isString(message.filter))
+                                    return "filter: string expected";
+                            if (message.signalTypeGroups != null && message.hasOwnProperty("signalTypeGroups")) {
+                                if (!Array.isArray(message.signalTypeGroups))
+                                    return "signalTypeGroups: array expected";
+                                for (var i = 0; i < message.signalTypeGroups.length; ++i) {
+                                    var error = $root.google.cloud.databasecenter.v1beta.SignalTypeGroup.verify(message.signalTypeGroups[i]);
+                                    if (error)
+                                        return "signalTypeGroups." + error;
+                                }
+                            }
+                            if (message.signalFilters != null && message.hasOwnProperty("signalFilters")) {
+                                if (!Array.isArray(message.signalFilters))
+                                    return "signalFilters: array expected";
+                                for (var i = 0; i < message.signalFilters.length; ++i) {
+                                    var error = $root.google.cloud.databasecenter.v1beta.SignalFilter.verify(message.signalFilters[i]);
+                                    if (error)
+                                        return "signalFilters." + error;
+                                }
+                            }
+                            if (message.orderBy != null && message.hasOwnProperty("orderBy"))
+                                if (!$util.isString(message.orderBy))
+                                    return "orderBy: string expected";
+                            if (message.pageSize != null && message.hasOwnProperty("pageSize"))
+                                if (!$util.isInteger(message.pageSize))
+                                    return "pageSize: integer expected";
+                            if (message.pageToken != null && message.hasOwnProperty("pageToken"))
+                                if (!$util.isString(message.pageToken))
+                                    return "pageToken: string expected";
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a QueryDatabaseResourceGroupsRequest message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest} QueryDatabaseResourceGroupsRequest
+                         */
+                        QueryDatabaseResourceGroupsRequest.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest();
+                            if (object.parent != null)
+                                message.parent = String(object.parent);
+                            if (object.filter != null)
+                                message.filter = String(object.filter);
+                            if (object.signalTypeGroups) {
+                                if (!Array.isArray(object.signalTypeGroups))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest.signalTypeGroups: array expected");
+                                message.signalTypeGroups = [];
+                                for (var i = 0; i < object.signalTypeGroups.length; ++i) {
+                                    if (typeof object.signalTypeGroups[i] !== "object")
+                                        throw TypeError(".google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest.signalTypeGroups: object expected");
+                                    message.signalTypeGroups[i] = $root.google.cloud.databasecenter.v1beta.SignalTypeGroup.fromObject(object.signalTypeGroups[i]);
+                                }
+                            }
+                            if (object.signalFilters) {
+                                if (!Array.isArray(object.signalFilters))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest.signalFilters: array expected");
+                                message.signalFilters = [];
+                                for (var i = 0; i < object.signalFilters.length; ++i) {
+                                    if (typeof object.signalFilters[i] !== "object")
+                                        throw TypeError(".google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest.signalFilters: object expected");
+                                    message.signalFilters[i] = $root.google.cloud.databasecenter.v1beta.SignalFilter.fromObject(object.signalFilters[i]);
+                                }
+                            }
+                            if (object.orderBy != null)
+                                message.orderBy = String(object.orderBy);
+                            if (object.pageSize != null)
+                                message.pageSize = object.pageSize | 0;
+                            if (object.pageToken != null)
+                                message.pageToken = String(object.pageToken);
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a QueryDatabaseResourceGroupsRequest message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest} message QueryDatabaseResourceGroupsRequest
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        QueryDatabaseResourceGroupsRequest.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.arrays || options.defaults) {
+                                object.signalTypeGroups = [];
+                                object.signalFilters = [];
+                            }
+                            if (options.defaults) {
+                                object.parent = "";
+                                object.filter = "";
+                                object.orderBy = "";
+                                object.pageSize = 0;
+                                object.pageToken = "";
+                            }
+                            if (message.parent != null && message.hasOwnProperty("parent"))
+                                object.parent = message.parent;
+                            if (message.filter != null && message.hasOwnProperty("filter"))
+                                object.filter = message.filter;
+                            if (message.signalTypeGroups && message.signalTypeGroups.length) {
+                                object.signalTypeGroups = [];
+                                for (var j = 0; j < message.signalTypeGroups.length; ++j)
+                                    object.signalTypeGroups[j] = $root.google.cloud.databasecenter.v1beta.SignalTypeGroup.toObject(message.signalTypeGroups[j], options);
+                            }
+                            if (message.signalFilters && message.signalFilters.length) {
+                                object.signalFilters = [];
+                                for (var j = 0; j < message.signalFilters.length; ++j)
+                                    object.signalFilters[j] = $root.google.cloud.databasecenter.v1beta.SignalFilter.toObject(message.signalFilters[j], options);
+                            }
+                            if (message.orderBy != null && message.hasOwnProperty("orderBy"))
+                                object.orderBy = message.orderBy;
+                            if (message.pageSize != null && message.hasOwnProperty("pageSize"))
+                                object.pageSize = message.pageSize;
+                            if (message.pageToken != null && message.hasOwnProperty("pageToken"))
+                                object.pageToken = message.pageToken;
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this QueryDatabaseResourceGroupsRequest to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        QueryDatabaseResourceGroupsRequest.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for QueryDatabaseResourceGroupsRequest
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        QueryDatabaseResourceGroupsRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest";
+                        };
+    
+                        return QueryDatabaseResourceGroupsRequest;
+                    })();
+    
+                    v1beta.QueryDatabaseResourceGroupsResponse = (function() {
+    
+                        /**
+                         * Properties of a QueryDatabaseResourceGroupsResponse.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IQueryDatabaseResourceGroupsResponse
+                         * @property {Array.<google.cloud.databasecenter.v1beta.IDatabaseResourceGroup>|null} [resourceGroups] QueryDatabaseResourceGroupsResponse resourceGroups
+                         * @property {string|null} [nextPageToken] QueryDatabaseResourceGroupsResponse nextPageToken
+                         * @property {Array.<string>|null} [unreachable] QueryDatabaseResourceGroupsResponse unreachable
+                         */
+    
+                        /**
+                         * Constructs a new QueryDatabaseResourceGroupsResponse.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a QueryDatabaseResourceGroupsResponse.
+                         * @implements IQueryDatabaseResourceGroupsResponse
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsResponse=} [properties] Properties to set
+                         */
+                        function QueryDatabaseResourceGroupsResponse(properties) {
+                            this.resourceGroups = [];
+                            this.unreachable = [];
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * QueryDatabaseResourceGroupsResponse resourceGroups.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.IDatabaseResourceGroup>} resourceGroups
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse
+                         * @instance
+                         */
+                        QueryDatabaseResourceGroupsResponse.prototype.resourceGroups = $util.emptyArray;
+    
+                        /**
+                         * QueryDatabaseResourceGroupsResponse nextPageToken.
+                         * @member {string} nextPageToken
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse
+                         * @instance
+                         */
+                        QueryDatabaseResourceGroupsResponse.prototype.nextPageToken = "";
+    
+                        /**
+                         * QueryDatabaseResourceGroupsResponse unreachable.
+                         * @member {Array.<string>} unreachable
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse
+                         * @instance
+                         */
+                        QueryDatabaseResourceGroupsResponse.prototype.unreachable = $util.emptyArray;
+    
+                        /**
+                         * Creates a new QueryDatabaseResourceGroupsResponse instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsResponse=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse} QueryDatabaseResourceGroupsResponse instance
+                         */
+                        QueryDatabaseResourceGroupsResponse.create = function create(properties) {
+                            return new QueryDatabaseResourceGroupsResponse(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified QueryDatabaseResourceGroupsResponse message. Does not implicitly {@link google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsResponse} message QueryDatabaseResourceGroupsResponse message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        QueryDatabaseResourceGroupsResponse.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.resourceGroups != null && message.resourceGroups.length)
+                                for (var i = 0; i < message.resourceGroups.length; ++i)
+                                    $root.google.cloud.databasecenter.v1beta.DatabaseResourceGroup.encode(message.resourceGroups[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                            if (message.nextPageToken != null && Object.hasOwnProperty.call(message, "nextPageToken"))
+                                writer.uint32(/* id 2, wireType 2 =*/18).string(message.nextPageToken);
+                            if (message.unreachable != null && message.unreachable.length)
+                                for (var i = 0; i < message.unreachable.length; ++i)
+                                    writer.uint32(/* id 3, wireType 2 =*/26).string(message.unreachable[i]);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified QueryDatabaseResourceGroupsResponse message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsResponse} message QueryDatabaseResourceGroupsResponse message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        QueryDatabaseResourceGroupsResponse.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a QueryDatabaseResourceGroupsResponse message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse} QueryDatabaseResourceGroupsResponse
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        QueryDatabaseResourceGroupsResponse.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        if (!(message.resourceGroups && message.resourceGroups.length))
+                                            message.resourceGroups = [];
+                                        message.resourceGroups.push($root.google.cloud.databasecenter.v1beta.DatabaseResourceGroup.decode(reader, reader.uint32()));
+                                        break;
+                                    }
+                                case 2: {
+                                        message.nextPageToken = reader.string();
+                                        break;
+                                    }
+                                case 3: {
+                                        if (!(message.unreachable && message.unreachable.length))
+                                            message.unreachable = [];
+                                        message.unreachable.push(reader.string());
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a QueryDatabaseResourceGroupsResponse message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse} QueryDatabaseResourceGroupsResponse
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        QueryDatabaseResourceGroupsResponse.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a QueryDatabaseResourceGroupsResponse message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        QueryDatabaseResourceGroupsResponse.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.resourceGroups != null && message.hasOwnProperty("resourceGroups")) {
+                                if (!Array.isArray(message.resourceGroups))
+                                    return "resourceGroups: array expected";
+                                for (var i = 0; i < message.resourceGroups.length; ++i) {
+                                    var error = $root.google.cloud.databasecenter.v1beta.DatabaseResourceGroup.verify(message.resourceGroups[i]);
+                                    if (error)
+                                        return "resourceGroups." + error;
+                                }
+                            }
+                            if (message.nextPageToken != null && message.hasOwnProperty("nextPageToken"))
+                                if (!$util.isString(message.nextPageToken))
+                                    return "nextPageToken: string expected";
+                            if (message.unreachable != null && message.hasOwnProperty("unreachable")) {
+                                if (!Array.isArray(message.unreachable))
+                                    return "unreachable: array expected";
+                                for (var i = 0; i < message.unreachable.length; ++i)
+                                    if (!$util.isString(message.unreachable[i]))
+                                        return "unreachable: string[] expected";
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a QueryDatabaseResourceGroupsResponse message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse} QueryDatabaseResourceGroupsResponse
+                         */
+                        QueryDatabaseResourceGroupsResponse.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse();
+                            if (object.resourceGroups) {
+                                if (!Array.isArray(object.resourceGroups))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse.resourceGroups: array expected");
+                                message.resourceGroups = [];
+                                for (var i = 0; i < object.resourceGroups.length; ++i) {
+                                    if (typeof object.resourceGroups[i] !== "object")
+                                        throw TypeError(".google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse.resourceGroups: object expected");
+                                    message.resourceGroups[i] = $root.google.cloud.databasecenter.v1beta.DatabaseResourceGroup.fromObject(object.resourceGroups[i]);
+                                }
+                            }
+                            if (object.nextPageToken != null)
+                                message.nextPageToken = String(object.nextPageToken);
+                            if (object.unreachable) {
+                                if (!Array.isArray(object.unreachable))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse.unreachable: array expected");
+                                message.unreachable = [];
+                                for (var i = 0; i < object.unreachable.length; ++i)
+                                    message.unreachable[i] = String(object.unreachable[i]);
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a QueryDatabaseResourceGroupsResponse message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse} message QueryDatabaseResourceGroupsResponse
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        QueryDatabaseResourceGroupsResponse.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.arrays || options.defaults) {
+                                object.resourceGroups = [];
+                                object.unreachable = [];
+                            }
+                            if (options.defaults)
+                                object.nextPageToken = "";
+                            if (message.resourceGroups && message.resourceGroups.length) {
+                                object.resourceGroups = [];
+                                for (var j = 0; j < message.resourceGroups.length; ++j)
+                                    object.resourceGroups[j] = $root.google.cloud.databasecenter.v1beta.DatabaseResourceGroup.toObject(message.resourceGroups[j], options);
+                            }
+                            if (message.nextPageToken != null && message.hasOwnProperty("nextPageToken"))
+                                object.nextPageToken = message.nextPageToken;
+                            if (message.unreachable && message.unreachable.length) {
+                                object.unreachable = [];
+                                for (var j = 0; j < message.unreachable.length; ++j)
+                                    object.unreachable[j] = message.unreachable[j];
+                            }
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this QueryDatabaseResourceGroupsResponse to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        QueryDatabaseResourceGroupsResponse.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for QueryDatabaseResourceGroupsResponse
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        QueryDatabaseResourceGroupsResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse";
+                        };
+    
+                        return QueryDatabaseResourceGroupsResponse;
+                    })();
+    
+                    v1beta.DatabaseResourceGroup = (function() {
+    
+                        /**
+                         * Properties of a DatabaseResourceGroup.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IDatabaseResourceGroup
+                         * @property {Array.<google.cloud.databasecenter.v1beta.IDatabaseResource>|null} [rootResources] DatabaseResourceGroup rootResources
+                         * @property {Array.<google.cloud.databasecenter.v1beta.IIssueCount>|null} [signalGroups] DatabaseResourceGroup signalGroups
+                         */
+    
+                        /**
+                         * Constructs a new DatabaseResourceGroup.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a DatabaseResourceGroup.
+                         * @implements IDatabaseResourceGroup
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IDatabaseResourceGroup=} [properties] Properties to set
+                         */
+                        function DatabaseResourceGroup(properties) {
+                            this.rootResources = [];
+                            this.signalGroups = [];
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * DatabaseResourceGroup rootResources.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.IDatabaseResource>} rootResources
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResourceGroup
+                         * @instance
+                         */
+                        DatabaseResourceGroup.prototype.rootResources = $util.emptyArray;
+    
+                        /**
+                         * DatabaseResourceGroup signalGroups.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.IIssueCount>} signalGroups
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResourceGroup
+                         * @instance
+                         */
+                        DatabaseResourceGroup.prototype.signalGroups = $util.emptyArray;
+    
+                        /**
+                         * Creates a new DatabaseResourceGroup instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResourceGroup
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IDatabaseResourceGroup=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.DatabaseResourceGroup} DatabaseResourceGroup instance
+                         */
+                        DatabaseResourceGroup.create = function create(properties) {
+                            return new DatabaseResourceGroup(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified DatabaseResourceGroup message. Does not implicitly {@link google.cloud.databasecenter.v1beta.DatabaseResourceGroup.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResourceGroup
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IDatabaseResourceGroup} message DatabaseResourceGroup message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        DatabaseResourceGroup.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.rootResources != null && message.rootResources.length)
+                                for (var i = 0; i < message.rootResources.length; ++i)
+                                    $root.google.cloud.databasecenter.v1beta.DatabaseResource.encode(message.rootResources[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                            if (message.signalGroups != null && message.signalGroups.length)
+                                for (var i = 0; i < message.signalGroups.length; ++i)
+                                    $root.google.cloud.databasecenter.v1beta.IssueCount.encode(message.signalGroups[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified DatabaseResourceGroup message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.DatabaseResourceGroup.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResourceGroup
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IDatabaseResourceGroup} message DatabaseResourceGroup message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        DatabaseResourceGroup.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a DatabaseResourceGroup message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResourceGroup
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.DatabaseResourceGroup} DatabaseResourceGroup
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        DatabaseResourceGroup.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.DatabaseResourceGroup();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        if (!(message.rootResources && message.rootResources.length))
+                                            message.rootResources = [];
+                                        message.rootResources.push($root.google.cloud.databasecenter.v1beta.DatabaseResource.decode(reader, reader.uint32()));
+                                        break;
+                                    }
+                                case 2: {
+                                        if (!(message.signalGroups && message.signalGroups.length))
+                                            message.signalGroups = [];
+                                        message.signalGroups.push($root.google.cloud.databasecenter.v1beta.IssueCount.decode(reader, reader.uint32()));
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a DatabaseResourceGroup message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResourceGroup
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.DatabaseResourceGroup} DatabaseResourceGroup
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        DatabaseResourceGroup.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a DatabaseResourceGroup message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResourceGroup
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        DatabaseResourceGroup.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.rootResources != null && message.hasOwnProperty("rootResources")) {
+                                if (!Array.isArray(message.rootResources))
+                                    return "rootResources: array expected";
+                                for (var i = 0; i < message.rootResources.length; ++i) {
+                                    var error = $root.google.cloud.databasecenter.v1beta.DatabaseResource.verify(message.rootResources[i]);
+                                    if (error)
+                                        return "rootResources." + error;
+                                }
+                            }
+                            if (message.signalGroups != null && message.hasOwnProperty("signalGroups")) {
+                                if (!Array.isArray(message.signalGroups))
+                                    return "signalGroups: array expected";
+                                for (var i = 0; i < message.signalGroups.length; ++i) {
+                                    var error = $root.google.cloud.databasecenter.v1beta.IssueCount.verify(message.signalGroups[i]);
+                                    if (error)
+                                        return "signalGroups." + error;
+                                }
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a DatabaseResourceGroup message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResourceGroup
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.DatabaseResourceGroup} DatabaseResourceGroup
+                         */
+                        DatabaseResourceGroup.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.DatabaseResourceGroup)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.DatabaseResourceGroup();
+                            if (object.rootResources) {
+                                if (!Array.isArray(object.rootResources))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.DatabaseResourceGroup.rootResources: array expected");
+                                message.rootResources = [];
+                                for (var i = 0; i < object.rootResources.length; ++i) {
+                                    if (typeof object.rootResources[i] !== "object")
+                                        throw TypeError(".google.cloud.databasecenter.v1beta.DatabaseResourceGroup.rootResources: object expected");
+                                    message.rootResources[i] = $root.google.cloud.databasecenter.v1beta.DatabaseResource.fromObject(object.rootResources[i]);
+                                }
+                            }
+                            if (object.signalGroups) {
+                                if (!Array.isArray(object.signalGroups))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.DatabaseResourceGroup.signalGroups: array expected");
+                                message.signalGroups = [];
+                                for (var i = 0; i < object.signalGroups.length; ++i) {
+                                    if (typeof object.signalGroups[i] !== "object")
+                                        throw TypeError(".google.cloud.databasecenter.v1beta.DatabaseResourceGroup.signalGroups: object expected");
+                                    message.signalGroups[i] = $root.google.cloud.databasecenter.v1beta.IssueCount.fromObject(object.signalGroups[i]);
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a DatabaseResourceGroup message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResourceGroup
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.DatabaseResourceGroup} message DatabaseResourceGroup
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        DatabaseResourceGroup.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.arrays || options.defaults) {
+                                object.rootResources = [];
+                                object.signalGroups = [];
+                            }
+                            if (message.rootResources && message.rootResources.length) {
+                                object.rootResources = [];
+                                for (var j = 0; j < message.rootResources.length; ++j)
+                                    object.rootResources[j] = $root.google.cloud.databasecenter.v1beta.DatabaseResource.toObject(message.rootResources[j], options);
+                            }
+                            if (message.signalGroups && message.signalGroups.length) {
+                                object.signalGroups = [];
+                                for (var j = 0; j < message.signalGroups.length; ++j)
+                                    object.signalGroups[j] = $root.google.cloud.databasecenter.v1beta.IssueCount.toObject(message.signalGroups[j], options);
+                            }
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this DatabaseResourceGroup to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResourceGroup
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        DatabaseResourceGroup.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for DatabaseResourceGroup
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResourceGroup
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        DatabaseResourceGroup.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.DatabaseResourceGroup";
+                        };
+    
+                        return DatabaseResourceGroup;
+                    })();
+    
+                    v1beta.DatabaseResource = (function() {
+    
+                        /**
+                         * Properties of a DatabaseResource.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IDatabaseResource
+                         * @property {Array.<google.cloud.databasecenter.v1beta.IDatabaseResource>|null} [childResources] DatabaseResource childResources
+                         * @property {string|null} [fullResourceName] DatabaseResource fullResourceName
+                         * @property {string|null} [container] DatabaseResource container
+                         * @property {google.cloud.databasecenter.v1beta.IProduct|null} [product] DatabaseResource product
+                         * @property {string|null} [location] DatabaseResource location
+                         * @property {Array.<google.cloud.databasecenter.v1beta.ILabel>|null} [labels] DatabaseResource labels
+                         * @property {Array.<google.cloud.databasecenter.v1beta.ITag>|null} [tags] DatabaseResource tags
+                         * @property {string|null} [resourceType] DatabaseResource resourceType
+                         * @property {google.cloud.databasecenter.v1beta.SubResourceType|null} [subResourceType] DatabaseResource subResourceType
+                         * @property {google.cloud.databasecenter.v1beta.IMachineConfig|null} [machineConfig] DatabaseResource machineConfig
+                         * @property {Array.<google.cloud.databasecenter.v1beta.ISignalGroup>|null} [signalGroups] DatabaseResource signalGroups
+                         * @property {google.cloud.databasecenter.v1beta.IMetrics|null} [metrics] DatabaseResource metrics
+                         * @property {google.cloud.databasecenter.v1beta.ResourceCategory|null} [resourceCategory] DatabaseResource resourceCategory
+                         * @property {string|null} [resourceName] DatabaseResource resourceName
+                         * @property {google.cloud.databasecenter.v1beta.IBackupDRConfig|null} [backupdrConfig] DatabaseResource backupdrConfig
+                         * @property {google.cloud.databasecenter.v1beta.Edition|null} [edition] DatabaseResource edition
+                         * @property {google.cloud.databasecenter.v1beta.IMaintenanceInfo|null} [maintenanceInfo] DatabaseResource maintenanceInfo
+                         * @property {Array.<google.cloud.databasecenter.v1beta.IAffiliation>|null} [affiliations] DatabaseResource affiliations
+                         */
+    
+                        /**
+                         * Constructs a new DatabaseResource.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a DatabaseResource.
+                         * @implements IDatabaseResource
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IDatabaseResource=} [properties] Properties to set
+                         */
+                        function DatabaseResource(properties) {
+                            this.childResources = [];
+                            this.labels = [];
+                            this.tags = [];
+                            this.signalGroups = [];
+                            this.affiliations = [];
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * DatabaseResource childResources.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.IDatabaseResource>} childResources
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @instance
+                         */
+                        DatabaseResource.prototype.childResources = $util.emptyArray;
+    
+                        /**
+                         * DatabaseResource fullResourceName.
+                         * @member {string} fullResourceName
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @instance
+                         */
+                        DatabaseResource.prototype.fullResourceName = "";
+    
+                        /**
+                         * DatabaseResource container.
+                         * @member {string} container
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @instance
+                         */
+                        DatabaseResource.prototype.container = "";
+    
+                        /**
+                         * DatabaseResource product.
+                         * @member {google.cloud.databasecenter.v1beta.IProduct|null|undefined} product
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @instance
+                         */
+                        DatabaseResource.prototype.product = null;
+    
+                        /**
+                         * DatabaseResource location.
+                         * @member {string} location
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @instance
+                         */
+                        DatabaseResource.prototype.location = "";
+    
+                        /**
+                         * DatabaseResource labels.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.ILabel>} labels
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @instance
+                         */
+                        DatabaseResource.prototype.labels = $util.emptyArray;
+    
+                        /**
+                         * DatabaseResource tags.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.ITag>} tags
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @instance
+                         */
+                        DatabaseResource.prototype.tags = $util.emptyArray;
+    
+                        /**
+                         * DatabaseResource resourceType.
+                         * @member {string} resourceType
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @instance
+                         */
+                        DatabaseResource.prototype.resourceType = "";
+    
+                        /**
+                         * DatabaseResource subResourceType.
+                         * @member {google.cloud.databasecenter.v1beta.SubResourceType} subResourceType
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @instance
+                         */
+                        DatabaseResource.prototype.subResourceType = 0;
+    
+                        /**
+                         * DatabaseResource machineConfig.
+                         * @member {google.cloud.databasecenter.v1beta.IMachineConfig|null|undefined} machineConfig
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @instance
+                         */
+                        DatabaseResource.prototype.machineConfig = null;
+    
+                        /**
+                         * DatabaseResource signalGroups.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.ISignalGroup>} signalGroups
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @instance
+                         */
+                        DatabaseResource.prototype.signalGroups = $util.emptyArray;
+    
+                        /**
+                         * DatabaseResource metrics.
+                         * @member {google.cloud.databasecenter.v1beta.IMetrics|null|undefined} metrics
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @instance
+                         */
+                        DatabaseResource.prototype.metrics = null;
+    
+                        /**
+                         * DatabaseResource resourceCategory.
+                         * @member {google.cloud.databasecenter.v1beta.ResourceCategory} resourceCategory
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @instance
+                         */
+                        DatabaseResource.prototype.resourceCategory = 0;
+    
+                        /**
+                         * DatabaseResource resourceName.
+                         * @member {string} resourceName
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @instance
+                         */
+                        DatabaseResource.prototype.resourceName = "";
+    
+                        /**
+                         * DatabaseResource backupdrConfig.
+                         * @member {google.cloud.databasecenter.v1beta.IBackupDRConfig|null|undefined} backupdrConfig
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @instance
+                         */
+                        DatabaseResource.prototype.backupdrConfig = null;
+    
+                        /**
+                         * DatabaseResource edition.
+                         * @member {google.cloud.databasecenter.v1beta.Edition} edition
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @instance
+                         */
+                        DatabaseResource.prototype.edition = 0;
+    
+                        /**
+                         * DatabaseResource maintenanceInfo.
+                         * @member {google.cloud.databasecenter.v1beta.IMaintenanceInfo|null|undefined} maintenanceInfo
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @instance
+                         */
+                        DatabaseResource.prototype.maintenanceInfo = null;
+    
+                        /**
+                         * DatabaseResource affiliations.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.IAffiliation>} affiliations
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @instance
+                         */
+                        DatabaseResource.prototype.affiliations = $util.emptyArray;
+    
+                        /**
+                         * Creates a new DatabaseResource instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IDatabaseResource=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.DatabaseResource} DatabaseResource instance
+                         */
+                        DatabaseResource.create = function create(properties) {
+                            return new DatabaseResource(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified DatabaseResource message. Does not implicitly {@link google.cloud.databasecenter.v1beta.DatabaseResource.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IDatabaseResource} message DatabaseResource message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        DatabaseResource.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.childResources != null && message.childResources.length)
+                                for (var i = 0; i < message.childResources.length; ++i)
+                                    $root.google.cloud.databasecenter.v1beta.DatabaseResource.encode(message.childResources[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                            if (message.fullResourceName != null && Object.hasOwnProperty.call(message, "fullResourceName"))
+                                writer.uint32(/* id 3, wireType 2 =*/26).string(message.fullResourceName);
+                            if (message.container != null && Object.hasOwnProperty.call(message, "container"))
+                                writer.uint32(/* id 4, wireType 2 =*/34).string(message.container);
+                            if (message.product != null && Object.hasOwnProperty.call(message, "product"))
+                                $root.google.cloud.databasecenter.v1beta.Product.encode(message.product, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
+                            if (message.location != null && Object.hasOwnProperty.call(message, "location"))
+                                writer.uint32(/* id 6, wireType 2 =*/50).string(message.location);
+                            if (message.labels != null && message.labels.length)
+                                for (var i = 0; i < message.labels.length; ++i)
+                                    $root.google.cloud.databasecenter.v1beta.Label.encode(message.labels[i], writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();
+                            if (message.resourceType != null && Object.hasOwnProperty.call(message, "resourceType"))
+                                writer.uint32(/* id 8, wireType 2 =*/66).string(message.resourceType);
+                            if (message.subResourceType != null && Object.hasOwnProperty.call(message, "subResourceType"))
+                                writer.uint32(/* id 9, wireType 0 =*/72).int32(message.subResourceType);
+                            if (message.signalGroups != null && message.signalGroups.length)
+                                for (var i = 0; i < message.signalGroups.length; ++i)
+                                    $root.google.cloud.databasecenter.v1beta.SignalGroup.encode(message.signalGroups[i], writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();
+                            if (message.machineConfig != null && Object.hasOwnProperty.call(message, "machineConfig"))
+                                $root.google.cloud.databasecenter.v1beta.MachineConfig.encode(message.machineConfig, writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim();
+                            if (message.metrics != null && Object.hasOwnProperty.call(message, "metrics"))
+                                $root.google.cloud.databasecenter.v1beta.Metrics.encode(message.metrics, writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim();
+                            if (message.resourceCategory != null && Object.hasOwnProperty.call(message, "resourceCategory"))
+                                writer.uint32(/* id 14, wireType 0 =*/112).int32(message.resourceCategory);
+                            if (message.resourceName != null && Object.hasOwnProperty.call(message, "resourceName"))
+                                writer.uint32(/* id 15, wireType 2 =*/122).string(message.resourceName);
+                            if (message.tags != null && message.tags.length)
+                                for (var i = 0; i < message.tags.length; ++i)
+                                    $root.google.cloud.databasecenter.v1beta.Tag.encode(message.tags[i], writer.uint32(/* id 16, wireType 2 =*/130).fork()).ldelim();
+                            if (message.backupdrConfig != null && Object.hasOwnProperty.call(message, "backupdrConfig"))
+                                $root.google.cloud.databasecenter.v1beta.BackupDRConfig.encode(message.backupdrConfig, writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim();
+                            if (message.edition != null && Object.hasOwnProperty.call(message, "edition"))
+                                writer.uint32(/* id 18, wireType 0 =*/144).int32(message.edition);
+                            if (message.maintenanceInfo != null && Object.hasOwnProperty.call(message, "maintenanceInfo"))
+                                $root.google.cloud.databasecenter.v1beta.MaintenanceInfo.encode(message.maintenanceInfo, writer.uint32(/* id 19, wireType 2 =*/154).fork()).ldelim();
+                            if (message.affiliations != null && message.affiliations.length)
+                                for (var i = 0; i < message.affiliations.length; ++i)
+                                    $root.google.cloud.databasecenter.v1beta.Affiliation.encode(message.affiliations[i], writer.uint32(/* id 20, wireType 2 =*/162).fork()).ldelim();
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified DatabaseResource message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.DatabaseResource.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IDatabaseResource} message DatabaseResource message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        DatabaseResource.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a DatabaseResource message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.DatabaseResource} DatabaseResource
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        DatabaseResource.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.DatabaseResource();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        if (!(message.childResources && message.childResources.length))
+                                            message.childResources = [];
+                                        message.childResources.push($root.google.cloud.databasecenter.v1beta.DatabaseResource.decode(reader, reader.uint32()));
+                                        break;
+                                    }
+                                case 3: {
+                                        message.fullResourceName = reader.string();
+                                        break;
+                                    }
+                                case 4: {
+                                        message.container = reader.string();
+                                        break;
+                                    }
+                                case 5: {
+                                        message.product = $root.google.cloud.databasecenter.v1beta.Product.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 6: {
+                                        message.location = reader.string();
+                                        break;
+                                    }
+                                case 7: {
+                                        if (!(message.labels && message.labels.length))
+                                            message.labels = [];
+                                        message.labels.push($root.google.cloud.databasecenter.v1beta.Label.decode(reader, reader.uint32()));
+                                        break;
+                                    }
+                                case 16: {
+                                        if (!(message.tags && message.tags.length))
+                                            message.tags = [];
+                                        message.tags.push($root.google.cloud.databasecenter.v1beta.Tag.decode(reader, reader.uint32()));
+                                        break;
+                                    }
+                                case 8: {
+                                        message.resourceType = reader.string();
+                                        break;
+                                    }
+                                case 9: {
+                                        message.subResourceType = reader.int32();
+                                        break;
+                                    }
+                                case 12: {
+                                        message.machineConfig = $root.google.cloud.databasecenter.v1beta.MachineConfig.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 10: {
+                                        if (!(message.signalGroups && message.signalGroups.length))
+                                            message.signalGroups = [];
+                                        message.signalGroups.push($root.google.cloud.databasecenter.v1beta.SignalGroup.decode(reader, reader.uint32()));
+                                        break;
+                                    }
+                                case 13: {
+                                        message.metrics = $root.google.cloud.databasecenter.v1beta.Metrics.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 14: {
+                                        message.resourceCategory = reader.int32();
+                                        break;
+                                    }
+                                case 15: {
+                                        message.resourceName = reader.string();
+                                        break;
+                                    }
+                                case 17: {
+                                        message.backupdrConfig = $root.google.cloud.databasecenter.v1beta.BackupDRConfig.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 18: {
+                                        message.edition = reader.int32();
+                                        break;
+                                    }
+                                case 19: {
+                                        message.maintenanceInfo = $root.google.cloud.databasecenter.v1beta.MaintenanceInfo.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 20: {
+                                        if (!(message.affiliations && message.affiliations.length))
+                                            message.affiliations = [];
+                                        message.affiliations.push($root.google.cloud.databasecenter.v1beta.Affiliation.decode(reader, reader.uint32()));
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a DatabaseResource message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.DatabaseResource} DatabaseResource
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        DatabaseResource.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a DatabaseResource message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        DatabaseResource.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.childResources != null && message.hasOwnProperty("childResources")) {
+                                if (!Array.isArray(message.childResources))
+                                    return "childResources: array expected";
+                                for (var i = 0; i < message.childResources.length; ++i) {
+                                    var error = $root.google.cloud.databasecenter.v1beta.DatabaseResource.verify(message.childResources[i]);
+                                    if (error)
+                                        return "childResources." + error;
+                                }
+                            }
+                            if (message.fullResourceName != null && message.hasOwnProperty("fullResourceName"))
+                                if (!$util.isString(message.fullResourceName))
+                                    return "fullResourceName: string expected";
+                            if (message.container != null && message.hasOwnProperty("container"))
+                                if (!$util.isString(message.container))
+                                    return "container: string expected";
+                            if (message.product != null && message.hasOwnProperty("product")) {
+                                var error = $root.google.cloud.databasecenter.v1beta.Product.verify(message.product);
+                                if (error)
+                                    return "product." + error;
+                            }
+                            if (message.location != null && message.hasOwnProperty("location"))
+                                if (!$util.isString(message.location))
+                                    return "location: string expected";
+                            if (message.labels != null && message.hasOwnProperty("labels")) {
+                                if (!Array.isArray(message.labels))
+                                    return "labels: array expected";
+                                for (var i = 0; i < message.labels.length; ++i) {
+                                    var error = $root.google.cloud.databasecenter.v1beta.Label.verify(message.labels[i]);
+                                    if (error)
+                                        return "labels." + error;
+                                }
+                            }
+                            if (message.tags != null && message.hasOwnProperty("tags")) {
+                                if (!Array.isArray(message.tags))
+                                    return "tags: array expected";
+                                for (var i = 0; i < message.tags.length; ++i) {
+                                    var error = $root.google.cloud.databasecenter.v1beta.Tag.verify(message.tags[i]);
+                                    if (error)
+                                        return "tags." + error;
+                                }
+                            }
+                            if (message.resourceType != null && message.hasOwnProperty("resourceType"))
+                                if (!$util.isString(message.resourceType))
+                                    return "resourceType: string expected";
+                            if (message.subResourceType != null && message.hasOwnProperty("subResourceType"))
+                                switch (message.subResourceType) {
+                                default:
+                                    return "subResourceType: enum value expected";
+                                case 0:
+                                case 1:
+                                case 2:
+                                case 3:
+                                case 5:
+                                case 6:
+                                case 7:
+                                case 8:
+                                case 4:
+                                    break;
+                                }
+                            if (message.machineConfig != null && message.hasOwnProperty("machineConfig")) {
+                                var error = $root.google.cloud.databasecenter.v1beta.MachineConfig.verify(message.machineConfig);
+                                if (error)
+                                    return "machineConfig." + error;
+                            }
+                            if (message.signalGroups != null && message.hasOwnProperty("signalGroups")) {
+                                if (!Array.isArray(message.signalGroups))
+                                    return "signalGroups: array expected";
+                                for (var i = 0; i < message.signalGroups.length; ++i) {
+                                    var error = $root.google.cloud.databasecenter.v1beta.SignalGroup.verify(message.signalGroups[i]);
+                                    if (error)
+                                        return "signalGroups." + error;
+                                }
+                            }
+                            if (message.metrics != null && message.hasOwnProperty("metrics")) {
+                                var error = $root.google.cloud.databasecenter.v1beta.Metrics.verify(message.metrics);
+                                if (error)
+                                    return "metrics." + error;
+                            }
+                            if (message.resourceCategory != null && message.hasOwnProperty("resourceCategory"))
+                                switch (message.resourceCategory) {
+                                default:
+                                    return "resourceCategory: enum value expected";
+                                case 0:
+                                case 1:
+                                case 2:
+                                case 3:
+                                case 4:
+                                case 5:
+                                    break;
+                                }
+                            if (message.resourceName != null && message.hasOwnProperty("resourceName"))
+                                if (!$util.isString(message.resourceName))
+                                    return "resourceName: string expected";
+                            if (message.backupdrConfig != null && message.hasOwnProperty("backupdrConfig")) {
+                                var error = $root.google.cloud.databasecenter.v1beta.BackupDRConfig.verify(message.backupdrConfig);
+                                if (error)
+                                    return "backupdrConfig." + error;
+                            }
+                            if (message.edition != null && message.hasOwnProperty("edition"))
+                                switch (message.edition) {
+                                default:
+                                    return "edition: enum value expected";
+                                case 0:
+                                case 1:
+                                case 2:
+                                case 3:
+                                    break;
+                                }
+                            if (message.maintenanceInfo != null && message.hasOwnProperty("maintenanceInfo")) {
+                                var error = $root.google.cloud.databasecenter.v1beta.MaintenanceInfo.verify(message.maintenanceInfo);
+                                if (error)
+                                    return "maintenanceInfo." + error;
+                            }
+                            if (message.affiliations != null && message.hasOwnProperty("affiliations")) {
+                                if (!Array.isArray(message.affiliations))
+                                    return "affiliations: array expected";
+                                for (var i = 0; i < message.affiliations.length; ++i) {
+                                    var error = $root.google.cloud.databasecenter.v1beta.Affiliation.verify(message.affiliations[i]);
+                                    if (error)
+                                        return "affiliations." + error;
+                                }
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a DatabaseResource message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.DatabaseResource} DatabaseResource
+                         */
+                        DatabaseResource.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.DatabaseResource)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.DatabaseResource();
+                            if (object.childResources) {
+                                if (!Array.isArray(object.childResources))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.DatabaseResource.childResources: array expected");
+                                message.childResources = [];
+                                for (var i = 0; i < object.childResources.length; ++i) {
+                                    if (typeof object.childResources[i] !== "object")
+                                        throw TypeError(".google.cloud.databasecenter.v1beta.DatabaseResource.childResources: object expected");
+                                    message.childResources[i] = $root.google.cloud.databasecenter.v1beta.DatabaseResource.fromObject(object.childResources[i]);
+                                }
+                            }
+                            if (object.fullResourceName != null)
+                                message.fullResourceName = String(object.fullResourceName);
+                            if (object.container != null)
+                                message.container = String(object.container);
+                            if (object.product != null) {
+                                if (typeof object.product !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.DatabaseResource.product: object expected");
+                                message.product = $root.google.cloud.databasecenter.v1beta.Product.fromObject(object.product);
+                            }
+                            if (object.location != null)
+                                message.location = String(object.location);
+                            if (object.labels) {
+                                if (!Array.isArray(object.labels))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.DatabaseResource.labels: array expected");
+                                message.labels = [];
+                                for (var i = 0; i < object.labels.length; ++i) {
+                                    if (typeof object.labels[i] !== "object")
+                                        throw TypeError(".google.cloud.databasecenter.v1beta.DatabaseResource.labels: object expected");
+                                    message.labels[i] = $root.google.cloud.databasecenter.v1beta.Label.fromObject(object.labels[i]);
+                                }
+                            }
+                            if (object.tags) {
+                                if (!Array.isArray(object.tags))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.DatabaseResource.tags: array expected");
+                                message.tags = [];
+                                for (var i = 0; i < object.tags.length; ++i) {
+                                    if (typeof object.tags[i] !== "object")
+                                        throw TypeError(".google.cloud.databasecenter.v1beta.DatabaseResource.tags: object expected");
+                                    message.tags[i] = $root.google.cloud.databasecenter.v1beta.Tag.fromObject(object.tags[i]);
+                                }
+                            }
+                            if (object.resourceType != null)
+                                message.resourceType = String(object.resourceType);
+                            switch (object.subResourceType) {
+                            default:
+                                if (typeof object.subResourceType === "number") {
+                                    message.subResourceType = object.subResourceType;
+                                    break;
+                                }
+                                break;
+                            case "SUB_RESOURCE_TYPE_UNSPECIFIED":
+                            case 0:
+                                message.subResourceType = 0;
+                                break;
+                            case "SUB_RESOURCE_TYPE_PRIMARY":
+                            case 1:
+                                message.subResourceType = 1;
+                                break;
+                            case "SUB_RESOURCE_TYPE_SECONDARY":
+                            case 2:
+                                message.subResourceType = 2;
+                                break;
+                            case "SUB_RESOURCE_TYPE_READ_REPLICA":
+                            case 3:
+                                message.subResourceType = 3;
+                                break;
+                            case "SUB_RESOURCE_TYPE_EXTERNAL_PRIMARY":
+                            case 5:
+                                message.subResourceType = 5;
+                                break;
+                            case "SUB_RESOURCE_TYPE_READ_POOL":
+                            case 6:
+                                message.subResourceType = 6;
+                                break;
+                            case "SUB_RESOURCE_TYPE_RESERVATION":
+                            case 7:
+                                message.subResourceType = 7;
+                                break;
+                            case "SUB_RESOURCE_TYPE_DATASET":
+                            case 8:
+                                message.subResourceType = 8;
+                                break;
+                            case "SUB_RESOURCE_TYPE_OTHER":
+                            case 4:
+                                message.subResourceType = 4;
+                                break;
+                            }
+                            if (object.machineConfig != null) {
+                                if (typeof object.machineConfig !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.DatabaseResource.machineConfig: object expected");
+                                message.machineConfig = $root.google.cloud.databasecenter.v1beta.MachineConfig.fromObject(object.machineConfig);
+                            }
+                            if (object.signalGroups) {
+                                if (!Array.isArray(object.signalGroups))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.DatabaseResource.signalGroups: array expected");
+                                message.signalGroups = [];
+                                for (var i = 0; i < object.signalGroups.length; ++i) {
+                                    if (typeof object.signalGroups[i] !== "object")
+                                        throw TypeError(".google.cloud.databasecenter.v1beta.DatabaseResource.signalGroups: object expected");
+                                    message.signalGroups[i] = $root.google.cloud.databasecenter.v1beta.SignalGroup.fromObject(object.signalGroups[i]);
+                                }
+                            }
+                            if (object.metrics != null) {
+                                if (typeof object.metrics !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.DatabaseResource.metrics: object expected");
+                                message.metrics = $root.google.cloud.databasecenter.v1beta.Metrics.fromObject(object.metrics);
+                            }
+                            switch (object.resourceCategory) {
+                            default:
+                                if (typeof object.resourceCategory === "number") {
+                                    message.resourceCategory = object.resourceCategory;
+                                    break;
+                                }
+                                break;
+                            case "RESOURCE_CATEGORY_UNSPECIFIED":
+                            case 0:
+                                message.resourceCategory = 0;
+                                break;
+                            case "INSTANCE":
+                            case 1:
+                                message.resourceCategory = 1;
+                                break;
+                            case "CLUSTER":
+                            case 2:
+                                message.resourceCategory = 2;
+                                break;
+                            case "DATABASE":
+                            case 3:
+                                message.resourceCategory = 3;
+                                break;
+                            case "DATASET":
+                            case 4:
+                                message.resourceCategory = 4;
+                                break;
+                            case "RESERVATION":
+                            case 5:
+                                message.resourceCategory = 5;
+                                break;
+                            }
+                            if (object.resourceName != null)
+                                message.resourceName = String(object.resourceName);
+                            if (object.backupdrConfig != null) {
+                                if (typeof object.backupdrConfig !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.DatabaseResource.backupdrConfig: object expected");
+                                message.backupdrConfig = $root.google.cloud.databasecenter.v1beta.BackupDRConfig.fromObject(object.backupdrConfig);
+                            }
+                            switch (object.edition) {
+                            default:
+                                if (typeof object.edition === "number") {
+                                    message.edition = object.edition;
+                                    break;
+                                }
+                                break;
+                            case "EDITION_UNSPECIFIED":
+                            case 0:
+                                message.edition = 0;
+                                break;
+                            case "EDITION_ENTERPRISE":
+                            case 1:
+                                message.edition = 1;
+                                break;
+                            case "EDITION_ENTERPRISE_PLUS":
+                            case 2:
+                                message.edition = 2;
+                                break;
+                            case "EDITION_STANDARD":
+                            case 3:
+                                message.edition = 3;
+                                break;
+                            }
+                            if (object.maintenanceInfo != null) {
+                                if (typeof object.maintenanceInfo !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.DatabaseResource.maintenanceInfo: object expected");
+                                message.maintenanceInfo = $root.google.cloud.databasecenter.v1beta.MaintenanceInfo.fromObject(object.maintenanceInfo);
+                            }
+                            if (object.affiliations) {
+                                if (!Array.isArray(object.affiliations))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.DatabaseResource.affiliations: array expected");
+                                message.affiliations = [];
+                                for (var i = 0; i < object.affiliations.length; ++i) {
+                                    if (typeof object.affiliations[i] !== "object")
+                                        throw TypeError(".google.cloud.databasecenter.v1beta.DatabaseResource.affiliations: object expected");
+                                    message.affiliations[i] = $root.google.cloud.databasecenter.v1beta.Affiliation.fromObject(object.affiliations[i]);
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a DatabaseResource message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.DatabaseResource} message DatabaseResource
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        DatabaseResource.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.arrays || options.defaults) {
+                                object.childResources = [];
+                                object.labels = [];
+                                object.signalGroups = [];
+                                object.tags = [];
+                                object.affiliations = [];
+                            }
+                            if (options.defaults) {
+                                object.fullResourceName = "";
+                                object.container = "";
+                                object.product = null;
+                                object.location = "";
+                                object.resourceType = "";
+                                object.subResourceType = options.enums === String ? "SUB_RESOURCE_TYPE_UNSPECIFIED" : 0;
+                                object.machineConfig = null;
+                                object.metrics = null;
+                                object.resourceCategory = options.enums === String ? "RESOURCE_CATEGORY_UNSPECIFIED" : 0;
+                                object.resourceName = "";
+                                object.backupdrConfig = null;
+                                object.edition = options.enums === String ? "EDITION_UNSPECIFIED" : 0;
+                                object.maintenanceInfo = null;
+                            }
+                            if (message.childResources && message.childResources.length) {
+                                object.childResources = [];
+                                for (var j = 0; j < message.childResources.length; ++j)
+                                    object.childResources[j] = $root.google.cloud.databasecenter.v1beta.DatabaseResource.toObject(message.childResources[j], options);
+                            }
+                            if (message.fullResourceName != null && message.hasOwnProperty("fullResourceName"))
+                                object.fullResourceName = message.fullResourceName;
+                            if (message.container != null && message.hasOwnProperty("container"))
+                                object.container = message.container;
+                            if (message.product != null && message.hasOwnProperty("product"))
+                                object.product = $root.google.cloud.databasecenter.v1beta.Product.toObject(message.product, options);
+                            if (message.location != null && message.hasOwnProperty("location"))
+                                object.location = message.location;
+                            if (message.labels && message.labels.length) {
+                                object.labels = [];
+                                for (var j = 0; j < message.labels.length; ++j)
+                                    object.labels[j] = $root.google.cloud.databasecenter.v1beta.Label.toObject(message.labels[j], options);
+                            }
+                            if (message.resourceType != null && message.hasOwnProperty("resourceType"))
+                                object.resourceType = message.resourceType;
+                            if (message.subResourceType != null && message.hasOwnProperty("subResourceType"))
+                                object.subResourceType = options.enums === String ? $root.google.cloud.databasecenter.v1beta.SubResourceType[message.subResourceType] === undefined ? message.subResourceType : $root.google.cloud.databasecenter.v1beta.SubResourceType[message.subResourceType] : message.subResourceType;
+                            if (message.signalGroups && message.signalGroups.length) {
+                                object.signalGroups = [];
+                                for (var j = 0; j < message.signalGroups.length; ++j)
+                                    object.signalGroups[j] = $root.google.cloud.databasecenter.v1beta.SignalGroup.toObject(message.signalGroups[j], options);
+                            }
+                            if (message.machineConfig != null && message.hasOwnProperty("machineConfig"))
+                                object.machineConfig = $root.google.cloud.databasecenter.v1beta.MachineConfig.toObject(message.machineConfig, options);
+                            if (message.metrics != null && message.hasOwnProperty("metrics"))
+                                object.metrics = $root.google.cloud.databasecenter.v1beta.Metrics.toObject(message.metrics, options);
+                            if (message.resourceCategory != null && message.hasOwnProperty("resourceCategory"))
+                                object.resourceCategory = options.enums === String ? $root.google.cloud.databasecenter.v1beta.ResourceCategory[message.resourceCategory] === undefined ? message.resourceCategory : $root.google.cloud.databasecenter.v1beta.ResourceCategory[message.resourceCategory] : message.resourceCategory;
+                            if (message.resourceName != null && message.hasOwnProperty("resourceName"))
+                                object.resourceName = message.resourceName;
+                            if (message.tags && message.tags.length) {
+                                object.tags = [];
+                                for (var j = 0; j < message.tags.length; ++j)
+                                    object.tags[j] = $root.google.cloud.databasecenter.v1beta.Tag.toObject(message.tags[j], options);
+                            }
+                            if (message.backupdrConfig != null && message.hasOwnProperty("backupdrConfig"))
+                                object.backupdrConfig = $root.google.cloud.databasecenter.v1beta.BackupDRConfig.toObject(message.backupdrConfig, options);
+                            if (message.edition != null && message.hasOwnProperty("edition"))
+                                object.edition = options.enums === String ? $root.google.cloud.databasecenter.v1beta.Edition[message.edition] === undefined ? message.edition : $root.google.cloud.databasecenter.v1beta.Edition[message.edition] : message.edition;
+                            if (message.maintenanceInfo != null && message.hasOwnProperty("maintenanceInfo"))
+                                object.maintenanceInfo = $root.google.cloud.databasecenter.v1beta.MaintenanceInfo.toObject(message.maintenanceInfo, options);
+                            if (message.affiliations && message.affiliations.length) {
+                                object.affiliations = [];
+                                for (var j = 0; j < message.affiliations.length; ++j)
+                                    object.affiliations[j] = $root.google.cloud.databasecenter.v1beta.Affiliation.toObject(message.affiliations[j], options);
+                            }
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this DatabaseResource to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        DatabaseResource.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for DatabaseResource
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResource
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        DatabaseResource.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.DatabaseResource";
+                        };
+    
+                        return DatabaseResource;
+                    })();
+    
+                    v1beta.AggregateIssueStatsRequest = (function() {
+    
+                        /**
+                         * Properties of an AggregateIssueStatsRequest.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IAggregateIssueStatsRequest
+                         * @property {string|null} [parent] AggregateIssueStatsRequest parent
+                         * @property {string|null} [filter] AggregateIssueStatsRequest filter
+                         * @property {Array.<google.cloud.databasecenter.v1beta.ISignalTypeGroup>|null} [signalTypeGroups] AggregateIssueStatsRequest signalTypeGroups
+                         * @property {google.type.IDate|null} [baselineDate] AggregateIssueStatsRequest baselineDate
+                         */
+    
+                        /**
+                         * Constructs a new AggregateIssueStatsRequest.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents an AggregateIssueStatsRequest.
+                         * @implements IAggregateIssueStatsRequest
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IAggregateIssueStatsRequest=} [properties] Properties to set
+                         */
+                        function AggregateIssueStatsRequest(properties) {
+                            this.signalTypeGroups = [];
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * AggregateIssueStatsRequest parent.
+                         * @member {string} parent
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest
+                         * @instance
+                         */
+                        AggregateIssueStatsRequest.prototype.parent = "";
+    
+                        /**
+                         * AggregateIssueStatsRequest filter.
+                         * @member {string} filter
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest
+                         * @instance
+                         */
+                        AggregateIssueStatsRequest.prototype.filter = "";
+    
+                        /**
+                         * AggregateIssueStatsRequest signalTypeGroups.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.ISignalTypeGroup>} signalTypeGroups
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest
+                         * @instance
+                         */
+                        AggregateIssueStatsRequest.prototype.signalTypeGroups = $util.emptyArray;
+    
+                        /**
+                         * AggregateIssueStatsRequest baselineDate.
+                         * @member {google.type.IDate|null|undefined} baselineDate
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest
+                         * @instance
+                         */
+                        AggregateIssueStatsRequest.prototype.baselineDate = null;
+    
+                        // OneOf field names bound to virtual getters and setters
+                        var $oneOfFields;
+    
+                        // Virtual OneOf for proto3 optional field
+                        Object.defineProperty(AggregateIssueStatsRequest.prototype, "_baselineDate", {
+                            get: $util.oneOfGetter($oneOfFields = ["baselineDate"]),
+                            set: $util.oneOfSetter($oneOfFields)
+                        });
+    
+                        /**
+                         * Creates a new AggregateIssueStatsRequest instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IAggregateIssueStatsRequest=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest} AggregateIssueStatsRequest instance
+                         */
+                        AggregateIssueStatsRequest.create = function create(properties) {
+                            return new AggregateIssueStatsRequest(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified AggregateIssueStatsRequest message. Does not implicitly {@link google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IAggregateIssueStatsRequest} message AggregateIssueStatsRequest message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        AggregateIssueStatsRequest.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.parent != null && Object.hasOwnProperty.call(message, "parent"))
+                                writer.uint32(/* id 1, wireType 2 =*/10).string(message.parent);
+                            if (message.filter != null && Object.hasOwnProperty.call(message, "filter"))
+                                writer.uint32(/* id 2, wireType 2 =*/18).string(message.filter);
+                            if (message.signalTypeGroups != null && message.signalTypeGroups.length)
+                                for (var i = 0; i < message.signalTypeGroups.length; ++i)
+                                    $root.google.cloud.databasecenter.v1beta.SignalTypeGroup.encode(message.signalTypeGroups[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+                            if (message.baselineDate != null && Object.hasOwnProperty.call(message, "baselineDate"))
+                                $root.google.type.Date.encode(message.baselineDate, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified AggregateIssueStatsRequest message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IAggregateIssueStatsRequest} message AggregateIssueStatsRequest message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        AggregateIssueStatsRequest.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes an AggregateIssueStatsRequest message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest} AggregateIssueStatsRequest
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        AggregateIssueStatsRequest.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.parent = reader.string();
+                                        break;
+                                    }
+                                case 2: {
+                                        message.filter = reader.string();
+                                        break;
+                                    }
+                                case 3: {
+                                        if (!(message.signalTypeGroups && message.signalTypeGroups.length))
+                                            message.signalTypeGroups = [];
+                                        message.signalTypeGroups.push($root.google.cloud.databasecenter.v1beta.SignalTypeGroup.decode(reader, reader.uint32()));
+                                        break;
+                                    }
+                                case 4: {
+                                        message.baselineDate = $root.google.type.Date.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes an AggregateIssueStatsRequest message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest} AggregateIssueStatsRequest
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        AggregateIssueStatsRequest.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies an AggregateIssueStatsRequest message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        AggregateIssueStatsRequest.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            var properties = {};
+                            if (message.parent != null && message.hasOwnProperty("parent"))
+                                if (!$util.isString(message.parent))
+                                    return "parent: string expected";
+                            if (message.filter != null && message.hasOwnProperty("filter"))
+                                if (!$util.isString(message.filter))
+                                    return "filter: string expected";
+                            if (message.signalTypeGroups != null && message.hasOwnProperty("signalTypeGroups")) {
+                                if (!Array.isArray(message.signalTypeGroups))
+                                    return "signalTypeGroups: array expected";
+                                for (var i = 0; i < message.signalTypeGroups.length; ++i) {
+                                    var error = $root.google.cloud.databasecenter.v1beta.SignalTypeGroup.verify(message.signalTypeGroups[i]);
+                                    if (error)
+                                        return "signalTypeGroups." + error;
+                                }
+                            }
+                            if (message.baselineDate != null && message.hasOwnProperty("baselineDate")) {
+                                properties._baselineDate = 1;
+                                {
+                                    var error = $root.google.type.Date.verify(message.baselineDate);
+                                    if (error)
+                                        return "baselineDate." + error;
+                                }
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates an AggregateIssueStatsRequest message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest} AggregateIssueStatsRequest
+                         */
+                        AggregateIssueStatsRequest.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest();
+                            if (object.parent != null)
+                                message.parent = String(object.parent);
+                            if (object.filter != null)
+                                message.filter = String(object.filter);
+                            if (object.signalTypeGroups) {
+                                if (!Array.isArray(object.signalTypeGroups))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest.signalTypeGroups: array expected");
+                                message.signalTypeGroups = [];
+                                for (var i = 0; i < object.signalTypeGroups.length; ++i) {
+                                    if (typeof object.signalTypeGroups[i] !== "object")
+                                        throw TypeError(".google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest.signalTypeGroups: object expected");
+                                    message.signalTypeGroups[i] = $root.google.cloud.databasecenter.v1beta.SignalTypeGroup.fromObject(object.signalTypeGroups[i]);
+                                }
+                            }
+                            if (object.baselineDate != null) {
+                                if (typeof object.baselineDate !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest.baselineDate: object expected");
+                                message.baselineDate = $root.google.type.Date.fromObject(object.baselineDate);
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from an AggregateIssueStatsRequest message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest} message AggregateIssueStatsRequest
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        AggregateIssueStatsRequest.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.arrays || options.defaults)
+                                object.signalTypeGroups = [];
+                            if (options.defaults) {
+                                object.parent = "";
+                                object.filter = "";
+                            }
+                            if (message.parent != null && message.hasOwnProperty("parent"))
+                                object.parent = message.parent;
+                            if (message.filter != null && message.hasOwnProperty("filter"))
+                                object.filter = message.filter;
+                            if (message.signalTypeGroups && message.signalTypeGroups.length) {
+                                object.signalTypeGroups = [];
+                                for (var j = 0; j < message.signalTypeGroups.length; ++j)
+                                    object.signalTypeGroups[j] = $root.google.cloud.databasecenter.v1beta.SignalTypeGroup.toObject(message.signalTypeGroups[j], options);
+                            }
+                            if (message.baselineDate != null && message.hasOwnProperty("baselineDate")) {
+                                object.baselineDate = $root.google.type.Date.toObject(message.baselineDate, options);
+                                if (options.oneofs)
+                                    object._baselineDate = "baselineDate";
+                            }
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this AggregateIssueStatsRequest to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        AggregateIssueStatsRequest.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for AggregateIssueStatsRequest
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        AggregateIssueStatsRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest";
+                        };
+    
+                        return AggregateIssueStatsRequest;
+                    })();
+    
+                    v1beta.AggregateIssueStatsResponse = (function() {
+    
+                        /**
+                         * Properties of an AggregateIssueStatsResponse.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IAggregateIssueStatsResponse
+                         * @property {Array.<google.cloud.databasecenter.v1beta.IIssueGroupStats>|null} [issueGroupStats] AggregateIssueStatsResponse issueGroupStats
+                         * @property {number|null} [totalResourcesCount] AggregateIssueStatsResponse totalResourcesCount
+                         * @property {number|null} [totalResourceGroupsCount] AggregateIssueStatsResponse totalResourceGroupsCount
+                         * @property {Array.<string>|null} [unreachable] AggregateIssueStatsResponse unreachable
+                         */
+    
+                        /**
+                         * Constructs a new AggregateIssueStatsResponse.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents an AggregateIssueStatsResponse.
+                         * @implements IAggregateIssueStatsResponse
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IAggregateIssueStatsResponse=} [properties] Properties to set
+                         */
+                        function AggregateIssueStatsResponse(properties) {
+                            this.issueGroupStats = [];
+                            this.unreachable = [];
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * AggregateIssueStatsResponse issueGroupStats.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.IIssueGroupStats>} issueGroupStats
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse
+                         * @instance
+                         */
+                        AggregateIssueStatsResponse.prototype.issueGroupStats = $util.emptyArray;
+    
+                        /**
+                         * AggregateIssueStatsResponse totalResourcesCount.
+                         * @member {number} totalResourcesCount
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse
+                         * @instance
+                         */
+                        AggregateIssueStatsResponse.prototype.totalResourcesCount = 0;
+    
+                        /**
+                         * AggregateIssueStatsResponse totalResourceGroupsCount.
+                         * @member {number} totalResourceGroupsCount
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse
+                         * @instance
+                         */
+                        AggregateIssueStatsResponse.prototype.totalResourceGroupsCount = 0;
+    
+                        /**
+                         * AggregateIssueStatsResponse unreachable.
+                         * @member {Array.<string>} unreachable
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse
+                         * @instance
+                         */
+                        AggregateIssueStatsResponse.prototype.unreachable = $util.emptyArray;
+    
+                        /**
+                         * Creates a new AggregateIssueStatsResponse instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IAggregateIssueStatsResponse=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse} AggregateIssueStatsResponse instance
+                         */
+                        AggregateIssueStatsResponse.create = function create(properties) {
+                            return new AggregateIssueStatsResponse(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified AggregateIssueStatsResponse message. Does not implicitly {@link google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IAggregateIssueStatsResponse} message AggregateIssueStatsResponse message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        AggregateIssueStatsResponse.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.issueGroupStats != null && message.issueGroupStats.length)
+                                for (var i = 0; i < message.issueGroupStats.length; ++i)
+                                    $root.google.cloud.databasecenter.v1beta.IssueGroupStats.encode(message.issueGroupStats[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                            if (message.totalResourcesCount != null && Object.hasOwnProperty.call(message, "totalResourcesCount"))
+                                writer.uint32(/* id 2, wireType 0 =*/16).int32(message.totalResourcesCount);
+                            if (message.totalResourceGroupsCount != null && Object.hasOwnProperty.call(message, "totalResourceGroupsCount"))
+                                writer.uint32(/* id 3, wireType 0 =*/24).int32(message.totalResourceGroupsCount);
+                            if (message.unreachable != null && message.unreachable.length)
+                                for (var i = 0; i < message.unreachable.length; ++i)
+                                    writer.uint32(/* id 4, wireType 2 =*/34).string(message.unreachable[i]);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified AggregateIssueStatsResponse message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IAggregateIssueStatsResponse} message AggregateIssueStatsResponse message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        AggregateIssueStatsResponse.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes an AggregateIssueStatsResponse message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse} AggregateIssueStatsResponse
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        AggregateIssueStatsResponse.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        if (!(message.issueGroupStats && message.issueGroupStats.length))
+                                            message.issueGroupStats = [];
+                                        message.issueGroupStats.push($root.google.cloud.databasecenter.v1beta.IssueGroupStats.decode(reader, reader.uint32()));
+                                        break;
+                                    }
+                                case 2: {
+                                        message.totalResourcesCount = reader.int32();
+                                        break;
+                                    }
+                                case 3: {
+                                        message.totalResourceGroupsCount = reader.int32();
+                                        break;
+                                    }
+                                case 4: {
+                                        if (!(message.unreachable && message.unreachable.length))
+                                            message.unreachable = [];
+                                        message.unreachable.push(reader.string());
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes an AggregateIssueStatsResponse message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse} AggregateIssueStatsResponse
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        AggregateIssueStatsResponse.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies an AggregateIssueStatsResponse message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        AggregateIssueStatsResponse.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.issueGroupStats != null && message.hasOwnProperty("issueGroupStats")) {
+                                if (!Array.isArray(message.issueGroupStats))
+                                    return "issueGroupStats: array expected";
+                                for (var i = 0; i < message.issueGroupStats.length; ++i) {
+                                    var error = $root.google.cloud.databasecenter.v1beta.IssueGroupStats.verify(message.issueGroupStats[i]);
+                                    if (error)
+                                        return "issueGroupStats." + error;
+                                }
+                            }
+                            if (message.totalResourcesCount != null && message.hasOwnProperty("totalResourcesCount"))
+                                if (!$util.isInteger(message.totalResourcesCount))
+                                    return "totalResourcesCount: integer expected";
+                            if (message.totalResourceGroupsCount != null && message.hasOwnProperty("totalResourceGroupsCount"))
+                                if (!$util.isInteger(message.totalResourceGroupsCount))
+                                    return "totalResourceGroupsCount: integer expected";
+                            if (message.unreachable != null && message.hasOwnProperty("unreachable")) {
+                                if (!Array.isArray(message.unreachable))
+                                    return "unreachable: array expected";
+                                for (var i = 0; i < message.unreachable.length; ++i)
+                                    if (!$util.isString(message.unreachable[i]))
+                                        return "unreachable: string[] expected";
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates an AggregateIssueStatsResponse message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse} AggregateIssueStatsResponse
+                         */
+                        AggregateIssueStatsResponse.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse();
+                            if (object.issueGroupStats) {
+                                if (!Array.isArray(object.issueGroupStats))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse.issueGroupStats: array expected");
+                                message.issueGroupStats = [];
+                                for (var i = 0; i < object.issueGroupStats.length; ++i) {
+                                    if (typeof object.issueGroupStats[i] !== "object")
+                                        throw TypeError(".google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse.issueGroupStats: object expected");
+                                    message.issueGroupStats[i] = $root.google.cloud.databasecenter.v1beta.IssueGroupStats.fromObject(object.issueGroupStats[i]);
+                                }
+                            }
+                            if (object.totalResourcesCount != null)
+                                message.totalResourcesCount = object.totalResourcesCount | 0;
+                            if (object.totalResourceGroupsCount != null)
+                                message.totalResourceGroupsCount = object.totalResourceGroupsCount | 0;
+                            if (object.unreachable) {
+                                if (!Array.isArray(object.unreachable))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse.unreachable: array expected");
+                                message.unreachable = [];
+                                for (var i = 0; i < object.unreachable.length; ++i)
+                                    message.unreachable[i] = String(object.unreachable[i]);
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from an AggregateIssueStatsResponse message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse} message AggregateIssueStatsResponse
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        AggregateIssueStatsResponse.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.arrays || options.defaults) {
+                                object.issueGroupStats = [];
+                                object.unreachable = [];
+                            }
+                            if (options.defaults) {
+                                object.totalResourcesCount = 0;
+                                object.totalResourceGroupsCount = 0;
+                            }
+                            if (message.issueGroupStats && message.issueGroupStats.length) {
+                                object.issueGroupStats = [];
+                                for (var j = 0; j < message.issueGroupStats.length; ++j)
+                                    object.issueGroupStats[j] = $root.google.cloud.databasecenter.v1beta.IssueGroupStats.toObject(message.issueGroupStats[j], options);
+                            }
+                            if (message.totalResourcesCount != null && message.hasOwnProperty("totalResourcesCount"))
+                                object.totalResourcesCount = message.totalResourcesCount;
+                            if (message.totalResourceGroupsCount != null && message.hasOwnProperty("totalResourceGroupsCount"))
+                                object.totalResourceGroupsCount = message.totalResourceGroupsCount;
+                            if (message.unreachable && message.unreachable.length) {
+                                object.unreachable = [];
+                                for (var j = 0; j < message.unreachable.length; ++j)
+                                    object.unreachable[j] = message.unreachable[j];
+                            }
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this AggregateIssueStatsResponse to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        AggregateIssueStatsResponse.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for AggregateIssueStatsResponse
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        AggregateIssueStatsResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse";
+                        };
+    
+                        return AggregateIssueStatsResponse;
+                    })();
+    
+                    v1beta.IssueGroupStats = (function() {
+    
+                        /**
+                         * Properties of an IssueGroupStats.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IIssueGroupStats
+                         * @property {string|null} [displayName] IssueGroupStats displayName
+                         * @property {number|null} [resourceGroupsCount] IssueGroupStats resourceGroupsCount
+                         * @property {number|null} [resourcesCount] IssueGroupStats resourcesCount
+                         * @property {number|null} [healthyResourceGroupsCount] IssueGroupStats healthyResourceGroupsCount
+                         * @property {number|null} [healthyResourcesCount] IssueGroupStats healthyResourcesCount
+                         * @property {Array.<google.cloud.databasecenter.v1beta.IIssueStats>|null} [issueStats] IssueGroupStats issueStats
+                         */
+    
+                        /**
+                         * Constructs a new IssueGroupStats.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents an IssueGroupStats.
+                         * @implements IIssueGroupStats
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IIssueGroupStats=} [properties] Properties to set
+                         */
+                        function IssueGroupStats(properties) {
+                            this.issueStats = [];
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * IssueGroupStats displayName.
+                         * @member {string} displayName
+                         * @memberof google.cloud.databasecenter.v1beta.IssueGroupStats
+                         * @instance
+                         */
+                        IssueGroupStats.prototype.displayName = "";
+    
+                        /**
+                         * IssueGroupStats resourceGroupsCount.
+                         * @member {number} resourceGroupsCount
+                         * @memberof google.cloud.databasecenter.v1beta.IssueGroupStats
+                         * @instance
+                         */
+                        IssueGroupStats.prototype.resourceGroupsCount = 0;
+    
+                        /**
+                         * IssueGroupStats resourcesCount.
+                         * @member {number} resourcesCount
+                         * @memberof google.cloud.databasecenter.v1beta.IssueGroupStats
+                         * @instance
+                         */
+                        IssueGroupStats.prototype.resourcesCount = 0;
+    
+                        /**
+                         * IssueGroupStats healthyResourceGroupsCount.
+                         * @member {number} healthyResourceGroupsCount
+                         * @memberof google.cloud.databasecenter.v1beta.IssueGroupStats
+                         * @instance
+                         */
+                        IssueGroupStats.prototype.healthyResourceGroupsCount = 0;
+    
+                        /**
+                         * IssueGroupStats healthyResourcesCount.
+                         * @member {number} healthyResourcesCount
+                         * @memberof google.cloud.databasecenter.v1beta.IssueGroupStats
+                         * @instance
+                         */
+                        IssueGroupStats.prototype.healthyResourcesCount = 0;
+    
+                        /**
+                         * IssueGroupStats issueStats.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.IIssueStats>} issueStats
+                         * @memberof google.cloud.databasecenter.v1beta.IssueGroupStats
+                         * @instance
+                         */
+                        IssueGroupStats.prototype.issueStats = $util.emptyArray;
+    
+                        /**
+                         * Creates a new IssueGroupStats instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.IssueGroupStats
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IIssueGroupStats=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.IssueGroupStats} IssueGroupStats instance
+                         */
+                        IssueGroupStats.create = function create(properties) {
+                            return new IssueGroupStats(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified IssueGroupStats message. Does not implicitly {@link google.cloud.databasecenter.v1beta.IssueGroupStats.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.IssueGroupStats
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IIssueGroupStats} message IssueGroupStats message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        IssueGroupStats.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.displayName != null && Object.hasOwnProperty.call(message, "displayName"))
+                                writer.uint32(/* id 1, wireType 2 =*/10).string(message.displayName);
+                            if (message.resourceGroupsCount != null && Object.hasOwnProperty.call(message, "resourceGroupsCount"))
+                                writer.uint32(/* id 2, wireType 0 =*/16).int32(message.resourceGroupsCount);
+                            if (message.resourcesCount != null && Object.hasOwnProperty.call(message, "resourcesCount"))
+                                writer.uint32(/* id 3, wireType 0 =*/24).int32(message.resourcesCount);
+                            if (message.healthyResourceGroupsCount != null && Object.hasOwnProperty.call(message, "healthyResourceGroupsCount"))
+                                writer.uint32(/* id 4, wireType 0 =*/32).int32(message.healthyResourceGroupsCount);
+                            if (message.healthyResourcesCount != null && Object.hasOwnProperty.call(message, "healthyResourcesCount"))
+                                writer.uint32(/* id 5, wireType 0 =*/40).int32(message.healthyResourcesCount);
+                            if (message.issueStats != null && message.issueStats.length)
+                                for (var i = 0; i < message.issueStats.length; ++i)
+                                    $root.google.cloud.databasecenter.v1beta.IssueStats.encode(message.issueStats[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified IssueGroupStats message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.IssueGroupStats.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.IssueGroupStats
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IIssueGroupStats} message IssueGroupStats message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        IssueGroupStats.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes an IssueGroupStats message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.IssueGroupStats
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.IssueGroupStats} IssueGroupStats
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        IssueGroupStats.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.IssueGroupStats();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.displayName = reader.string();
+                                        break;
+                                    }
+                                case 2: {
+                                        message.resourceGroupsCount = reader.int32();
+                                        break;
+                                    }
+                                case 3: {
+                                        message.resourcesCount = reader.int32();
+                                        break;
+                                    }
+                                case 4: {
+                                        message.healthyResourceGroupsCount = reader.int32();
+                                        break;
+                                    }
+                                case 5: {
+                                        message.healthyResourcesCount = reader.int32();
+                                        break;
+                                    }
+                                case 6: {
+                                        if (!(message.issueStats && message.issueStats.length))
+                                            message.issueStats = [];
+                                        message.issueStats.push($root.google.cloud.databasecenter.v1beta.IssueStats.decode(reader, reader.uint32()));
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes an IssueGroupStats message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.IssueGroupStats
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.IssueGroupStats} IssueGroupStats
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        IssueGroupStats.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies an IssueGroupStats message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.IssueGroupStats
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        IssueGroupStats.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.displayName != null && message.hasOwnProperty("displayName"))
+                                if (!$util.isString(message.displayName))
+                                    return "displayName: string expected";
+                            if (message.resourceGroupsCount != null && message.hasOwnProperty("resourceGroupsCount"))
+                                if (!$util.isInteger(message.resourceGroupsCount))
+                                    return "resourceGroupsCount: integer expected";
+                            if (message.resourcesCount != null && message.hasOwnProperty("resourcesCount"))
+                                if (!$util.isInteger(message.resourcesCount))
+                                    return "resourcesCount: integer expected";
+                            if (message.healthyResourceGroupsCount != null && message.hasOwnProperty("healthyResourceGroupsCount"))
+                                if (!$util.isInteger(message.healthyResourceGroupsCount))
+                                    return "healthyResourceGroupsCount: integer expected";
+                            if (message.healthyResourcesCount != null && message.hasOwnProperty("healthyResourcesCount"))
+                                if (!$util.isInteger(message.healthyResourcesCount))
+                                    return "healthyResourcesCount: integer expected";
+                            if (message.issueStats != null && message.hasOwnProperty("issueStats")) {
+                                if (!Array.isArray(message.issueStats))
+                                    return "issueStats: array expected";
+                                for (var i = 0; i < message.issueStats.length; ++i) {
+                                    var error = $root.google.cloud.databasecenter.v1beta.IssueStats.verify(message.issueStats[i]);
+                                    if (error)
+                                        return "issueStats." + error;
+                                }
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates an IssueGroupStats message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.IssueGroupStats
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.IssueGroupStats} IssueGroupStats
+                         */
+                        IssueGroupStats.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.IssueGroupStats)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.IssueGroupStats();
+                            if (object.displayName != null)
+                                message.displayName = String(object.displayName);
+                            if (object.resourceGroupsCount != null)
+                                message.resourceGroupsCount = object.resourceGroupsCount | 0;
+                            if (object.resourcesCount != null)
+                                message.resourcesCount = object.resourcesCount | 0;
+                            if (object.healthyResourceGroupsCount != null)
+                                message.healthyResourceGroupsCount = object.healthyResourceGroupsCount | 0;
+                            if (object.healthyResourcesCount != null)
+                                message.healthyResourcesCount = object.healthyResourcesCount | 0;
+                            if (object.issueStats) {
+                                if (!Array.isArray(object.issueStats))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.IssueGroupStats.issueStats: array expected");
+                                message.issueStats = [];
+                                for (var i = 0; i < object.issueStats.length; ++i) {
+                                    if (typeof object.issueStats[i] !== "object")
+                                        throw TypeError(".google.cloud.databasecenter.v1beta.IssueGroupStats.issueStats: object expected");
+                                    message.issueStats[i] = $root.google.cloud.databasecenter.v1beta.IssueStats.fromObject(object.issueStats[i]);
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from an IssueGroupStats message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.IssueGroupStats
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IssueGroupStats} message IssueGroupStats
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        IssueGroupStats.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.arrays || options.defaults)
+                                object.issueStats = [];
+                            if (options.defaults) {
+                                object.displayName = "";
+                                object.resourceGroupsCount = 0;
+                                object.resourcesCount = 0;
+                                object.healthyResourceGroupsCount = 0;
+                                object.healthyResourcesCount = 0;
+                            }
+                            if (message.displayName != null && message.hasOwnProperty("displayName"))
+                                object.displayName = message.displayName;
+                            if (message.resourceGroupsCount != null && message.hasOwnProperty("resourceGroupsCount"))
+                                object.resourceGroupsCount = message.resourceGroupsCount;
+                            if (message.resourcesCount != null && message.hasOwnProperty("resourcesCount"))
+                                object.resourcesCount = message.resourcesCount;
+                            if (message.healthyResourceGroupsCount != null && message.hasOwnProperty("healthyResourceGroupsCount"))
+                                object.healthyResourceGroupsCount = message.healthyResourceGroupsCount;
+                            if (message.healthyResourcesCount != null && message.hasOwnProperty("healthyResourcesCount"))
+                                object.healthyResourcesCount = message.healthyResourcesCount;
+                            if (message.issueStats && message.issueStats.length) {
+                                object.issueStats = [];
+                                for (var j = 0; j < message.issueStats.length; ++j)
+                                    object.issueStats[j] = $root.google.cloud.databasecenter.v1beta.IssueStats.toObject(message.issueStats[j], options);
+                            }
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this IssueGroupStats to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.IssueGroupStats
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        IssueGroupStats.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for IssueGroupStats
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.IssueGroupStats
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        IssueGroupStats.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.IssueGroupStats";
+                        };
+    
+                        return IssueGroupStats;
+                    })();
+    
+                    v1beta.IssueStats = (function() {
+    
+                        /**
+                         * Properties of an IssueStats.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IIssueStats
+                         * @property {google.cloud.databasecenter.v1beta.SignalType|null} [signalType] IssueStats signalType
+                         * @property {number|null} [resourceCount] IssueStats resourceCount
+                         * @property {google.cloud.databasecenter.v1beta.IDeltaDetails|null} [deltaDetails] IssueStats deltaDetails
+                         * @property {google.cloud.databasecenter.v1beta.IssueSeverity|null} [issueSeverity] IssueStats issueSeverity
+                         */
+    
+                        /**
+                         * Constructs a new IssueStats.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents an IssueStats.
+                         * @implements IIssueStats
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IIssueStats=} [properties] Properties to set
+                         */
+                        function IssueStats(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * IssueStats signalType.
+                         * @member {google.cloud.databasecenter.v1beta.SignalType} signalType
+                         * @memberof google.cloud.databasecenter.v1beta.IssueStats
+                         * @instance
+                         */
+                        IssueStats.prototype.signalType = 0;
+    
+                        /**
+                         * IssueStats resourceCount.
+                         * @member {number} resourceCount
+                         * @memberof google.cloud.databasecenter.v1beta.IssueStats
+                         * @instance
+                         */
+                        IssueStats.prototype.resourceCount = 0;
+    
+                        /**
+                         * IssueStats deltaDetails.
+                         * @member {google.cloud.databasecenter.v1beta.IDeltaDetails|null|undefined} deltaDetails
+                         * @memberof google.cloud.databasecenter.v1beta.IssueStats
+                         * @instance
+                         */
+                        IssueStats.prototype.deltaDetails = null;
+    
+                        /**
+                         * IssueStats issueSeverity.
+                         * @member {google.cloud.databasecenter.v1beta.IssueSeverity|null|undefined} issueSeverity
+                         * @memberof google.cloud.databasecenter.v1beta.IssueStats
+                         * @instance
+                         */
+                        IssueStats.prototype.issueSeverity = null;
+    
+                        // OneOf field names bound to virtual getters and setters
+                        var $oneOfFields;
+    
+                        // Virtual OneOf for proto3 optional field
+                        Object.defineProperty(IssueStats.prototype, "_deltaDetails", {
+                            get: $util.oneOfGetter($oneOfFields = ["deltaDetails"]),
+                            set: $util.oneOfSetter($oneOfFields)
+                        });
+    
+                        // Virtual OneOf for proto3 optional field
+                        Object.defineProperty(IssueStats.prototype, "_issueSeverity", {
+                            get: $util.oneOfGetter($oneOfFields = ["issueSeverity"]),
+                            set: $util.oneOfSetter($oneOfFields)
+                        });
+    
+                        /**
+                         * Creates a new IssueStats instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.IssueStats
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IIssueStats=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.IssueStats} IssueStats instance
+                         */
+                        IssueStats.create = function create(properties) {
+                            return new IssueStats(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified IssueStats message. Does not implicitly {@link google.cloud.databasecenter.v1beta.IssueStats.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.IssueStats
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IIssueStats} message IssueStats message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        IssueStats.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.signalType != null && Object.hasOwnProperty.call(message, "signalType"))
+                                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.signalType);
+                            if (message.resourceCount != null && Object.hasOwnProperty.call(message, "resourceCount"))
+                                writer.uint32(/* id 2, wireType 0 =*/16).int32(message.resourceCount);
+                            if (message.deltaDetails != null && Object.hasOwnProperty.call(message, "deltaDetails"))
+                                $root.google.cloud.databasecenter.v1beta.DeltaDetails.encode(message.deltaDetails, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+                            if (message.issueSeverity != null && Object.hasOwnProperty.call(message, "issueSeverity"))
+                                writer.uint32(/* id 4, wireType 0 =*/32).int32(message.issueSeverity);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified IssueStats message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.IssueStats.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.IssueStats
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IIssueStats} message IssueStats message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        IssueStats.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes an IssueStats message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.IssueStats
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.IssueStats} IssueStats
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        IssueStats.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.IssueStats();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.signalType = reader.int32();
+                                        break;
+                                    }
+                                case 2: {
+                                        message.resourceCount = reader.int32();
+                                        break;
+                                    }
+                                case 3: {
+                                        message.deltaDetails = $root.google.cloud.databasecenter.v1beta.DeltaDetails.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 4: {
+                                        message.issueSeverity = reader.int32();
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes an IssueStats message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.IssueStats
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.IssueStats} IssueStats
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        IssueStats.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies an IssueStats message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.IssueStats
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        IssueStats.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            var properties = {};
+                            if (message.signalType != null && message.hasOwnProperty("signalType"))
+                                switch (message.signalType) {
+                                default:
+                                    return "signalType: enum value expected";
+                                case 0:
+                                case 1:
+                                case 2:
+                                case 4:
+                                case 5:
+                                case 6:
+                                case 7:
+                                case 8:
+                                case 9:
+                                case 10:
+                                case 11:
+                                case 12:
+                                case 76:
+                                case 13:
+                                case 69:
+                                case 72:
+                                case 14:
+                                case 70:
+                                case 15:
+                                case 71:
+                                case 73:
+                                case 74:
+                                case 75:
+                                case 16:
+                                case 17:
+                                case 18:
+                                case 19:
+                                case 20:
+                                case 21:
+                                case 22:
+                                case 23:
+                                case 24:
+                                case 25:
+                                case 26:
+                                case 27:
+                                case 28:
+                                case 29:
+                                case 30:
+                                case 31:
+                                case 32:
+                                case 33:
+                                case 34:
+                                case 35:
+                                case 36:
+                                case 37:
+                                case 39:
+                                case 40:
+                                case 41:
+                                case 42:
+                                case 43:
+                                case 44:
+                                case 45:
+                                case 46:
+                                case 47:
+                                case 48:
+                                case 49:
+                                case 50:
+                                case 51:
+                                case 52:
+                                case 53:
+                                case 54:
+                                case 55:
+                                case 56:
+                                case 57:
+                                case 58:
+                                case 59:
+                                case 60:
+                                case 61:
+                                case 62:
+                                case 63:
+                                case 64:
+                                case 65:
+                                case 66:
+                                case 67:
+                                case 68:
+                                case 77:
+                                case 78:
+                                case 79:
+                                case 80:
+                                case 81:
+                                case 82:
+                                case 83:
+                                case 84:
+                                case 85:
+                                case 86:
+                                case 87:
+                                case 88:
+                                case 89:
+                                case 90:
+                                case 91:
+                                case 92:
+                                case 93:
+                                case 94:
+                                case 95:
+                                case 97:
+                                case 99:
+                                case 100:
+                                case 101:
+                                case 102:
+                                case 104:
+                                    break;
+                                }
+                            if (message.resourceCount != null && message.hasOwnProperty("resourceCount"))
+                                if (!$util.isInteger(message.resourceCount))
+                                    return "resourceCount: integer expected";
+                            if (message.deltaDetails != null && message.hasOwnProperty("deltaDetails")) {
+                                properties._deltaDetails = 1;
+                                {
+                                    var error = $root.google.cloud.databasecenter.v1beta.DeltaDetails.verify(message.deltaDetails);
+                                    if (error)
+                                        return "deltaDetails." + error;
+                                }
+                            }
+                            if (message.issueSeverity != null && message.hasOwnProperty("issueSeverity")) {
+                                properties._issueSeverity = 1;
+                                switch (message.issueSeverity) {
+                                default:
+                                    return "issueSeverity: enum value expected";
+                                case 0:
+                                case 1:
+                                case 2:
+                                case 3:
+                                case 4:
+                                case 5:
+                                    break;
+                                }
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates an IssueStats message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.IssueStats
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.IssueStats} IssueStats
+                         */
+                        IssueStats.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.IssueStats)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.IssueStats();
+                            switch (object.signalType) {
+                            default:
+                                if (typeof object.signalType === "number") {
+                                    message.signalType = object.signalType;
+                                    break;
+                                }
+                                break;
+                            case "SIGNAL_TYPE_UNSPECIFIED":
+                            case 0:
+                                message.signalType = 0;
+                                break;
+                            case "SIGNAL_TYPE_RESOURCE_FAILOVER_PROTECTED":
+                            case 1:
+                                message.signalType = 1;
+                                break;
+                            case "SIGNAL_TYPE_GROUP_MULTIREGIONAL":
+                            case 2:
+                                message.signalType = 2;
+                                break;
+                            case "SIGNAL_TYPE_NO_AUTOMATED_BACKUP_POLICY":
+                            case 4:
+                                message.signalType = 4;
+                                break;
+                            case "SIGNAL_TYPE_SHORT_BACKUP_RETENTION":
+                            case 5:
+                                message.signalType = 5;
+                                break;
+                            case "SIGNAL_TYPE_LAST_BACKUP_FAILED":
+                            case 6:
+                                message.signalType = 6;
+                                break;
+                            case "SIGNAL_TYPE_LAST_BACKUP_OLD":
+                            case 7:
+                                message.signalType = 7;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_2_0":
+                            case 8:
+                                message.signalType = 8;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_3":
+                            case 9:
+                                message.signalType = 9;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_2":
+                            case 10:
+                                message.signalType = 10;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_1":
+                            case 11:
+                                message.signalType = 11;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_0":
+                            case 12:
+                                message.signalType = 12;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_CONTROLS_V8_0":
+                            case 76:
+                                message.signalType = 76;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_NIST_800_53":
+                            case 13:
+                                message.signalType = 13;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_NIST_800_53_R5":
+                            case 69:
+                                message.signalType = 69;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_NIST_CYBERSECURITY_FRAMEWORK_V1_0":
+                            case 72:
+                                message.signalType = 72;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_ISO_27001":
+                            case 14:
+                                message.signalType = 14;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_ISO_27001_V2022":
+                            case 70:
+                                message.signalType = 70;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_PCI_DSS_V3_2_1":
+                            case 15:
+                                message.signalType = 15;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_PCI_DSS_V4_0":
+                            case 71:
+                                message.signalType = 71;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CLOUD_CONTROLS_MATRIX_V4":
+                            case 73:
+                                message.signalType = 73;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_HIPAA":
+                            case 74:
+                                message.signalType = 74;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_SOC2_V2017":
+                            case 75:
+                                message.signalType = 75;
+                                break;
+                            case "SIGNAL_TYPE_LOGS_NOT_OPTIMIZED_FOR_TROUBLESHOOTING":
+                            case 16:
+                                message.signalType = 16;
+                                break;
+                            case "SIGNAL_TYPE_QUERY_DURATIONS_NOT_LOGGED":
+                            case 17:
+                                message.signalType = 17;
+                                break;
+                            case "SIGNAL_TYPE_VERBOSE_ERROR_LOGGING":
+                            case 18:
+                                message.signalType = 18;
+                                break;
+                            case "SIGNAL_TYPE_QUERY_LOCK_WAITS_NOT_LOGGED":
+                            case 19:
+                                message.signalType = 19;
+                                break;
+                            case "SIGNAL_TYPE_LOGGING_MOST_ERRORS":
+                            case 20:
+                                message.signalType = 20;
+                                break;
+                            case "SIGNAL_TYPE_LOGGING_ONLY_CRITICAL_ERRORS":
+                            case 21:
+                                message.signalType = 21;
+                                break;
+                            case "SIGNAL_TYPE_MINIMAL_ERROR_LOGGING":
+                            case 22:
+                                message.signalType = 22;
+                                break;
+                            case "SIGNAL_TYPE_QUERY_STATS_LOGGED":
+                            case 23:
+                                message.signalType = 23;
+                                break;
+                            case "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_CLIENT_HOSTNAME":
+                            case 24:
+                                message.signalType = 24;
+                                break;
+                            case "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PARSER_STATS":
+                            case 25:
+                                message.signalType = 25;
+                                break;
+                            case "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PLANNER_STATS":
+                            case 26:
+                                message.signalType = 26;
+                                break;
+                            case "SIGNAL_TYPE_NOT_LOGGING_ONLY_DDL_STATEMENTS":
+                            case 27:
+                                message.signalType = 27;
+                                break;
+                            case "SIGNAL_TYPE_LOGGING_QUERY_STATS":
+                            case 28:
+                                message.signalType = 28;
+                                break;
+                            case "SIGNAL_TYPE_NOT_LOGGING_TEMPORARY_FILES":
+                            case 29:
+                                message.signalType = 29;
+                                break;
+                            case "SIGNAL_TYPE_CONNECTION_MAX_NOT_CONFIGURED":
+                            case 30:
+                                message.signalType = 30;
+                                break;
+                            case "SIGNAL_TYPE_USER_OPTIONS_CONFIGURED":
+                            case 31:
+                                message.signalType = 31;
+                                break;
+                            case "SIGNAL_TYPE_EXPOSED_TO_PUBLIC_ACCESS":
+                            case 32:
+                                message.signalType = 32;
+                                break;
+                            case "SIGNAL_TYPE_UNENCRYPTED_CONNECTIONS":
+                            case 33:
+                                message.signalType = 33;
+                                break;
+                            case "SIGNAL_TYPE_NO_ROOT_PASSWORD":
+                            case 34:
+                                message.signalType = 34;
+                                break;
+                            case "SIGNAL_TYPE_WEAK_ROOT_PASSWORD":
+                            case 35:
+                                message.signalType = 35;
+                                break;
+                            case "SIGNAL_TYPE_ENCRYPTION_KEY_NOT_CUSTOMER_MANAGED":
+                            case 36:
+                                message.signalType = 36;
+                                break;
+                            case "SIGNAL_TYPE_SERVER_AUTHENTICATION_NOT_REQUIRED":
+                            case 37:
+                                message.signalType = 37;
+                                break;
+                            case "SIGNAL_TYPE_EXPOSED_TO_EXTERNAL_SCRIPTS":
+                            case 39:
+                                message.signalType = 39;
+                                break;
+                            case "SIGNAL_TYPE_EXPOSED_TO_LOCAL_DATA_LOADS":
+                            case 40:
+                                message.signalType = 40;
+                                break;
+                            case "SIGNAL_TYPE_CONNECTION_ATTEMPTS_NOT_LOGGED":
+                            case 41:
+                                message.signalType = 41;
+                                break;
+                            case "SIGNAL_TYPE_DISCONNECTIONS_NOT_LOGGED":
+                            case 42:
+                                message.signalType = 42;
+                                break;
+                            case "SIGNAL_TYPE_LOGGING_EXCESSIVE_STATEMENT_INFO":
+                            case 43:
+                                message.signalType = 43;
+                                break;
+                            case "SIGNAL_TYPE_EXPOSED_TO_REMOTE_ACCESS":
+                            case 44:
+                                message.signalType = 44;
+                                break;
+                            case "SIGNAL_TYPE_DATABASE_NAMES_EXPOSED":
+                            case 45:
+                                message.signalType = 45;
+                                break;
+                            case "SIGNAL_TYPE_SENSITIVE_TRACE_INFO_NOT_MASKED":
+                            case 46:
+                                message.signalType = 46;
+                                break;
+                            case "SIGNAL_TYPE_PUBLIC_IP_ENABLED":
+                            case 47:
+                                message.signalType = 47;
+                                break;
+                            case "SIGNAL_TYPE_IDLE":
+                            case 48:
+                                message.signalType = 48;
+                                break;
+                            case "SIGNAL_TYPE_OVERPROVISIONED":
+                            case 49:
+                                message.signalType = 49;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_NUMBER_OF_OPEN_TABLES":
+                            case 50:
+                                message.signalType = 50;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_NUMBER_OF_TABLES":
+                            case 51:
+                                message.signalType = 51;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_TRANSACTION_ID_UTILIZATION":
+                            case 52:
+                                message.signalType = 52;
+                                break;
+                            case "SIGNAL_TYPE_UNDERPROVISIONED":
+                            case 53:
+                                message.signalType = 53;
+                                break;
+                            case "SIGNAL_TYPE_OUT_OF_DISK":
+                            case 54:
+                                message.signalType = 54;
+                                break;
+                            case "SIGNAL_TYPE_SERVER_CERTIFICATE_NEAR_EXPIRY":
+                            case 55:
+                                message.signalType = 55;
+                                break;
+                            case "SIGNAL_TYPE_DATABASE_AUDITING_DISABLED":
+                            case 56:
+                                message.signalType = 56;
+                                break;
+                            case "SIGNAL_TYPE_RESTRICT_AUTHORIZED_NETWORKS":
+                            case 57:
+                                message.signalType = 57;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATE_POLICY_RESTRICT_PUBLIC_IP":
+                            case 58:
+                                message.signalType = 58;
+                                break;
+                            case "SIGNAL_TYPE_QUOTA_LIMIT":
+                            case 59:
+                                message.signalType = 59;
+                                break;
+                            case "SIGNAL_TYPE_NO_PASSWORD_POLICY":
+                            case 60:
+                                message.signalType = 60;
+                                break;
+                            case "SIGNAL_TYPE_CONNECTIONS_PERFORMANCE_IMPACT":
+                            case 61:
+                                message.signalType = 61;
+                                break;
+                            case "SIGNAL_TYPE_TMP_TABLES_PERFORMANCE_IMPACT":
+                            case 62:
+                                message.signalType = 62;
+                                break;
+                            case "SIGNAL_TYPE_TRANS_LOGS_PERFORMANCE_IMPACT":
+                            case 63:
+                                message.signalType = 63;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_JOINS_WITHOUT_INDEXES":
+                            case 64:
+                                message.signalType = 64;
+                                break;
+                            case "SIGNAL_TYPE_SUPERUSER_WRITING_TO_USER_TABLES":
+                            case 65:
+                                message.signalType = 65;
+                                break;
+                            case "SIGNAL_TYPE_USER_GRANTED_ALL_PERMISSIONS":
+                            case 66:
+                                message.signalType = 66;
+                                break;
+                            case "SIGNAL_TYPE_DATA_EXPORT_TO_EXTERNAL_CLOUD_STORAGE_BUCKET":
+                            case 67:
+                                message.signalType = 67;
+                                break;
+                            case "SIGNAL_TYPE_DATA_EXPORT_TO_PUBLIC_CLOUD_STORAGE_BUCKET":
+                            case 68:
+                                message.signalType = 68;
+                                break;
+                            case "SIGNAL_TYPE_WEAK_PASSWORD_HASH_ALGORITHM":
+                            case 77:
+                                message.signalType = 77;
+                                break;
+                            case "SIGNAL_TYPE_NO_USER_PASSWORD_POLICY":
+                            case 78:
+                                message.signalType = 78;
+                                break;
+                            case "SIGNAL_TYPE_HOT_NODE":
+                            case 79:
+                                message.signalType = 79;
+                                break;
+                            case "SIGNAL_TYPE_NO_DELETION_PROTECTION":
+                            case 80:
+                                message.signalType = 80;
+                                break;
+                            case "SIGNAL_TYPE_NO_POINT_IN_TIME_RECOVERY":
+                            case 81:
+                                message.signalType = 81;
+                                break;
+                            case "SIGNAL_TYPE_RESOURCE_SUSPENDED":
+                            case 82:
+                                message.signalType = 82;
+                                break;
+                            case "SIGNAL_TYPE_EXPENSIVE_COMMANDS":
+                            case 83:
+                                message.signalType = 83;
+                                break;
+                            case "SIGNAL_TYPE_NO_MAINTENANCE_POLICY_CONFIGURED":
+                            case 84:
+                                message.signalType = 84;
+                                break;
+                            case "SIGNAL_TYPE_INEFFICIENT_QUERY":
+                            case 85:
+                                message.signalType = 85;
+                                break;
+                            case "SIGNAL_TYPE_READ_INTENSIVE_WORKLOAD":
+                            case 86:
+                                message.signalType = 86;
+                                break;
+                            case "SIGNAL_TYPE_MEMORY_LIMIT":
+                            case 87:
+                                message.signalType = 87;
+                                break;
+                            case "SIGNAL_TYPE_MAX_SERVER_MEMORY":
+                            case 88:
+                                message.signalType = 88;
+                                break;
+                            case "SIGNAL_TYPE_LARGE_ROWS":
+                            case 89:
+                                message.signalType = 89;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_WRITE_PRESSURE":
+                            case 90:
+                                message.signalType = 90;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_READ_PRESSURE":
+                            case 91:
+                                message.signalType = 91;
+                                break;
+                            case "SIGNAL_TYPE_ENCRYPTION_ORG_POLICY_NOT_SATISFIED":
+                            case 92:
+                                message.signalType = 92;
+                                break;
+                            case "SIGNAL_TYPE_LOCATION_ORG_POLICY_NOT_SATISFIED":
+                            case 93:
+                                message.signalType = 93;
+                                break;
+                            case "SIGNAL_TYPE_OUTDATED_MINOR_VERSION":
+                            case 94:
+                                message.signalType = 94;
+                                break;
+                            case "SIGNAL_TYPE_SCHEMA_NOT_OPTIMIZED":
+                            case 95:
+                                message.signalType = 95;
+                                break;
+                            case "SIGNAL_TYPE_REPLICATION_LAG":
+                            case 97:
+                                message.signalType = 97;
+                                break;
+                            case "SIGNAL_TYPE_OUTDATED_CLIENT":
+                            case 99:
+                                message.signalType = 99;
+                                break;
+                            case "SIGNAL_TYPE_DATABOOST_DISABLED":
+                            case 100:
+                                message.signalType = 100;
+                                break;
+                            case "SIGNAL_TYPE_RECOMMENDED_MAINTENANCE_POLICIES":
+                            case 101:
+                                message.signalType = 101;
+                                break;
+                            case "SIGNAL_TYPE_EXTENDED_SUPPORT":
+                            case 102:
+                                message.signalType = 102;
+                                break;
+                            case "SIGNAL_TYPE_VERSION_NEARING_END_OF_LIFE":
+                            case 104:
+                                message.signalType = 104;
+                                break;
+                            }
+                            if (object.resourceCount != null)
+                                message.resourceCount = object.resourceCount | 0;
+                            if (object.deltaDetails != null) {
+                                if (typeof object.deltaDetails !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.IssueStats.deltaDetails: object expected");
+                                message.deltaDetails = $root.google.cloud.databasecenter.v1beta.DeltaDetails.fromObject(object.deltaDetails);
+                            }
+                            switch (object.issueSeverity) {
+                            default:
+                                if (typeof object.issueSeverity === "number") {
+                                    message.issueSeverity = object.issueSeverity;
+                                    break;
+                                }
+                                break;
+                            case "ISSUE_SEVERITY_UNSPECIFIED":
+                            case 0:
+                                message.issueSeverity = 0;
+                                break;
+                            case "ISSUE_SEVERITY_LOW":
+                            case 1:
+                                message.issueSeverity = 1;
+                                break;
+                            case "ISSUE_SEVERITY_MEDIUM":
+                            case 2:
+                                message.issueSeverity = 2;
+                                break;
+                            case "ISSUE_SEVERITY_HIGH":
+                            case 3:
+                                message.issueSeverity = 3;
+                                break;
+                            case "ISSUE_SEVERITY_CRITICAL":
+                            case 4:
+                                message.issueSeverity = 4;
+                                break;
+                            case "ISSUE_SEVERITY_IRRELEVANT":
+                            case 5:
+                                message.issueSeverity = 5;
+                                break;
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from an IssueStats message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.IssueStats
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IssueStats} message IssueStats
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        IssueStats.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.defaults) {
+                                object.signalType = options.enums === String ? "SIGNAL_TYPE_UNSPECIFIED" : 0;
+                                object.resourceCount = 0;
+                            }
+                            if (message.signalType != null && message.hasOwnProperty("signalType"))
+                                object.signalType = options.enums === String ? $root.google.cloud.databasecenter.v1beta.SignalType[message.signalType] === undefined ? message.signalType : $root.google.cloud.databasecenter.v1beta.SignalType[message.signalType] : message.signalType;
+                            if (message.resourceCount != null && message.hasOwnProperty("resourceCount"))
+                                object.resourceCount = message.resourceCount;
+                            if (message.deltaDetails != null && message.hasOwnProperty("deltaDetails")) {
+                                object.deltaDetails = $root.google.cloud.databasecenter.v1beta.DeltaDetails.toObject(message.deltaDetails, options);
+                                if (options.oneofs)
+                                    object._deltaDetails = "deltaDetails";
+                            }
+                            if (message.issueSeverity != null && message.hasOwnProperty("issueSeverity")) {
+                                object.issueSeverity = options.enums === String ? $root.google.cloud.databasecenter.v1beta.IssueSeverity[message.issueSeverity] === undefined ? message.issueSeverity : $root.google.cloud.databasecenter.v1beta.IssueSeverity[message.issueSeverity] : message.issueSeverity;
+                                if (options.oneofs)
+                                    object._issueSeverity = "issueSeverity";
+                            }
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this IssueStats to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.IssueStats
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        IssueStats.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for IssueStats
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.IssueStats
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        IssueStats.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.IssueStats";
+                        };
+    
+                        return IssueStats;
+                    })();
+    
+                    v1beta.Label = (function() {
+    
+                        /**
+                         * Properties of a Label.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface ILabel
+                         * @property {string|null} [key] Label key
+                         * @property {string|null} [value] Label value
+                         * @property {string|null} [source] Label source
+                         */
+    
+                        /**
+                         * Constructs a new Label.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a Label.
+                         * @implements ILabel
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.ILabel=} [properties] Properties to set
+                         */
+                        function Label(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * Label key.
+                         * @member {string} key
+                         * @memberof google.cloud.databasecenter.v1beta.Label
+                         * @instance
+                         */
+                        Label.prototype.key = "";
+    
+                        /**
+                         * Label value.
+                         * @member {string} value
+                         * @memberof google.cloud.databasecenter.v1beta.Label
+                         * @instance
+                         */
+                        Label.prototype.value = "";
+    
+                        /**
+                         * Label source.
+                         * @member {string} source
+                         * @memberof google.cloud.databasecenter.v1beta.Label
+                         * @instance
+                         */
+                        Label.prototype.source = "";
+    
+                        /**
+                         * Creates a new Label instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.Label
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ILabel=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.Label} Label instance
+                         */
+                        Label.create = function create(properties) {
+                            return new Label(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified Label message. Does not implicitly {@link google.cloud.databasecenter.v1beta.Label.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.Label
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ILabel} message Label message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        Label.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.key != null && Object.hasOwnProperty.call(message, "key"))
+                                writer.uint32(/* id 1, wireType 2 =*/10).string(message.key);
+                            if (message.value != null && Object.hasOwnProperty.call(message, "value"))
+                                writer.uint32(/* id 2, wireType 2 =*/18).string(message.value);
+                            if (message.source != null && Object.hasOwnProperty.call(message, "source"))
+                                writer.uint32(/* id 3, wireType 2 =*/26).string(message.source);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified Label message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.Label.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.Label
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ILabel} message Label message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        Label.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a Label message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.Label
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.Label} Label
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        Label.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.Label();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.key = reader.string();
+                                        break;
+                                    }
+                                case 2: {
+                                        message.value = reader.string();
+                                        break;
+                                    }
+                                case 3: {
+                                        message.source = reader.string();
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a Label message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.Label
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.Label} Label
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        Label.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a Label message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.Label
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        Label.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.key != null && message.hasOwnProperty("key"))
+                                if (!$util.isString(message.key))
+                                    return "key: string expected";
+                            if (message.value != null && message.hasOwnProperty("value"))
+                                if (!$util.isString(message.value))
+                                    return "value: string expected";
+                            if (message.source != null && message.hasOwnProperty("source"))
+                                if (!$util.isString(message.source))
+                                    return "source: string expected";
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a Label message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.Label
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.Label} Label
+                         */
+                        Label.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.Label)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.Label();
+                            if (object.key != null)
+                                message.key = String(object.key);
+                            if (object.value != null)
+                                message.value = String(object.value);
+                            if (object.source != null)
+                                message.source = String(object.source);
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a Label message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.Label
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.Label} message Label
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        Label.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.defaults) {
+                                object.key = "";
+                                object.value = "";
+                                object.source = "";
+                            }
+                            if (message.key != null && message.hasOwnProperty("key"))
+                                object.key = message.key;
+                            if (message.value != null && message.hasOwnProperty("value"))
+                                object.value = message.value;
+                            if (message.source != null && message.hasOwnProperty("source"))
+                                object.source = message.source;
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this Label to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.Label
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        Label.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for Label
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.Label
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        Label.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.Label";
+                        };
+    
+                        return Label;
+                    })();
+    
+                    v1beta.AggregateFleetRequest = (function() {
+    
+                        /**
+                         * Properties of an AggregateFleetRequest.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IAggregateFleetRequest
+                         * @property {string|null} [parent] AggregateFleetRequest parent
+                         * @property {string|null} [filter] AggregateFleetRequest filter
+                         * @property {string|null} [groupBy] AggregateFleetRequest groupBy
+                         * @property {string|null} [orderBy] AggregateFleetRequest orderBy
+                         * @property {number|null} [pageSize] AggregateFleetRequest pageSize
+                         * @property {string|null} [pageToken] AggregateFleetRequest pageToken
+                         * @property {google.type.IDate|null} [baselineDate] AggregateFleetRequest baselineDate
+                         */
+    
+                        /**
+                         * Constructs a new AggregateFleetRequest.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents an AggregateFleetRequest.
+                         * @implements IAggregateFleetRequest
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IAggregateFleetRequest=} [properties] Properties to set
+                         */
+                        function AggregateFleetRequest(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * AggregateFleetRequest parent.
+                         * @member {string} parent
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRequest
+                         * @instance
+                         */
+                        AggregateFleetRequest.prototype.parent = "";
+    
+                        /**
+                         * AggregateFleetRequest filter.
+                         * @member {string} filter
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRequest
+                         * @instance
+                         */
+                        AggregateFleetRequest.prototype.filter = "";
+    
+                        /**
+                         * AggregateFleetRequest groupBy.
+                         * @member {string} groupBy
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRequest
+                         * @instance
+                         */
+                        AggregateFleetRequest.prototype.groupBy = "";
+    
+                        /**
+                         * AggregateFleetRequest orderBy.
+                         * @member {string} orderBy
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRequest
+                         * @instance
+                         */
+                        AggregateFleetRequest.prototype.orderBy = "";
+    
+                        /**
+                         * AggregateFleetRequest pageSize.
+                         * @member {number} pageSize
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRequest
+                         * @instance
+                         */
+                        AggregateFleetRequest.prototype.pageSize = 0;
+    
+                        /**
+                         * AggregateFleetRequest pageToken.
+                         * @member {string} pageToken
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRequest
+                         * @instance
+                         */
+                        AggregateFleetRequest.prototype.pageToken = "";
+    
+                        /**
+                         * AggregateFleetRequest baselineDate.
+                         * @member {google.type.IDate|null|undefined} baselineDate
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRequest
+                         * @instance
+                         */
+                        AggregateFleetRequest.prototype.baselineDate = null;
+    
+                        // OneOf field names bound to virtual getters and setters
+                        var $oneOfFields;
+    
+                        // Virtual OneOf for proto3 optional field
+                        Object.defineProperty(AggregateFleetRequest.prototype, "_baselineDate", {
+                            get: $util.oneOfGetter($oneOfFields = ["baselineDate"]),
+                            set: $util.oneOfSetter($oneOfFields)
+                        });
+    
+                        /**
+                         * Creates a new AggregateFleetRequest instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRequest
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IAggregateFleetRequest=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.AggregateFleetRequest} AggregateFleetRequest instance
+                         */
+                        AggregateFleetRequest.create = function create(properties) {
+                            return new AggregateFleetRequest(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified AggregateFleetRequest message. Does not implicitly {@link google.cloud.databasecenter.v1beta.AggregateFleetRequest.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRequest
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IAggregateFleetRequest} message AggregateFleetRequest message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        AggregateFleetRequest.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.parent != null && Object.hasOwnProperty.call(message, "parent"))
+                                writer.uint32(/* id 1, wireType 2 =*/10).string(message.parent);
+                            if (message.filter != null && Object.hasOwnProperty.call(message, "filter"))
+                                writer.uint32(/* id 2, wireType 2 =*/18).string(message.filter);
+                            if (message.groupBy != null && Object.hasOwnProperty.call(message, "groupBy"))
+                                writer.uint32(/* id 3, wireType 2 =*/26).string(message.groupBy);
+                            if (message.orderBy != null && Object.hasOwnProperty.call(message, "orderBy"))
+                                writer.uint32(/* id 4, wireType 2 =*/34).string(message.orderBy);
+                            if (message.pageSize != null && Object.hasOwnProperty.call(message, "pageSize"))
+                                writer.uint32(/* id 5, wireType 0 =*/40).int32(message.pageSize);
+                            if (message.pageToken != null && Object.hasOwnProperty.call(message, "pageToken"))
+                                writer.uint32(/* id 6, wireType 2 =*/50).string(message.pageToken);
+                            if (message.baselineDate != null && Object.hasOwnProperty.call(message, "baselineDate"))
+                                $root.google.type.Date.encode(message.baselineDate, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified AggregateFleetRequest message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.AggregateFleetRequest.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRequest
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IAggregateFleetRequest} message AggregateFleetRequest message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        AggregateFleetRequest.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes an AggregateFleetRequest message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRequest
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.AggregateFleetRequest} AggregateFleetRequest
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        AggregateFleetRequest.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.AggregateFleetRequest();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.parent = reader.string();
+                                        break;
+                                    }
+                                case 2: {
+                                        message.filter = reader.string();
+                                        break;
+                                    }
+                                case 3: {
+                                        message.groupBy = reader.string();
+                                        break;
+                                    }
+                                case 4: {
+                                        message.orderBy = reader.string();
+                                        break;
+                                    }
+                                case 5: {
+                                        message.pageSize = reader.int32();
+                                        break;
+                                    }
+                                case 6: {
+                                        message.pageToken = reader.string();
+                                        break;
+                                    }
+                                case 7: {
+                                        message.baselineDate = $root.google.type.Date.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes an AggregateFleetRequest message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRequest
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.AggregateFleetRequest} AggregateFleetRequest
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        AggregateFleetRequest.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies an AggregateFleetRequest message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRequest
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        AggregateFleetRequest.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            var properties = {};
+                            if (message.parent != null && message.hasOwnProperty("parent"))
+                                if (!$util.isString(message.parent))
+                                    return "parent: string expected";
+                            if (message.filter != null && message.hasOwnProperty("filter"))
+                                if (!$util.isString(message.filter))
+                                    return "filter: string expected";
+                            if (message.groupBy != null && message.hasOwnProperty("groupBy"))
+                                if (!$util.isString(message.groupBy))
+                                    return "groupBy: string expected";
+                            if (message.orderBy != null && message.hasOwnProperty("orderBy"))
+                                if (!$util.isString(message.orderBy))
+                                    return "orderBy: string expected";
+                            if (message.pageSize != null && message.hasOwnProperty("pageSize"))
+                                if (!$util.isInteger(message.pageSize))
+                                    return "pageSize: integer expected";
+                            if (message.pageToken != null && message.hasOwnProperty("pageToken"))
+                                if (!$util.isString(message.pageToken))
+                                    return "pageToken: string expected";
+                            if (message.baselineDate != null && message.hasOwnProperty("baselineDate")) {
+                                properties._baselineDate = 1;
+                                {
+                                    var error = $root.google.type.Date.verify(message.baselineDate);
+                                    if (error)
+                                        return "baselineDate." + error;
+                                }
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates an AggregateFleetRequest message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRequest
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.AggregateFleetRequest} AggregateFleetRequest
+                         */
+                        AggregateFleetRequest.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.AggregateFleetRequest)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.AggregateFleetRequest();
+                            if (object.parent != null)
+                                message.parent = String(object.parent);
+                            if (object.filter != null)
+                                message.filter = String(object.filter);
+                            if (object.groupBy != null)
+                                message.groupBy = String(object.groupBy);
+                            if (object.orderBy != null)
+                                message.orderBy = String(object.orderBy);
+                            if (object.pageSize != null)
+                                message.pageSize = object.pageSize | 0;
+                            if (object.pageToken != null)
+                                message.pageToken = String(object.pageToken);
+                            if (object.baselineDate != null) {
+                                if (typeof object.baselineDate !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.AggregateFleetRequest.baselineDate: object expected");
+                                message.baselineDate = $root.google.type.Date.fromObject(object.baselineDate);
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from an AggregateFleetRequest message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRequest
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.AggregateFleetRequest} message AggregateFleetRequest
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        AggregateFleetRequest.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.defaults) {
+                                object.parent = "";
+                                object.filter = "";
+                                object.groupBy = "";
+                                object.orderBy = "";
+                                object.pageSize = 0;
+                                object.pageToken = "";
+                            }
+                            if (message.parent != null && message.hasOwnProperty("parent"))
+                                object.parent = message.parent;
+                            if (message.filter != null && message.hasOwnProperty("filter"))
+                                object.filter = message.filter;
+                            if (message.groupBy != null && message.hasOwnProperty("groupBy"))
+                                object.groupBy = message.groupBy;
+                            if (message.orderBy != null && message.hasOwnProperty("orderBy"))
+                                object.orderBy = message.orderBy;
+                            if (message.pageSize != null && message.hasOwnProperty("pageSize"))
+                                object.pageSize = message.pageSize;
+                            if (message.pageToken != null && message.hasOwnProperty("pageToken"))
+                                object.pageToken = message.pageToken;
+                            if (message.baselineDate != null && message.hasOwnProperty("baselineDate")) {
+                                object.baselineDate = $root.google.type.Date.toObject(message.baselineDate, options);
+                                if (options.oneofs)
+                                    object._baselineDate = "baselineDate";
+                            }
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this AggregateFleetRequest to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRequest
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        AggregateFleetRequest.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for AggregateFleetRequest
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRequest
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        AggregateFleetRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.AggregateFleetRequest";
+                        };
+    
+                        return AggregateFleetRequest;
+                    })();
+    
+                    v1beta.AggregateFleetResponse = (function() {
+    
+                        /**
+                         * Properties of an AggregateFleetResponse.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IAggregateFleetResponse
+                         * @property {Array.<google.cloud.databasecenter.v1beta.IAggregateFleetRow>|null} [rows] AggregateFleetResponse rows
+                         * @property {number|null} [resourceGroupsTotalCount] AggregateFleetResponse resourceGroupsTotalCount
+                         * @property {number|null} [resourceTotalCount] AggregateFleetResponse resourceTotalCount
+                         * @property {string|null} [nextPageToken] AggregateFleetResponse nextPageToken
+                         * @property {Array.<string>|null} [unreachable] AggregateFleetResponse unreachable
+                         */
+    
+                        /**
+                         * Constructs a new AggregateFleetResponse.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents an AggregateFleetResponse.
+                         * @implements IAggregateFleetResponse
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IAggregateFleetResponse=} [properties] Properties to set
+                         */
+                        function AggregateFleetResponse(properties) {
+                            this.rows = [];
+                            this.unreachable = [];
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * AggregateFleetResponse rows.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.IAggregateFleetRow>} rows
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetResponse
+                         * @instance
+                         */
+                        AggregateFleetResponse.prototype.rows = $util.emptyArray;
+    
+                        /**
+                         * AggregateFleetResponse resourceGroupsTotalCount.
+                         * @member {number} resourceGroupsTotalCount
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetResponse
+                         * @instance
+                         */
+                        AggregateFleetResponse.prototype.resourceGroupsTotalCount = 0;
+    
+                        /**
+                         * AggregateFleetResponse resourceTotalCount.
+                         * @member {number} resourceTotalCount
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetResponse
+                         * @instance
+                         */
+                        AggregateFleetResponse.prototype.resourceTotalCount = 0;
+    
+                        /**
+                         * AggregateFleetResponse nextPageToken.
+                         * @member {string} nextPageToken
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetResponse
+                         * @instance
+                         */
+                        AggregateFleetResponse.prototype.nextPageToken = "";
+    
+                        /**
+                         * AggregateFleetResponse unreachable.
+                         * @member {Array.<string>} unreachable
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetResponse
+                         * @instance
+                         */
+                        AggregateFleetResponse.prototype.unreachable = $util.emptyArray;
+    
+                        /**
+                         * Creates a new AggregateFleetResponse instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetResponse
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IAggregateFleetResponse=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.AggregateFleetResponse} AggregateFleetResponse instance
+                         */
+                        AggregateFleetResponse.create = function create(properties) {
+                            return new AggregateFleetResponse(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified AggregateFleetResponse message. Does not implicitly {@link google.cloud.databasecenter.v1beta.AggregateFleetResponse.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetResponse
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IAggregateFleetResponse} message AggregateFleetResponse message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        AggregateFleetResponse.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.rows != null && message.rows.length)
+                                for (var i = 0; i < message.rows.length; ++i)
+                                    $root.google.cloud.databasecenter.v1beta.AggregateFleetRow.encode(message.rows[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                            if (message.resourceGroupsTotalCount != null && Object.hasOwnProperty.call(message, "resourceGroupsTotalCount"))
+                                writer.uint32(/* id 2, wireType 0 =*/16).int32(message.resourceGroupsTotalCount);
+                            if (message.resourceTotalCount != null && Object.hasOwnProperty.call(message, "resourceTotalCount"))
+                                writer.uint32(/* id 3, wireType 0 =*/24).int32(message.resourceTotalCount);
+                            if (message.nextPageToken != null && Object.hasOwnProperty.call(message, "nextPageToken"))
+                                writer.uint32(/* id 4, wireType 2 =*/34).string(message.nextPageToken);
+                            if (message.unreachable != null && message.unreachable.length)
+                                for (var i = 0; i < message.unreachable.length; ++i)
+                                    writer.uint32(/* id 5, wireType 2 =*/42).string(message.unreachable[i]);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified AggregateFleetResponse message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.AggregateFleetResponse.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetResponse
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IAggregateFleetResponse} message AggregateFleetResponse message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        AggregateFleetResponse.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes an AggregateFleetResponse message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetResponse
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.AggregateFleetResponse} AggregateFleetResponse
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        AggregateFleetResponse.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.AggregateFleetResponse();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        if (!(message.rows && message.rows.length))
+                                            message.rows = [];
+                                        message.rows.push($root.google.cloud.databasecenter.v1beta.AggregateFleetRow.decode(reader, reader.uint32()));
+                                        break;
+                                    }
+                                case 2: {
+                                        message.resourceGroupsTotalCount = reader.int32();
+                                        break;
+                                    }
+                                case 3: {
+                                        message.resourceTotalCount = reader.int32();
+                                        break;
+                                    }
+                                case 4: {
+                                        message.nextPageToken = reader.string();
+                                        break;
+                                    }
+                                case 5: {
+                                        if (!(message.unreachable && message.unreachable.length))
+                                            message.unreachable = [];
+                                        message.unreachable.push(reader.string());
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes an AggregateFleetResponse message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetResponse
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.AggregateFleetResponse} AggregateFleetResponse
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        AggregateFleetResponse.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies an AggregateFleetResponse message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetResponse
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        AggregateFleetResponse.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.rows != null && message.hasOwnProperty("rows")) {
+                                if (!Array.isArray(message.rows))
+                                    return "rows: array expected";
+                                for (var i = 0; i < message.rows.length; ++i) {
+                                    var error = $root.google.cloud.databasecenter.v1beta.AggregateFleetRow.verify(message.rows[i]);
+                                    if (error)
+                                        return "rows." + error;
+                                }
+                            }
+                            if (message.resourceGroupsTotalCount != null && message.hasOwnProperty("resourceGroupsTotalCount"))
+                                if (!$util.isInteger(message.resourceGroupsTotalCount))
+                                    return "resourceGroupsTotalCount: integer expected";
+                            if (message.resourceTotalCount != null && message.hasOwnProperty("resourceTotalCount"))
+                                if (!$util.isInteger(message.resourceTotalCount))
+                                    return "resourceTotalCount: integer expected";
+                            if (message.nextPageToken != null && message.hasOwnProperty("nextPageToken"))
+                                if (!$util.isString(message.nextPageToken))
+                                    return "nextPageToken: string expected";
+                            if (message.unreachable != null && message.hasOwnProperty("unreachable")) {
+                                if (!Array.isArray(message.unreachable))
+                                    return "unreachable: array expected";
+                                for (var i = 0; i < message.unreachable.length; ++i)
+                                    if (!$util.isString(message.unreachable[i]))
+                                        return "unreachable: string[] expected";
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates an AggregateFleetResponse message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetResponse
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.AggregateFleetResponse} AggregateFleetResponse
+                         */
+                        AggregateFleetResponse.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.AggregateFleetResponse)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.AggregateFleetResponse();
+                            if (object.rows) {
+                                if (!Array.isArray(object.rows))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.AggregateFleetResponse.rows: array expected");
+                                message.rows = [];
+                                for (var i = 0; i < object.rows.length; ++i) {
+                                    if (typeof object.rows[i] !== "object")
+                                        throw TypeError(".google.cloud.databasecenter.v1beta.AggregateFleetResponse.rows: object expected");
+                                    message.rows[i] = $root.google.cloud.databasecenter.v1beta.AggregateFleetRow.fromObject(object.rows[i]);
+                                }
+                            }
+                            if (object.resourceGroupsTotalCount != null)
+                                message.resourceGroupsTotalCount = object.resourceGroupsTotalCount | 0;
+                            if (object.resourceTotalCount != null)
+                                message.resourceTotalCount = object.resourceTotalCount | 0;
+                            if (object.nextPageToken != null)
+                                message.nextPageToken = String(object.nextPageToken);
+                            if (object.unreachable) {
+                                if (!Array.isArray(object.unreachable))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.AggregateFleetResponse.unreachable: array expected");
+                                message.unreachable = [];
+                                for (var i = 0; i < object.unreachable.length; ++i)
+                                    message.unreachable[i] = String(object.unreachable[i]);
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from an AggregateFleetResponse message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetResponse
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.AggregateFleetResponse} message AggregateFleetResponse
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        AggregateFleetResponse.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.arrays || options.defaults) {
+                                object.rows = [];
+                                object.unreachable = [];
+                            }
+                            if (options.defaults) {
+                                object.resourceGroupsTotalCount = 0;
+                                object.resourceTotalCount = 0;
+                                object.nextPageToken = "";
+                            }
+                            if (message.rows && message.rows.length) {
+                                object.rows = [];
+                                for (var j = 0; j < message.rows.length; ++j)
+                                    object.rows[j] = $root.google.cloud.databasecenter.v1beta.AggregateFleetRow.toObject(message.rows[j], options);
+                            }
+                            if (message.resourceGroupsTotalCount != null && message.hasOwnProperty("resourceGroupsTotalCount"))
+                                object.resourceGroupsTotalCount = message.resourceGroupsTotalCount;
+                            if (message.resourceTotalCount != null && message.hasOwnProperty("resourceTotalCount"))
+                                object.resourceTotalCount = message.resourceTotalCount;
+                            if (message.nextPageToken != null && message.hasOwnProperty("nextPageToken"))
+                                object.nextPageToken = message.nextPageToken;
+                            if (message.unreachable && message.unreachable.length) {
+                                object.unreachable = [];
+                                for (var j = 0; j < message.unreachable.length; ++j)
+                                    object.unreachable[j] = message.unreachable[j];
+                            }
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this AggregateFleetResponse to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetResponse
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        AggregateFleetResponse.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for AggregateFleetResponse
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetResponse
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        AggregateFleetResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.AggregateFleetResponse";
+                        };
+    
+                        return AggregateFleetResponse;
+                    })();
+    
+                    v1beta.AggregateFleetRow = (function() {
+    
+                        /**
+                         * Properties of an AggregateFleetRow.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IAggregateFleetRow
+                         * @property {Array.<google.cloud.databasecenter.v1beta.IDimension>|null} [dimension] AggregateFleetRow dimension
+                         * @property {number|null} [resourceGroupsCount] AggregateFleetRow resourceGroupsCount
+                         * @property {number|null} [resourcesCount] AggregateFleetRow resourcesCount
+                         * @property {google.cloud.databasecenter.v1beta.IDeltaDetails|null} [deltaDetails] AggregateFleetRow deltaDetails
+                         */
+    
+                        /**
+                         * Constructs a new AggregateFleetRow.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents an AggregateFleetRow.
+                         * @implements IAggregateFleetRow
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IAggregateFleetRow=} [properties] Properties to set
+                         */
+                        function AggregateFleetRow(properties) {
+                            this.dimension = [];
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * AggregateFleetRow dimension.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.IDimension>} dimension
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRow
+                         * @instance
+                         */
+                        AggregateFleetRow.prototype.dimension = $util.emptyArray;
+    
+                        /**
+                         * AggregateFleetRow resourceGroupsCount.
+                         * @member {number} resourceGroupsCount
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRow
+                         * @instance
+                         */
+                        AggregateFleetRow.prototype.resourceGroupsCount = 0;
+    
+                        /**
+                         * AggregateFleetRow resourcesCount.
+                         * @member {number} resourcesCount
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRow
+                         * @instance
+                         */
+                        AggregateFleetRow.prototype.resourcesCount = 0;
+    
+                        /**
+                         * AggregateFleetRow deltaDetails.
+                         * @member {google.cloud.databasecenter.v1beta.IDeltaDetails|null|undefined} deltaDetails
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRow
+                         * @instance
+                         */
+                        AggregateFleetRow.prototype.deltaDetails = null;
+    
+                        // OneOf field names bound to virtual getters and setters
+                        var $oneOfFields;
+    
+                        // Virtual OneOf for proto3 optional field
+                        Object.defineProperty(AggregateFleetRow.prototype, "_deltaDetails", {
+                            get: $util.oneOfGetter($oneOfFields = ["deltaDetails"]),
+                            set: $util.oneOfSetter($oneOfFields)
+                        });
+    
+                        /**
+                         * Creates a new AggregateFleetRow instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRow
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IAggregateFleetRow=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.AggregateFleetRow} AggregateFleetRow instance
+                         */
+                        AggregateFleetRow.create = function create(properties) {
+                            return new AggregateFleetRow(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified AggregateFleetRow message. Does not implicitly {@link google.cloud.databasecenter.v1beta.AggregateFleetRow.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRow
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IAggregateFleetRow} message AggregateFleetRow message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        AggregateFleetRow.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.dimension != null && message.dimension.length)
+                                for (var i = 0; i < message.dimension.length; ++i)
+                                    $root.google.cloud.databasecenter.v1beta.Dimension.encode(message.dimension[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                            if (message.resourceGroupsCount != null && Object.hasOwnProperty.call(message, "resourceGroupsCount"))
+                                writer.uint32(/* id 2, wireType 0 =*/16).int32(message.resourceGroupsCount);
+                            if (message.resourcesCount != null && Object.hasOwnProperty.call(message, "resourcesCount"))
+                                writer.uint32(/* id 3, wireType 0 =*/24).int32(message.resourcesCount);
+                            if (message.deltaDetails != null && Object.hasOwnProperty.call(message, "deltaDetails"))
+                                $root.google.cloud.databasecenter.v1beta.DeltaDetails.encode(message.deltaDetails, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified AggregateFleetRow message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.AggregateFleetRow.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRow
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IAggregateFleetRow} message AggregateFleetRow message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        AggregateFleetRow.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes an AggregateFleetRow message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRow
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.AggregateFleetRow} AggregateFleetRow
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        AggregateFleetRow.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.AggregateFleetRow();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        if (!(message.dimension && message.dimension.length))
+                                            message.dimension = [];
+                                        message.dimension.push($root.google.cloud.databasecenter.v1beta.Dimension.decode(reader, reader.uint32()));
+                                        break;
+                                    }
+                                case 2: {
+                                        message.resourceGroupsCount = reader.int32();
+                                        break;
+                                    }
+                                case 3: {
+                                        message.resourcesCount = reader.int32();
+                                        break;
+                                    }
+                                case 4: {
+                                        message.deltaDetails = $root.google.cloud.databasecenter.v1beta.DeltaDetails.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes an AggregateFleetRow message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRow
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.AggregateFleetRow} AggregateFleetRow
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        AggregateFleetRow.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies an AggregateFleetRow message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRow
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        AggregateFleetRow.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            var properties = {};
+                            if (message.dimension != null && message.hasOwnProperty("dimension")) {
+                                if (!Array.isArray(message.dimension))
+                                    return "dimension: array expected";
+                                for (var i = 0; i < message.dimension.length; ++i) {
+                                    var error = $root.google.cloud.databasecenter.v1beta.Dimension.verify(message.dimension[i]);
+                                    if (error)
+                                        return "dimension." + error;
+                                }
+                            }
+                            if (message.resourceGroupsCount != null && message.hasOwnProperty("resourceGroupsCount"))
+                                if (!$util.isInteger(message.resourceGroupsCount))
+                                    return "resourceGroupsCount: integer expected";
+                            if (message.resourcesCount != null && message.hasOwnProperty("resourcesCount"))
+                                if (!$util.isInteger(message.resourcesCount))
+                                    return "resourcesCount: integer expected";
+                            if (message.deltaDetails != null && message.hasOwnProperty("deltaDetails")) {
+                                properties._deltaDetails = 1;
+                                {
+                                    var error = $root.google.cloud.databasecenter.v1beta.DeltaDetails.verify(message.deltaDetails);
+                                    if (error)
+                                        return "deltaDetails." + error;
+                                }
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates an AggregateFleetRow message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRow
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.AggregateFleetRow} AggregateFleetRow
+                         */
+                        AggregateFleetRow.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.AggregateFleetRow)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.AggregateFleetRow();
+                            if (object.dimension) {
+                                if (!Array.isArray(object.dimension))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.AggregateFleetRow.dimension: array expected");
+                                message.dimension = [];
+                                for (var i = 0; i < object.dimension.length; ++i) {
+                                    if (typeof object.dimension[i] !== "object")
+                                        throw TypeError(".google.cloud.databasecenter.v1beta.AggregateFleetRow.dimension: object expected");
+                                    message.dimension[i] = $root.google.cloud.databasecenter.v1beta.Dimension.fromObject(object.dimension[i]);
+                                }
+                            }
+                            if (object.resourceGroupsCount != null)
+                                message.resourceGroupsCount = object.resourceGroupsCount | 0;
+                            if (object.resourcesCount != null)
+                                message.resourcesCount = object.resourcesCount | 0;
+                            if (object.deltaDetails != null) {
+                                if (typeof object.deltaDetails !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.AggregateFleetRow.deltaDetails: object expected");
+                                message.deltaDetails = $root.google.cloud.databasecenter.v1beta.DeltaDetails.fromObject(object.deltaDetails);
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from an AggregateFleetRow message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRow
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.AggregateFleetRow} message AggregateFleetRow
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        AggregateFleetRow.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.arrays || options.defaults)
+                                object.dimension = [];
+                            if (options.defaults) {
+                                object.resourceGroupsCount = 0;
+                                object.resourcesCount = 0;
+                            }
+                            if (message.dimension && message.dimension.length) {
+                                object.dimension = [];
+                                for (var j = 0; j < message.dimension.length; ++j)
+                                    object.dimension[j] = $root.google.cloud.databasecenter.v1beta.Dimension.toObject(message.dimension[j], options);
+                            }
+                            if (message.resourceGroupsCount != null && message.hasOwnProperty("resourceGroupsCount"))
+                                object.resourceGroupsCount = message.resourceGroupsCount;
+                            if (message.resourcesCount != null && message.hasOwnProperty("resourcesCount"))
+                                object.resourcesCount = message.resourcesCount;
+                            if (message.deltaDetails != null && message.hasOwnProperty("deltaDetails")) {
+                                object.deltaDetails = $root.google.cloud.databasecenter.v1beta.DeltaDetails.toObject(message.deltaDetails, options);
+                                if (options.oneofs)
+                                    object._deltaDetails = "deltaDetails";
+                            }
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this AggregateFleetRow to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRow
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        AggregateFleetRow.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for AggregateFleetRow
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.AggregateFleetRow
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        AggregateFleetRow.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.AggregateFleetRow";
+                        };
+    
+                        return AggregateFleetRow;
+                    })();
+    
+                    v1beta.Dimension = (function() {
+    
+                        /**
+                         * Properties of a Dimension.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IDimension
+                         * @property {string|null} [container] Dimension container
+                         * @property {google.cloud.databasecenter.v1beta.ProductType|null} [productType] Dimension productType
+                         * @property {google.cloud.databasecenter.v1beta.Engine|null} [productEngine] Dimension productEngine
+                         * @property {string|null} [productVersion] Dimension productVersion
+                         * @property {string|null} [location] Dimension location
+                         * @property {string|null} [resourceType] Dimension resourceType
+                         * @property {google.cloud.databasecenter.v1beta.SubResourceType|null} [subResourceType] Dimension subResourceType
+                         * @property {google.cloud.databasecenter.v1beta.ResourceCategory|null} [resourceCategory] Dimension resourceCategory
+                         * @property {google.cloud.databasecenter.v1beta.ManagementType|null} [managementType] Dimension managementType
+                         * @property {google.cloud.databasecenter.v1beta.Edition|null} [edition] Dimension edition
+                         * @property {string|null} [tagKey] Dimension tagKey
+                         * @property {string|null} [tagValue] Dimension tagValue
+                         * @property {string|null} [tagSource] Dimension tagSource
+                         * @property {boolean|null} [tagInherited] Dimension tagInherited
+                         * @property {string|null} [labelKey] Dimension labelKey
+                         * @property {string|null} [labelValue] Dimension labelValue
+                         * @property {string|null} [labelSource] Dimension labelSource
+                         * @property {boolean|null} [hasMaintenanceSchedule] Dimension hasMaintenanceSchedule
+                         * @property {boolean|null} [hasDenyMaintenanceSchedules] Dimension hasDenyMaintenanceSchedules
+                         */
+    
+                        /**
+                         * Constructs a new Dimension.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a Dimension.
+                         * @implements IDimension
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IDimension=} [properties] Properties to set
+                         */
+                        function Dimension(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * Dimension container.
+                         * @member {string|null|undefined} container
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @instance
+                         */
+                        Dimension.prototype.container = null;
+    
+                        /**
+                         * Dimension productType.
+                         * @member {google.cloud.databasecenter.v1beta.ProductType|null|undefined} productType
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @instance
+                         */
+                        Dimension.prototype.productType = null;
+    
+                        /**
+                         * Dimension productEngine.
+                         * @member {google.cloud.databasecenter.v1beta.Engine|null|undefined} productEngine
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @instance
+                         */
+                        Dimension.prototype.productEngine = null;
+    
+                        /**
+                         * Dimension productVersion.
+                         * @member {string|null|undefined} productVersion
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @instance
+                         */
+                        Dimension.prototype.productVersion = null;
+    
+                        /**
+                         * Dimension location.
+                         * @member {string|null|undefined} location
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @instance
+                         */
+                        Dimension.prototype.location = null;
+    
+                        /**
+                         * Dimension resourceType.
+                         * @member {string|null|undefined} resourceType
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @instance
+                         */
+                        Dimension.prototype.resourceType = null;
+    
+                        /**
+                         * Dimension subResourceType.
+                         * @member {google.cloud.databasecenter.v1beta.SubResourceType|null|undefined} subResourceType
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @instance
+                         */
+                        Dimension.prototype.subResourceType = null;
+    
+                        /**
+                         * Dimension resourceCategory.
+                         * @member {google.cloud.databasecenter.v1beta.ResourceCategory|null|undefined} resourceCategory
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @instance
+                         */
+                        Dimension.prototype.resourceCategory = null;
+    
+                        /**
+                         * Dimension managementType.
+                         * @member {google.cloud.databasecenter.v1beta.ManagementType|null|undefined} managementType
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @instance
+                         */
+                        Dimension.prototype.managementType = null;
+    
+                        /**
+                         * Dimension edition.
+                         * @member {google.cloud.databasecenter.v1beta.Edition|null|undefined} edition
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @instance
+                         */
+                        Dimension.prototype.edition = null;
+    
+                        /**
+                         * Dimension tagKey.
+                         * @member {string|null|undefined} tagKey
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @instance
+                         */
+                        Dimension.prototype.tagKey = null;
+    
+                        /**
+                         * Dimension tagValue.
+                         * @member {string|null|undefined} tagValue
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @instance
+                         */
+                        Dimension.prototype.tagValue = null;
+    
+                        /**
+                         * Dimension tagSource.
+                         * @member {string|null|undefined} tagSource
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @instance
+                         */
+                        Dimension.prototype.tagSource = null;
+    
+                        /**
+                         * Dimension tagInherited.
+                         * @member {boolean|null|undefined} tagInherited
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @instance
+                         */
+                        Dimension.prototype.tagInherited = null;
+    
+                        /**
+                         * Dimension labelKey.
+                         * @member {string|null|undefined} labelKey
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @instance
+                         */
+                        Dimension.prototype.labelKey = null;
+    
+                        /**
+                         * Dimension labelValue.
+                         * @member {string|null|undefined} labelValue
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @instance
+                         */
+                        Dimension.prototype.labelValue = null;
+    
+                        /**
+                         * Dimension labelSource.
+                         * @member {string|null|undefined} labelSource
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @instance
+                         */
+                        Dimension.prototype.labelSource = null;
+    
+                        /**
+                         * Dimension hasMaintenanceSchedule.
+                         * @member {boolean|null|undefined} hasMaintenanceSchedule
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @instance
+                         */
+                        Dimension.prototype.hasMaintenanceSchedule = null;
+    
+                        /**
+                         * Dimension hasDenyMaintenanceSchedules.
+                         * @member {boolean|null|undefined} hasDenyMaintenanceSchedules
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @instance
+                         */
+                        Dimension.prototype.hasDenyMaintenanceSchedules = null;
+    
+                        // OneOf field names bound to virtual getters and setters
+                        var $oneOfFields;
+    
+                        /**
+                         * Dimension dimension.
+                         * @member {"container"|"productType"|"productEngine"|"productVersion"|"location"|"resourceType"|"subResourceType"|"resourceCategory"|"managementType"|"edition"|"tagKey"|"tagValue"|"tagSource"|"tagInherited"|"labelKey"|"labelValue"|"labelSource"|"hasMaintenanceSchedule"|"hasDenyMaintenanceSchedules"|undefined} dimension
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @instance
+                         */
+                        Object.defineProperty(Dimension.prototype, "dimension", {
+                            get: $util.oneOfGetter($oneOfFields = ["container", "productType", "productEngine", "productVersion", "location", "resourceType", "subResourceType", "resourceCategory", "managementType", "edition", "tagKey", "tagValue", "tagSource", "tagInherited", "labelKey", "labelValue", "labelSource", "hasMaintenanceSchedule", "hasDenyMaintenanceSchedules"]),
+                            set: $util.oneOfSetter($oneOfFields)
+                        });
+    
+                        /**
+                         * Creates a new Dimension instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IDimension=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.Dimension} Dimension instance
+                         */
+                        Dimension.create = function create(properties) {
+                            return new Dimension(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified Dimension message. Does not implicitly {@link google.cloud.databasecenter.v1beta.Dimension.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IDimension} message Dimension message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        Dimension.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.container != null && Object.hasOwnProperty.call(message, "container"))
+                                writer.uint32(/* id 2, wireType 2 =*/18).string(message.container);
+                            if (message.productType != null && Object.hasOwnProperty.call(message, "productType"))
+                                writer.uint32(/* id 3, wireType 0 =*/24).int32(message.productType);
+                            if (message.productEngine != null && Object.hasOwnProperty.call(message, "productEngine"))
+                                writer.uint32(/* id 4, wireType 0 =*/32).int32(message.productEngine);
+                            if (message.productVersion != null && Object.hasOwnProperty.call(message, "productVersion"))
+                                writer.uint32(/* id 5, wireType 2 =*/42).string(message.productVersion);
+                            if (message.location != null && Object.hasOwnProperty.call(message, "location"))
+                                writer.uint32(/* id 6, wireType 2 =*/50).string(message.location);
+                            if (message.resourceType != null && Object.hasOwnProperty.call(message, "resourceType"))
+                                writer.uint32(/* id 7, wireType 2 =*/58).string(message.resourceType);
+                            if (message.subResourceType != null && Object.hasOwnProperty.call(message, "subResourceType"))
+                                writer.uint32(/* id 8, wireType 0 =*/64).int32(message.subResourceType);
+                            if (message.resourceCategory != null && Object.hasOwnProperty.call(message, "resourceCategory"))
+                                writer.uint32(/* id 9, wireType 0 =*/72).int32(message.resourceCategory);
+                            if (message.managementType != null && Object.hasOwnProperty.call(message, "managementType"))
+                                writer.uint32(/* id 10, wireType 0 =*/80).int32(message.managementType);
+                            if (message.edition != null && Object.hasOwnProperty.call(message, "edition"))
+                                writer.uint32(/* id 11, wireType 0 =*/88).int32(message.edition);
+                            if (message.tagKey != null && Object.hasOwnProperty.call(message, "tagKey"))
+                                writer.uint32(/* id 12, wireType 2 =*/98).string(message.tagKey);
+                            if (message.tagValue != null && Object.hasOwnProperty.call(message, "tagValue"))
+                                writer.uint32(/* id 13, wireType 2 =*/106).string(message.tagValue);
+                            if (message.tagSource != null && Object.hasOwnProperty.call(message, "tagSource"))
+                                writer.uint32(/* id 14, wireType 2 =*/114).string(message.tagSource);
+                            if (message.tagInherited != null && Object.hasOwnProperty.call(message, "tagInherited"))
+                                writer.uint32(/* id 15, wireType 0 =*/120).bool(message.tagInherited);
+                            if (message.labelKey != null && Object.hasOwnProperty.call(message, "labelKey"))
+                                writer.uint32(/* id 16, wireType 2 =*/130).string(message.labelKey);
+                            if (message.labelValue != null && Object.hasOwnProperty.call(message, "labelValue"))
+                                writer.uint32(/* id 17, wireType 2 =*/138).string(message.labelValue);
+                            if (message.labelSource != null && Object.hasOwnProperty.call(message, "labelSource"))
+                                writer.uint32(/* id 18, wireType 2 =*/146).string(message.labelSource);
+                            if (message.hasMaintenanceSchedule != null && Object.hasOwnProperty.call(message, "hasMaintenanceSchedule"))
+                                writer.uint32(/* id 19, wireType 0 =*/152).bool(message.hasMaintenanceSchedule);
+                            if (message.hasDenyMaintenanceSchedules != null && Object.hasOwnProperty.call(message, "hasDenyMaintenanceSchedules"))
+                                writer.uint32(/* id 20, wireType 0 =*/160).bool(message.hasDenyMaintenanceSchedules);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified Dimension message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.Dimension.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IDimension} message Dimension message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        Dimension.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a Dimension message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.Dimension} Dimension
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        Dimension.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.Dimension();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 2: {
+                                        message.container = reader.string();
+                                        break;
+                                    }
+                                case 3: {
+                                        message.productType = reader.int32();
+                                        break;
+                                    }
+                                case 4: {
+                                        message.productEngine = reader.int32();
+                                        break;
+                                    }
+                                case 5: {
+                                        message.productVersion = reader.string();
+                                        break;
+                                    }
+                                case 6: {
+                                        message.location = reader.string();
+                                        break;
+                                    }
+                                case 7: {
+                                        message.resourceType = reader.string();
+                                        break;
+                                    }
+                                case 8: {
+                                        message.subResourceType = reader.int32();
+                                        break;
+                                    }
+                                case 9: {
+                                        message.resourceCategory = reader.int32();
+                                        break;
+                                    }
+                                case 10: {
+                                        message.managementType = reader.int32();
+                                        break;
+                                    }
+                                case 11: {
+                                        message.edition = reader.int32();
+                                        break;
+                                    }
+                                case 12: {
+                                        message.tagKey = reader.string();
+                                        break;
+                                    }
+                                case 13: {
+                                        message.tagValue = reader.string();
+                                        break;
+                                    }
+                                case 14: {
+                                        message.tagSource = reader.string();
+                                        break;
+                                    }
+                                case 15: {
+                                        message.tagInherited = reader.bool();
+                                        break;
+                                    }
+                                case 16: {
+                                        message.labelKey = reader.string();
+                                        break;
+                                    }
+                                case 17: {
+                                        message.labelValue = reader.string();
+                                        break;
+                                    }
+                                case 18: {
+                                        message.labelSource = reader.string();
+                                        break;
+                                    }
+                                case 19: {
+                                        message.hasMaintenanceSchedule = reader.bool();
+                                        break;
+                                    }
+                                case 20: {
+                                        message.hasDenyMaintenanceSchedules = reader.bool();
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a Dimension message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.Dimension} Dimension
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        Dimension.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a Dimension message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        Dimension.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            var properties = {};
+                            if (message.container != null && message.hasOwnProperty("container")) {
+                                properties.dimension = 1;
+                                if (!$util.isString(message.container))
+                                    return "container: string expected";
+                            }
+                            if (message.productType != null && message.hasOwnProperty("productType")) {
+                                if (properties.dimension === 1)
+                                    return "dimension: multiple values";
+                                properties.dimension = 1;
+                                switch (message.productType) {
+                                default:
+                                    return "productType: enum value expected";
+                                case 0:
+                                case 1:
+                                case 2:
+                                case 3:
+                                case 6:
+                                case 7:
+                                case 8:
+                                case 9:
+                                case 10:
+                                case 11:
+                                case 5:
+                                    break;
+                                }
+                            }
+                            if (message.productEngine != null && message.hasOwnProperty("productEngine")) {
+                                if (properties.dimension === 1)
+                                    return "dimension: multiple values";
+                                properties.dimension = 1;
+                                switch (message.productEngine) {
+                                default:
+                                    return "productEngine: enum value expected";
+                                case 0:
+                                case 1:
+                                case 2:
+                                case 3:
+                                case 4:
+                                case 8:
+                                case 9:
+                                case 10:
+                                case 11:
+                                case 12:
+                                case 13:
+                                case 14:
+                                case 6:
+                                    break;
+                                }
+                            }
+                            if (message.productVersion != null && message.hasOwnProperty("productVersion")) {
+                                if (properties.dimension === 1)
+                                    return "dimension: multiple values";
+                                properties.dimension = 1;
+                                if (!$util.isString(message.productVersion))
+                                    return "productVersion: string expected";
+                            }
+                            if (message.location != null && message.hasOwnProperty("location")) {
+                                if (properties.dimension === 1)
+                                    return "dimension: multiple values";
+                                properties.dimension = 1;
+                                if (!$util.isString(message.location))
+                                    return "location: string expected";
+                            }
+                            if (message.resourceType != null && message.hasOwnProperty("resourceType")) {
+                                if (properties.dimension === 1)
+                                    return "dimension: multiple values";
+                                properties.dimension = 1;
+                                if (!$util.isString(message.resourceType))
+                                    return "resourceType: string expected";
+                            }
+                            if (message.subResourceType != null && message.hasOwnProperty("subResourceType")) {
+                                if (properties.dimension === 1)
+                                    return "dimension: multiple values";
+                                properties.dimension = 1;
+                                switch (message.subResourceType) {
+                                default:
+                                    return "subResourceType: enum value expected";
+                                case 0:
+                                case 1:
+                                case 2:
+                                case 3:
+                                case 5:
+                                case 6:
+                                case 7:
+                                case 8:
+                                case 4:
+                                    break;
+                                }
+                            }
+                            if (message.resourceCategory != null && message.hasOwnProperty("resourceCategory")) {
+                                if (properties.dimension === 1)
+                                    return "dimension: multiple values";
+                                properties.dimension = 1;
+                                switch (message.resourceCategory) {
+                                default:
+                                    return "resourceCategory: enum value expected";
+                                case 0:
+                                case 1:
+                                case 2:
+                                case 3:
+                                case 4:
+                                case 5:
+                                    break;
+                                }
+                            }
+                            if (message.managementType != null && message.hasOwnProperty("managementType")) {
+                                if (properties.dimension === 1)
+                                    return "dimension: multiple values";
+                                properties.dimension = 1;
+                                switch (message.managementType) {
+                                default:
+                                    return "managementType: enum value expected";
+                                case 0:
+                                case 1:
+                                case 2:
+                                    break;
+                                }
+                            }
+                            if (message.edition != null && message.hasOwnProperty("edition")) {
+                                if (properties.dimension === 1)
+                                    return "dimension: multiple values";
+                                properties.dimension = 1;
+                                switch (message.edition) {
+                                default:
+                                    return "edition: enum value expected";
+                                case 0:
+                                case 1:
+                                case 2:
+                                case 3:
+                                    break;
+                                }
+                            }
+                            if (message.tagKey != null && message.hasOwnProperty("tagKey")) {
+                                if (properties.dimension === 1)
+                                    return "dimension: multiple values";
+                                properties.dimension = 1;
+                                if (!$util.isString(message.tagKey))
+                                    return "tagKey: string expected";
+                            }
+                            if (message.tagValue != null && message.hasOwnProperty("tagValue")) {
+                                if (properties.dimension === 1)
+                                    return "dimension: multiple values";
+                                properties.dimension = 1;
+                                if (!$util.isString(message.tagValue))
+                                    return "tagValue: string expected";
+                            }
+                            if (message.tagSource != null && message.hasOwnProperty("tagSource")) {
+                                if (properties.dimension === 1)
+                                    return "dimension: multiple values";
+                                properties.dimension = 1;
+                                if (!$util.isString(message.tagSource))
+                                    return "tagSource: string expected";
+                            }
+                            if (message.tagInherited != null && message.hasOwnProperty("tagInherited")) {
+                                if (properties.dimension === 1)
+                                    return "dimension: multiple values";
+                                properties.dimension = 1;
+                                if (typeof message.tagInherited !== "boolean")
+                                    return "tagInherited: boolean expected";
+                            }
+                            if (message.labelKey != null && message.hasOwnProperty("labelKey")) {
+                                if (properties.dimension === 1)
+                                    return "dimension: multiple values";
+                                properties.dimension = 1;
+                                if (!$util.isString(message.labelKey))
+                                    return "labelKey: string expected";
+                            }
+                            if (message.labelValue != null && message.hasOwnProperty("labelValue")) {
+                                if (properties.dimension === 1)
+                                    return "dimension: multiple values";
+                                properties.dimension = 1;
+                                if (!$util.isString(message.labelValue))
+                                    return "labelValue: string expected";
+                            }
+                            if (message.labelSource != null && message.hasOwnProperty("labelSource")) {
+                                if (properties.dimension === 1)
+                                    return "dimension: multiple values";
+                                properties.dimension = 1;
+                                if (!$util.isString(message.labelSource))
+                                    return "labelSource: string expected";
+                            }
+                            if (message.hasMaintenanceSchedule != null && message.hasOwnProperty("hasMaintenanceSchedule")) {
+                                if (properties.dimension === 1)
+                                    return "dimension: multiple values";
+                                properties.dimension = 1;
+                                if (typeof message.hasMaintenanceSchedule !== "boolean")
+                                    return "hasMaintenanceSchedule: boolean expected";
+                            }
+                            if (message.hasDenyMaintenanceSchedules != null && message.hasOwnProperty("hasDenyMaintenanceSchedules")) {
+                                if (properties.dimension === 1)
+                                    return "dimension: multiple values";
+                                properties.dimension = 1;
+                                if (typeof message.hasDenyMaintenanceSchedules !== "boolean")
+                                    return "hasDenyMaintenanceSchedules: boolean expected";
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a Dimension message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.Dimension} Dimension
+                         */
+                        Dimension.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.Dimension)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.Dimension();
+                            if (object.container != null)
+                                message.container = String(object.container);
+                            switch (object.productType) {
+                            default:
+                                if (typeof object.productType === "number") {
+                                    message.productType = object.productType;
+                                    break;
+                                }
+                                break;
+                            case "PRODUCT_TYPE_UNSPECIFIED":
+                            case 0:
+                                message.productType = 0;
+                                break;
+                            case "PRODUCT_TYPE_CLOUD_SQL":
+                            case 1:
+                                message.productType = 1;
+                                break;
+                            case "PRODUCT_TYPE_ALLOYDB":
+                            case 2:
+                                message.productType = 2;
+                                break;
+                            case "PRODUCT_TYPE_SPANNER":
+                            case 3:
+                                message.productType = 3;
+                                break;
+                            case "PRODUCT_TYPE_BIGTABLE":
+                            case 6:
+                                message.productType = 6;
+                                break;
+                            case "PRODUCT_TYPE_MEMORYSTORE":
+                            case 7:
+                                message.productType = 7;
+                                break;
+                            case "PRODUCT_TYPE_FIRESTORE":
+                            case 8:
+                                message.productType = 8;
+                                break;
+                            case "PRODUCT_TYPE_COMPUTE_ENGINE":
+                            case 9:
+                                message.productType = 9;
+                                break;
+                            case "PRODUCT_TYPE_ORACLE_ON_GCP":
+                            case 10:
+                                message.productType = 10;
+                                break;
+                            case "PRODUCT_TYPE_BIGQUERY":
+                            case 11:
+                                message.productType = 11;
+                                break;
+                            case "PRODUCT_TYPE_OTHER":
+                            case 5:
+                                message.productType = 5;
+                                break;
+                            }
+                            switch (object.productEngine) {
+                            default:
+                                if (typeof object.productEngine === "number") {
+                                    message.productEngine = object.productEngine;
+                                    break;
+                                }
+                                break;
+                            case "ENGINE_UNSPECIFIED":
+                            case 0:
+                                message.productEngine = 0;
+                                break;
+                            case "ENGINE_MYSQL":
+                            case 1:
+                                message.productEngine = 1;
+                                break;
+                            case "ENGINE_POSTGRES":
+                            case 2:
+                                message.productEngine = 2;
+                                break;
+                            case "ENGINE_SQL_SERVER":
+                            case 3:
+                                message.productEngine = 3;
+                                break;
+                            case "ENGINE_NATIVE":
+                            case 4:
+                                message.productEngine = 4;
+                                break;
+                            case "ENGINE_MEMORYSTORE_FOR_REDIS":
+                            case 8:
+                                message.productEngine = 8;
+                                break;
+                            case "ENGINE_MEMORYSTORE_FOR_REDIS_CLUSTER":
+                            case 9:
+                                message.productEngine = 9;
+                                break;
+                            case "ENGINE_FIRESTORE_WITH_NATIVE_MODE":
+                            case 10:
+                                message.productEngine = 10;
+                                break;
+                            case "ENGINE_FIRESTORE_WITH_DATASTORE_MODE":
+                            case 11:
+                                message.productEngine = 11;
+                                break;
+                            case "ENGINE_EXADATA_ORACLE":
+                            case 12:
+                                message.productEngine = 12;
+                                break;
+                            case "ENGINE_ADB_SERVERLESS_ORACLE":
+                            case 13:
+                                message.productEngine = 13;
+                                break;
+                            case "ENGINE_FIRESTORE_WITH_MONGODB_COMPATIBILITY_MODE":
+                            case 14:
+                                message.productEngine = 14;
+                                break;
+                            case "ENGINE_OTHER":
+                            case 6:
+                                message.productEngine = 6;
+                                break;
+                            }
+                            if (object.productVersion != null)
+                                message.productVersion = String(object.productVersion);
+                            if (object.location != null)
+                                message.location = String(object.location);
+                            if (object.resourceType != null)
+                                message.resourceType = String(object.resourceType);
+                            switch (object.subResourceType) {
+                            default:
+                                if (typeof object.subResourceType === "number") {
+                                    message.subResourceType = object.subResourceType;
+                                    break;
+                                }
+                                break;
+                            case "SUB_RESOURCE_TYPE_UNSPECIFIED":
+                            case 0:
+                                message.subResourceType = 0;
+                                break;
+                            case "SUB_RESOURCE_TYPE_PRIMARY":
+                            case 1:
+                                message.subResourceType = 1;
+                                break;
+                            case "SUB_RESOURCE_TYPE_SECONDARY":
+                            case 2:
+                                message.subResourceType = 2;
+                                break;
+                            case "SUB_RESOURCE_TYPE_READ_REPLICA":
+                            case 3:
+                                message.subResourceType = 3;
+                                break;
+                            case "SUB_RESOURCE_TYPE_EXTERNAL_PRIMARY":
+                            case 5:
+                                message.subResourceType = 5;
+                                break;
+                            case "SUB_RESOURCE_TYPE_READ_POOL":
+                            case 6:
+                                message.subResourceType = 6;
+                                break;
+                            case "SUB_RESOURCE_TYPE_RESERVATION":
+                            case 7:
+                                message.subResourceType = 7;
+                                break;
+                            case "SUB_RESOURCE_TYPE_DATASET":
+                            case 8:
+                                message.subResourceType = 8;
+                                break;
+                            case "SUB_RESOURCE_TYPE_OTHER":
+                            case 4:
+                                message.subResourceType = 4;
+                                break;
+                            }
+                            switch (object.resourceCategory) {
+                            default:
+                                if (typeof object.resourceCategory === "number") {
+                                    message.resourceCategory = object.resourceCategory;
+                                    break;
+                                }
+                                break;
+                            case "RESOURCE_CATEGORY_UNSPECIFIED":
+                            case 0:
+                                message.resourceCategory = 0;
+                                break;
+                            case "INSTANCE":
+                            case 1:
+                                message.resourceCategory = 1;
+                                break;
+                            case "CLUSTER":
+                            case 2:
+                                message.resourceCategory = 2;
+                                break;
+                            case "DATABASE":
+                            case 3:
+                                message.resourceCategory = 3;
+                                break;
+                            case "DATASET":
+                            case 4:
+                                message.resourceCategory = 4;
+                                break;
+                            case "RESERVATION":
+                            case 5:
+                                message.resourceCategory = 5;
+                                break;
+                            }
+                            switch (object.managementType) {
+                            default:
+                                if (typeof object.managementType === "number") {
+                                    message.managementType = object.managementType;
+                                    break;
+                                }
+                                break;
+                            case "MANAGEMENT_TYPE_UNSPECIFIED":
+                            case 0:
+                                message.managementType = 0;
+                                break;
+                            case "MANAGEMENT_TYPE_GCP_MANAGED":
+                            case 1:
+                                message.managementType = 1;
+                                break;
+                            case "MANAGEMENT_TYPE_SELF_MANAGED":
+                            case 2:
+                                message.managementType = 2;
+                                break;
+                            }
+                            switch (object.edition) {
+                            default:
+                                if (typeof object.edition === "number") {
+                                    message.edition = object.edition;
+                                    break;
+                                }
+                                break;
+                            case "EDITION_UNSPECIFIED":
+                            case 0:
+                                message.edition = 0;
+                                break;
+                            case "EDITION_ENTERPRISE":
+                            case 1:
+                                message.edition = 1;
+                                break;
+                            case "EDITION_ENTERPRISE_PLUS":
+                            case 2:
+                                message.edition = 2;
+                                break;
+                            case "EDITION_STANDARD":
+                            case 3:
+                                message.edition = 3;
+                                break;
+                            }
+                            if (object.tagKey != null)
+                                message.tagKey = String(object.tagKey);
+                            if (object.tagValue != null)
+                                message.tagValue = String(object.tagValue);
+                            if (object.tagSource != null)
+                                message.tagSource = String(object.tagSource);
+                            if (object.tagInherited != null)
+                                message.tagInherited = Boolean(object.tagInherited);
+                            if (object.labelKey != null)
+                                message.labelKey = String(object.labelKey);
+                            if (object.labelValue != null)
+                                message.labelValue = String(object.labelValue);
+                            if (object.labelSource != null)
+                                message.labelSource = String(object.labelSource);
+                            if (object.hasMaintenanceSchedule != null)
+                                message.hasMaintenanceSchedule = Boolean(object.hasMaintenanceSchedule);
+                            if (object.hasDenyMaintenanceSchedules != null)
+                                message.hasDenyMaintenanceSchedules = Boolean(object.hasDenyMaintenanceSchedules);
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a Dimension message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.Dimension} message Dimension
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        Dimension.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (message.container != null && message.hasOwnProperty("container")) {
+                                object.container = message.container;
+                                if (options.oneofs)
+                                    object.dimension = "container";
+                            }
+                            if (message.productType != null && message.hasOwnProperty("productType")) {
+                                object.productType = options.enums === String ? $root.google.cloud.databasecenter.v1beta.ProductType[message.productType] === undefined ? message.productType : $root.google.cloud.databasecenter.v1beta.ProductType[message.productType] : message.productType;
+                                if (options.oneofs)
+                                    object.dimension = "productType";
+                            }
+                            if (message.productEngine != null && message.hasOwnProperty("productEngine")) {
+                                object.productEngine = options.enums === String ? $root.google.cloud.databasecenter.v1beta.Engine[message.productEngine] === undefined ? message.productEngine : $root.google.cloud.databasecenter.v1beta.Engine[message.productEngine] : message.productEngine;
+                                if (options.oneofs)
+                                    object.dimension = "productEngine";
+                            }
+                            if (message.productVersion != null && message.hasOwnProperty("productVersion")) {
+                                object.productVersion = message.productVersion;
+                                if (options.oneofs)
+                                    object.dimension = "productVersion";
+                            }
+                            if (message.location != null && message.hasOwnProperty("location")) {
+                                object.location = message.location;
+                                if (options.oneofs)
+                                    object.dimension = "location";
+                            }
+                            if (message.resourceType != null && message.hasOwnProperty("resourceType")) {
+                                object.resourceType = message.resourceType;
+                                if (options.oneofs)
+                                    object.dimension = "resourceType";
+                            }
+                            if (message.subResourceType != null && message.hasOwnProperty("subResourceType")) {
+                                object.subResourceType = options.enums === String ? $root.google.cloud.databasecenter.v1beta.SubResourceType[message.subResourceType] === undefined ? message.subResourceType : $root.google.cloud.databasecenter.v1beta.SubResourceType[message.subResourceType] : message.subResourceType;
+                                if (options.oneofs)
+                                    object.dimension = "subResourceType";
+                            }
+                            if (message.resourceCategory != null && message.hasOwnProperty("resourceCategory")) {
+                                object.resourceCategory = options.enums === String ? $root.google.cloud.databasecenter.v1beta.ResourceCategory[message.resourceCategory] === undefined ? message.resourceCategory : $root.google.cloud.databasecenter.v1beta.ResourceCategory[message.resourceCategory] : message.resourceCategory;
+                                if (options.oneofs)
+                                    object.dimension = "resourceCategory";
+                            }
+                            if (message.managementType != null && message.hasOwnProperty("managementType")) {
+                                object.managementType = options.enums === String ? $root.google.cloud.databasecenter.v1beta.ManagementType[message.managementType] === undefined ? message.managementType : $root.google.cloud.databasecenter.v1beta.ManagementType[message.managementType] : message.managementType;
+                                if (options.oneofs)
+                                    object.dimension = "managementType";
+                            }
+                            if (message.edition != null && message.hasOwnProperty("edition")) {
+                                object.edition = options.enums === String ? $root.google.cloud.databasecenter.v1beta.Edition[message.edition] === undefined ? message.edition : $root.google.cloud.databasecenter.v1beta.Edition[message.edition] : message.edition;
+                                if (options.oneofs)
+                                    object.dimension = "edition";
+                            }
+                            if (message.tagKey != null && message.hasOwnProperty("tagKey")) {
+                                object.tagKey = message.tagKey;
+                                if (options.oneofs)
+                                    object.dimension = "tagKey";
+                            }
+                            if (message.tagValue != null && message.hasOwnProperty("tagValue")) {
+                                object.tagValue = message.tagValue;
+                                if (options.oneofs)
+                                    object.dimension = "tagValue";
+                            }
+                            if (message.tagSource != null && message.hasOwnProperty("tagSource")) {
+                                object.tagSource = message.tagSource;
+                                if (options.oneofs)
+                                    object.dimension = "tagSource";
+                            }
+                            if (message.tagInherited != null && message.hasOwnProperty("tagInherited")) {
+                                object.tagInherited = message.tagInherited;
+                                if (options.oneofs)
+                                    object.dimension = "tagInherited";
+                            }
+                            if (message.labelKey != null && message.hasOwnProperty("labelKey")) {
+                                object.labelKey = message.labelKey;
+                                if (options.oneofs)
+                                    object.dimension = "labelKey";
+                            }
+                            if (message.labelValue != null && message.hasOwnProperty("labelValue")) {
+                                object.labelValue = message.labelValue;
+                                if (options.oneofs)
+                                    object.dimension = "labelValue";
+                            }
+                            if (message.labelSource != null && message.hasOwnProperty("labelSource")) {
+                                object.labelSource = message.labelSource;
+                                if (options.oneofs)
+                                    object.dimension = "labelSource";
+                            }
+                            if (message.hasMaintenanceSchedule != null && message.hasOwnProperty("hasMaintenanceSchedule")) {
+                                object.hasMaintenanceSchedule = message.hasMaintenanceSchedule;
+                                if (options.oneofs)
+                                    object.dimension = "hasMaintenanceSchedule";
+                            }
+                            if (message.hasDenyMaintenanceSchedules != null && message.hasOwnProperty("hasDenyMaintenanceSchedules")) {
+                                object.hasDenyMaintenanceSchedules = message.hasDenyMaintenanceSchedules;
+                                if (options.oneofs)
+                                    object.dimension = "hasDenyMaintenanceSchedules";
+                            }
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this Dimension to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        Dimension.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for Dimension
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.Dimension
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        Dimension.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.Dimension";
+                        };
+    
+                        return Dimension;
+                    })();
+    
+                    v1beta.BackupDRConfig = (function() {
+    
+                        /**
+                         * Properties of a BackupDRConfig.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IBackupDRConfig
+                         * @property {boolean|null} [backupdrManaged] BackupDRConfig backupdrManaged
+                         */
+    
+                        /**
+                         * Constructs a new BackupDRConfig.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a BackupDRConfig.
+                         * @implements IBackupDRConfig
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IBackupDRConfig=} [properties] Properties to set
+                         */
+                        function BackupDRConfig(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * BackupDRConfig backupdrManaged.
+                         * @member {boolean|null|undefined} backupdrManaged
+                         * @memberof google.cloud.databasecenter.v1beta.BackupDRConfig
+                         * @instance
+                         */
+                        BackupDRConfig.prototype.backupdrManaged = null;
+    
+                        // OneOf field names bound to virtual getters and setters
+                        var $oneOfFields;
+    
+                        // Virtual OneOf for proto3 optional field
+                        Object.defineProperty(BackupDRConfig.prototype, "_backupdrManaged", {
+                            get: $util.oneOfGetter($oneOfFields = ["backupdrManaged"]),
+                            set: $util.oneOfSetter($oneOfFields)
+                        });
+    
+                        /**
+                         * Creates a new BackupDRConfig instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.BackupDRConfig
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IBackupDRConfig=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.BackupDRConfig} BackupDRConfig instance
+                         */
+                        BackupDRConfig.create = function create(properties) {
+                            return new BackupDRConfig(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified BackupDRConfig message. Does not implicitly {@link google.cloud.databasecenter.v1beta.BackupDRConfig.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.BackupDRConfig
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IBackupDRConfig} message BackupDRConfig message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        BackupDRConfig.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.backupdrManaged != null && Object.hasOwnProperty.call(message, "backupdrManaged"))
+                                writer.uint32(/* id 1, wireType 0 =*/8).bool(message.backupdrManaged);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified BackupDRConfig message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.BackupDRConfig.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.BackupDRConfig
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IBackupDRConfig} message BackupDRConfig message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        BackupDRConfig.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a BackupDRConfig message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.BackupDRConfig
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.BackupDRConfig} BackupDRConfig
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        BackupDRConfig.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.BackupDRConfig();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.backupdrManaged = reader.bool();
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a BackupDRConfig message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.BackupDRConfig
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.BackupDRConfig} BackupDRConfig
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        BackupDRConfig.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a BackupDRConfig message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.BackupDRConfig
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        BackupDRConfig.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            var properties = {};
+                            if (message.backupdrManaged != null && message.hasOwnProperty("backupdrManaged")) {
+                                properties._backupdrManaged = 1;
+                                if (typeof message.backupdrManaged !== "boolean")
+                                    return "backupdrManaged: boolean expected";
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a BackupDRConfig message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.BackupDRConfig
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.BackupDRConfig} BackupDRConfig
+                         */
+                        BackupDRConfig.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.BackupDRConfig)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.BackupDRConfig();
+                            if (object.backupdrManaged != null)
+                                message.backupdrManaged = Boolean(object.backupdrManaged);
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a BackupDRConfig message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.BackupDRConfig
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.BackupDRConfig} message BackupDRConfig
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        BackupDRConfig.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (message.backupdrManaged != null && message.hasOwnProperty("backupdrManaged")) {
+                                object.backupdrManaged = message.backupdrManaged;
+                                if (options.oneofs)
+                                    object._backupdrManaged = "backupdrManaged";
+                            }
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this BackupDRConfig to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.BackupDRConfig
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        BackupDRConfig.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for BackupDRConfig
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.BackupDRConfig
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        BackupDRConfig.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.BackupDRConfig";
+                        };
+    
+                        return BackupDRConfig;
+                    })();
+    
+                    v1beta.QueryIssuesRequest = (function() {
+    
+                        /**
+                         * Properties of a QueryIssuesRequest.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IQueryIssuesRequest
+                         * @property {string|null} [parent] QueryIssuesRequest parent
+                         * @property {string|null} [filter] QueryIssuesRequest filter
+                         * @property {Array.<google.cloud.databasecenter.v1beta.ISignalProductsFilters>|null} [signalProductsFilters] QueryIssuesRequest signalProductsFilters
+                         * @property {string|null} [orderBy] QueryIssuesRequest orderBy
+                         * @property {number|null} [pageSize] QueryIssuesRequest pageSize
+                         * @property {string|null} [pageToken] QueryIssuesRequest pageToken
+                         */
+    
+                        /**
+                         * Constructs a new QueryIssuesRequest.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a QueryIssuesRequest.
+                         * @implements IQueryIssuesRequest
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IQueryIssuesRequest=} [properties] Properties to set
+                         */
+                        function QueryIssuesRequest(properties) {
+                            this.signalProductsFilters = [];
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * QueryIssuesRequest parent.
+                         * @member {string} parent
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesRequest
+                         * @instance
+                         */
+                        QueryIssuesRequest.prototype.parent = "";
+    
+                        /**
+                         * QueryIssuesRequest filter.
+                         * @member {string} filter
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesRequest
+                         * @instance
+                         */
+                        QueryIssuesRequest.prototype.filter = "";
+    
+                        /**
+                         * QueryIssuesRequest signalProductsFilters.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.ISignalProductsFilters>} signalProductsFilters
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesRequest
+                         * @instance
+                         */
+                        QueryIssuesRequest.prototype.signalProductsFilters = $util.emptyArray;
+    
+                        /**
+                         * QueryIssuesRequest orderBy.
+                         * @member {string} orderBy
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesRequest
+                         * @instance
+                         */
+                        QueryIssuesRequest.prototype.orderBy = "";
+    
+                        /**
+                         * QueryIssuesRequest pageSize.
+                         * @member {number} pageSize
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesRequest
+                         * @instance
+                         */
+                        QueryIssuesRequest.prototype.pageSize = 0;
+    
+                        /**
+                         * QueryIssuesRequest pageToken.
+                         * @member {string} pageToken
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesRequest
+                         * @instance
+                         */
+                        QueryIssuesRequest.prototype.pageToken = "";
+    
+                        /**
+                         * Creates a new QueryIssuesRequest instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesRequest
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IQueryIssuesRequest=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.QueryIssuesRequest} QueryIssuesRequest instance
+                         */
+                        QueryIssuesRequest.create = function create(properties) {
+                            return new QueryIssuesRequest(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified QueryIssuesRequest message. Does not implicitly {@link google.cloud.databasecenter.v1beta.QueryIssuesRequest.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesRequest
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IQueryIssuesRequest} message QueryIssuesRequest message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        QueryIssuesRequest.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.parent != null && Object.hasOwnProperty.call(message, "parent"))
+                                writer.uint32(/* id 1, wireType 2 =*/10).string(message.parent);
+                            if (message.filter != null && Object.hasOwnProperty.call(message, "filter"))
+                                writer.uint32(/* id 2, wireType 2 =*/18).string(message.filter);
+                            if (message.signalProductsFilters != null && message.signalProductsFilters.length)
+                                for (var i = 0; i < message.signalProductsFilters.length; ++i)
+                                    $root.google.cloud.databasecenter.v1beta.SignalProductsFilters.encode(message.signalProductsFilters[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+                            if (message.orderBy != null && Object.hasOwnProperty.call(message, "orderBy"))
+                                writer.uint32(/* id 4, wireType 2 =*/34).string(message.orderBy);
+                            if (message.pageSize != null && Object.hasOwnProperty.call(message, "pageSize"))
+                                writer.uint32(/* id 5, wireType 0 =*/40).int32(message.pageSize);
+                            if (message.pageToken != null && Object.hasOwnProperty.call(message, "pageToken"))
+                                writer.uint32(/* id 6, wireType 2 =*/50).string(message.pageToken);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified QueryIssuesRequest message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.QueryIssuesRequest.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesRequest
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IQueryIssuesRequest} message QueryIssuesRequest message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        QueryIssuesRequest.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a QueryIssuesRequest message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesRequest
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.QueryIssuesRequest} QueryIssuesRequest
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        QueryIssuesRequest.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.QueryIssuesRequest();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.parent = reader.string();
+                                        break;
+                                    }
+                                case 2: {
+                                        message.filter = reader.string();
+                                        break;
+                                    }
+                                case 3: {
+                                        if (!(message.signalProductsFilters && message.signalProductsFilters.length))
+                                            message.signalProductsFilters = [];
+                                        message.signalProductsFilters.push($root.google.cloud.databasecenter.v1beta.SignalProductsFilters.decode(reader, reader.uint32()));
+                                        break;
+                                    }
+                                case 4: {
+                                        message.orderBy = reader.string();
+                                        break;
+                                    }
+                                case 5: {
+                                        message.pageSize = reader.int32();
+                                        break;
+                                    }
+                                case 6: {
+                                        message.pageToken = reader.string();
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a QueryIssuesRequest message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesRequest
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.QueryIssuesRequest} QueryIssuesRequest
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        QueryIssuesRequest.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a QueryIssuesRequest message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesRequest
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        QueryIssuesRequest.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.parent != null && message.hasOwnProperty("parent"))
+                                if (!$util.isString(message.parent))
+                                    return "parent: string expected";
+                            if (message.filter != null && message.hasOwnProperty("filter"))
+                                if (!$util.isString(message.filter))
+                                    return "filter: string expected";
+                            if (message.signalProductsFilters != null && message.hasOwnProperty("signalProductsFilters")) {
+                                if (!Array.isArray(message.signalProductsFilters))
+                                    return "signalProductsFilters: array expected";
+                                for (var i = 0; i < message.signalProductsFilters.length; ++i) {
+                                    var error = $root.google.cloud.databasecenter.v1beta.SignalProductsFilters.verify(message.signalProductsFilters[i]);
+                                    if (error)
+                                        return "signalProductsFilters." + error;
+                                }
+                            }
+                            if (message.orderBy != null && message.hasOwnProperty("orderBy"))
+                                if (!$util.isString(message.orderBy))
+                                    return "orderBy: string expected";
+                            if (message.pageSize != null && message.hasOwnProperty("pageSize"))
+                                if (!$util.isInteger(message.pageSize))
+                                    return "pageSize: integer expected";
+                            if (message.pageToken != null && message.hasOwnProperty("pageToken"))
+                                if (!$util.isString(message.pageToken))
+                                    return "pageToken: string expected";
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a QueryIssuesRequest message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesRequest
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.QueryIssuesRequest} QueryIssuesRequest
+                         */
+                        QueryIssuesRequest.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.QueryIssuesRequest)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.QueryIssuesRequest();
+                            if (object.parent != null)
+                                message.parent = String(object.parent);
+                            if (object.filter != null)
+                                message.filter = String(object.filter);
+                            if (object.signalProductsFilters) {
+                                if (!Array.isArray(object.signalProductsFilters))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.QueryIssuesRequest.signalProductsFilters: array expected");
+                                message.signalProductsFilters = [];
+                                for (var i = 0; i < object.signalProductsFilters.length; ++i) {
+                                    if (typeof object.signalProductsFilters[i] !== "object")
+                                        throw TypeError(".google.cloud.databasecenter.v1beta.QueryIssuesRequest.signalProductsFilters: object expected");
+                                    message.signalProductsFilters[i] = $root.google.cloud.databasecenter.v1beta.SignalProductsFilters.fromObject(object.signalProductsFilters[i]);
+                                }
+                            }
+                            if (object.orderBy != null)
+                                message.orderBy = String(object.orderBy);
+                            if (object.pageSize != null)
+                                message.pageSize = object.pageSize | 0;
+                            if (object.pageToken != null)
+                                message.pageToken = String(object.pageToken);
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a QueryIssuesRequest message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesRequest
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.QueryIssuesRequest} message QueryIssuesRequest
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        QueryIssuesRequest.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.arrays || options.defaults)
+                                object.signalProductsFilters = [];
+                            if (options.defaults) {
+                                object.parent = "";
+                                object.filter = "";
+                                object.orderBy = "";
+                                object.pageSize = 0;
+                                object.pageToken = "";
+                            }
+                            if (message.parent != null && message.hasOwnProperty("parent"))
+                                object.parent = message.parent;
+                            if (message.filter != null && message.hasOwnProperty("filter"))
+                                object.filter = message.filter;
+                            if (message.signalProductsFilters && message.signalProductsFilters.length) {
+                                object.signalProductsFilters = [];
+                                for (var j = 0; j < message.signalProductsFilters.length; ++j)
+                                    object.signalProductsFilters[j] = $root.google.cloud.databasecenter.v1beta.SignalProductsFilters.toObject(message.signalProductsFilters[j], options);
+                            }
+                            if (message.orderBy != null && message.hasOwnProperty("orderBy"))
+                                object.orderBy = message.orderBy;
+                            if (message.pageSize != null && message.hasOwnProperty("pageSize"))
+                                object.pageSize = message.pageSize;
+                            if (message.pageToken != null && message.hasOwnProperty("pageToken"))
+                                object.pageToken = message.pageToken;
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this QueryIssuesRequest to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesRequest
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        QueryIssuesRequest.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for QueryIssuesRequest
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesRequest
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        QueryIssuesRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.QueryIssuesRequest";
+                        };
+    
+                        return QueryIssuesRequest;
+                    })();
+    
+                    v1beta.SignalProductsFilters = (function() {
+    
+                        /**
+                         * Properties of a SignalProductsFilters.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface ISignalProductsFilters
+                         * @property {google.cloud.databasecenter.v1beta.SignalType|null} [signalType] SignalProductsFilters signalType
+                         * @property {Array.<google.cloud.databasecenter.v1beta.IProduct>|null} [products] SignalProductsFilters products
+                         */
+    
+                        /**
+                         * Constructs a new SignalProductsFilters.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a SignalProductsFilters.
+                         * @implements ISignalProductsFilters
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.ISignalProductsFilters=} [properties] Properties to set
+                         */
+                        function SignalProductsFilters(properties) {
+                            this.products = [];
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * SignalProductsFilters signalType.
+                         * @member {google.cloud.databasecenter.v1beta.SignalType} signalType
+                         * @memberof google.cloud.databasecenter.v1beta.SignalProductsFilters
+                         * @instance
+                         */
+                        SignalProductsFilters.prototype.signalType = 0;
+    
+                        /**
+                         * SignalProductsFilters products.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.IProduct>} products
+                         * @memberof google.cloud.databasecenter.v1beta.SignalProductsFilters
+                         * @instance
+                         */
+                        SignalProductsFilters.prototype.products = $util.emptyArray;
+    
+                        /**
+                         * Creates a new SignalProductsFilters instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.SignalProductsFilters
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ISignalProductsFilters=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.SignalProductsFilters} SignalProductsFilters instance
+                         */
+                        SignalProductsFilters.create = function create(properties) {
+                            return new SignalProductsFilters(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified SignalProductsFilters message. Does not implicitly {@link google.cloud.databasecenter.v1beta.SignalProductsFilters.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.SignalProductsFilters
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ISignalProductsFilters} message SignalProductsFilters message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        SignalProductsFilters.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.signalType != null && Object.hasOwnProperty.call(message, "signalType"))
+                                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.signalType);
+                            if (message.products != null && message.products.length)
+                                for (var i = 0; i < message.products.length; ++i)
+                                    $root.google.cloud.databasecenter.v1beta.Product.encode(message.products[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified SignalProductsFilters message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.SignalProductsFilters.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.SignalProductsFilters
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ISignalProductsFilters} message SignalProductsFilters message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        SignalProductsFilters.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a SignalProductsFilters message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.SignalProductsFilters
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.SignalProductsFilters} SignalProductsFilters
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        SignalProductsFilters.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.SignalProductsFilters();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.signalType = reader.int32();
+                                        break;
+                                    }
+                                case 2: {
+                                        if (!(message.products && message.products.length))
+                                            message.products = [];
+                                        message.products.push($root.google.cloud.databasecenter.v1beta.Product.decode(reader, reader.uint32()));
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a SignalProductsFilters message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.SignalProductsFilters
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.SignalProductsFilters} SignalProductsFilters
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        SignalProductsFilters.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a SignalProductsFilters message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.SignalProductsFilters
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        SignalProductsFilters.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.signalType != null && message.hasOwnProperty("signalType"))
+                                switch (message.signalType) {
+                                default:
+                                    return "signalType: enum value expected";
+                                case 0:
+                                case 1:
+                                case 2:
+                                case 4:
+                                case 5:
+                                case 6:
+                                case 7:
+                                case 8:
+                                case 9:
+                                case 10:
+                                case 11:
+                                case 12:
+                                case 76:
+                                case 13:
+                                case 69:
+                                case 72:
+                                case 14:
+                                case 70:
+                                case 15:
+                                case 71:
+                                case 73:
+                                case 74:
+                                case 75:
+                                case 16:
+                                case 17:
+                                case 18:
+                                case 19:
+                                case 20:
+                                case 21:
+                                case 22:
+                                case 23:
+                                case 24:
+                                case 25:
+                                case 26:
+                                case 27:
+                                case 28:
+                                case 29:
+                                case 30:
+                                case 31:
+                                case 32:
+                                case 33:
+                                case 34:
+                                case 35:
+                                case 36:
+                                case 37:
+                                case 39:
+                                case 40:
+                                case 41:
+                                case 42:
+                                case 43:
+                                case 44:
+                                case 45:
+                                case 46:
+                                case 47:
+                                case 48:
+                                case 49:
+                                case 50:
+                                case 51:
+                                case 52:
+                                case 53:
+                                case 54:
+                                case 55:
+                                case 56:
+                                case 57:
+                                case 58:
+                                case 59:
+                                case 60:
+                                case 61:
+                                case 62:
+                                case 63:
+                                case 64:
+                                case 65:
+                                case 66:
+                                case 67:
+                                case 68:
+                                case 77:
+                                case 78:
+                                case 79:
+                                case 80:
+                                case 81:
+                                case 82:
+                                case 83:
+                                case 84:
+                                case 85:
+                                case 86:
+                                case 87:
+                                case 88:
+                                case 89:
+                                case 90:
+                                case 91:
+                                case 92:
+                                case 93:
+                                case 94:
+                                case 95:
+                                case 97:
+                                case 99:
+                                case 100:
+                                case 101:
+                                case 102:
+                                case 104:
+                                    break;
+                                }
+                            if (message.products != null && message.hasOwnProperty("products")) {
+                                if (!Array.isArray(message.products))
+                                    return "products: array expected";
+                                for (var i = 0; i < message.products.length; ++i) {
+                                    var error = $root.google.cloud.databasecenter.v1beta.Product.verify(message.products[i]);
+                                    if (error)
+                                        return "products." + error;
+                                }
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a SignalProductsFilters message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.SignalProductsFilters
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.SignalProductsFilters} SignalProductsFilters
+                         */
+                        SignalProductsFilters.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.SignalProductsFilters)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.SignalProductsFilters();
+                            switch (object.signalType) {
+                            default:
+                                if (typeof object.signalType === "number") {
+                                    message.signalType = object.signalType;
+                                    break;
+                                }
+                                break;
+                            case "SIGNAL_TYPE_UNSPECIFIED":
+                            case 0:
+                                message.signalType = 0;
+                                break;
+                            case "SIGNAL_TYPE_RESOURCE_FAILOVER_PROTECTED":
+                            case 1:
+                                message.signalType = 1;
+                                break;
+                            case "SIGNAL_TYPE_GROUP_MULTIREGIONAL":
+                            case 2:
+                                message.signalType = 2;
+                                break;
+                            case "SIGNAL_TYPE_NO_AUTOMATED_BACKUP_POLICY":
+                            case 4:
+                                message.signalType = 4;
+                                break;
+                            case "SIGNAL_TYPE_SHORT_BACKUP_RETENTION":
+                            case 5:
+                                message.signalType = 5;
+                                break;
+                            case "SIGNAL_TYPE_LAST_BACKUP_FAILED":
+                            case 6:
+                                message.signalType = 6;
+                                break;
+                            case "SIGNAL_TYPE_LAST_BACKUP_OLD":
+                            case 7:
+                                message.signalType = 7;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_2_0":
+                            case 8:
+                                message.signalType = 8;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_3":
+                            case 9:
+                                message.signalType = 9;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_2":
+                            case 10:
+                                message.signalType = 10;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_1":
+                            case 11:
+                                message.signalType = 11;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_0":
+                            case 12:
+                                message.signalType = 12;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_CONTROLS_V8_0":
+                            case 76:
+                                message.signalType = 76;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_NIST_800_53":
+                            case 13:
+                                message.signalType = 13;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_NIST_800_53_R5":
+                            case 69:
+                                message.signalType = 69;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_NIST_CYBERSECURITY_FRAMEWORK_V1_0":
+                            case 72:
+                                message.signalType = 72;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_ISO_27001":
+                            case 14:
+                                message.signalType = 14;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_ISO_27001_V2022":
+                            case 70:
+                                message.signalType = 70;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_PCI_DSS_V3_2_1":
+                            case 15:
+                                message.signalType = 15;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_PCI_DSS_V4_0":
+                            case 71:
+                                message.signalType = 71;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CLOUD_CONTROLS_MATRIX_V4":
+                            case 73:
+                                message.signalType = 73;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_HIPAA":
+                            case 74:
+                                message.signalType = 74;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_SOC2_V2017":
+                            case 75:
+                                message.signalType = 75;
+                                break;
+                            case "SIGNAL_TYPE_LOGS_NOT_OPTIMIZED_FOR_TROUBLESHOOTING":
+                            case 16:
+                                message.signalType = 16;
+                                break;
+                            case "SIGNAL_TYPE_QUERY_DURATIONS_NOT_LOGGED":
+                            case 17:
+                                message.signalType = 17;
+                                break;
+                            case "SIGNAL_TYPE_VERBOSE_ERROR_LOGGING":
+                            case 18:
+                                message.signalType = 18;
+                                break;
+                            case "SIGNAL_TYPE_QUERY_LOCK_WAITS_NOT_LOGGED":
+                            case 19:
+                                message.signalType = 19;
+                                break;
+                            case "SIGNAL_TYPE_LOGGING_MOST_ERRORS":
+                            case 20:
+                                message.signalType = 20;
+                                break;
+                            case "SIGNAL_TYPE_LOGGING_ONLY_CRITICAL_ERRORS":
+                            case 21:
+                                message.signalType = 21;
+                                break;
+                            case "SIGNAL_TYPE_MINIMAL_ERROR_LOGGING":
+                            case 22:
+                                message.signalType = 22;
+                                break;
+                            case "SIGNAL_TYPE_QUERY_STATS_LOGGED":
+                            case 23:
+                                message.signalType = 23;
+                                break;
+                            case "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_CLIENT_HOSTNAME":
+                            case 24:
+                                message.signalType = 24;
+                                break;
+                            case "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PARSER_STATS":
+                            case 25:
+                                message.signalType = 25;
+                                break;
+                            case "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PLANNER_STATS":
+                            case 26:
+                                message.signalType = 26;
+                                break;
+                            case "SIGNAL_TYPE_NOT_LOGGING_ONLY_DDL_STATEMENTS":
+                            case 27:
+                                message.signalType = 27;
+                                break;
+                            case "SIGNAL_TYPE_LOGGING_QUERY_STATS":
+                            case 28:
+                                message.signalType = 28;
+                                break;
+                            case "SIGNAL_TYPE_NOT_LOGGING_TEMPORARY_FILES":
+                            case 29:
+                                message.signalType = 29;
+                                break;
+                            case "SIGNAL_TYPE_CONNECTION_MAX_NOT_CONFIGURED":
+                            case 30:
+                                message.signalType = 30;
+                                break;
+                            case "SIGNAL_TYPE_USER_OPTIONS_CONFIGURED":
+                            case 31:
+                                message.signalType = 31;
+                                break;
+                            case "SIGNAL_TYPE_EXPOSED_TO_PUBLIC_ACCESS":
+                            case 32:
+                                message.signalType = 32;
+                                break;
+                            case "SIGNAL_TYPE_UNENCRYPTED_CONNECTIONS":
+                            case 33:
+                                message.signalType = 33;
+                                break;
+                            case "SIGNAL_TYPE_NO_ROOT_PASSWORD":
+                            case 34:
+                                message.signalType = 34;
+                                break;
+                            case "SIGNAL_TYPE_WEAK_ROOT_PASSWORD":
+                            case 35:
+                                message.signalType = 35;
+                                break;
+                            case "SIGNAL_TYPE_ENCRYPTION_KEY_NOT_CUSTOMER_MANAGED":
+                            case 36:
+                                message.signalType = 36;
+                                break;
+                            case "SIGNAL_TYPE_SERVER_AUTHENTICATION_NOT_REQUIRED":
+                            case 37:
+                                message.signalType = 37;
+                                break;
+                            case "SIGNAL_TYPE_EXPOSED_TO_EXTERNAL_SCRIPTS":
+                            case 39:
+                                message.signalType = 39;
+                                break;
+                            case "SIGNAL_TYPE_EXPOSED_TO_LOCAL_DATA_LOADS":
+                            case 40:
+                                message.signalType = 40;
+                                break;
+                            case "SIGNAL_TYPE_CONNECTION_ATTEMPTS_NOT_LOGGED":
+                            case 41:
+                                message.signalType = 41;
+                                break;
+                            case "SIGNAL_TYPE_DISCONNECTIONS_NOT_LOGGED":
+                            case 42:
+                                message.signalType = 42;
+                                break;
+                            case "SIGNAL_TYPE_LOGGING_EXCESSIVE_STATEMENT_INFO":
+                            case 43:
+                                message.signalType = 43;
+                                break;
+                            case "SIGNAL_TYPE_EXPOSED_TO_REMOTE_ACCESS":
+                            case 44:
+                                message.signalType = 44;
+                                break;
+                            case "SIGNAL_TYPE_DATABASE_NAMES_EXPOSED":
+                            case 45:
+                                message.signalType = 45;
+                                break;
+                            case "SIGNAL_TYPE_SENSITIVE_TRACE_INFO_NOT_MASKED":
+                            case 46:
+                                message.signalType = 46;
+                                break;
+                            case "SIGNAL_TYPE_PUBLIC_IP_ENABLED":
+                            case 47:
+                                message.signalType = 47;
+                                break;
+                            case "SIGNAL_TYPE_IDLE":
+                            case 48:
+                                message.signalType = 48;
+                                break;
+                            case "SIGNAL_TYPE_OVERPROVISIONED":
+                            case 49:
+                                message.signalType = 49;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_NUMBER_OF_OPEN_TABLES":
+                            case 50:
+                                message.signalType = 50;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_NUMBER_OF_TABLES":
+                            case 51:
+                                message.signalType = 51;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_TRANSACTION_ID_UTILIZATION":
+                            case 52:
+                                message.signalType = 52;
+                                break;
+                            case "SIGNAL_TYPE_UNDERPROVISIONED":
+                            case 53:
+                                message.signalType = 53;
+                                break;
+                            case "SIGNAL_TYPE_OUT_OF_DISK":
+                            case 54:
+                                message.signalType = 54;
+                                break;
+                            case "SIGNAL_TYPE_SERVER_CERTIFICATE_NEAR_EXPIRY":
+                            case 55:
+                                message.signalType = 55;
+                                break;
+                            case "SIGNAL_TYPE_DATABASE_AUDITING_DISABLED":
+                            case 56:
+                                message.signalType = 56;
+                                break;
+                            case "SIGNAL_TYPE_RESTRICT_AUTHORIZED_NETWORKS":
+                            case 57:
+                                message.signalType = 57;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATE_POLICY_RESTRICT_PUBLIC_IP":
+                            case 58:
+                                message.signalType = 58;
+                                break;
+                            case "SIGNAL_TYPE_QUOTA_LIMIT":
+                            case 59:
+                                message.signalType = 59;
+                                break;
+                            case "SIGNAL_TYPE_NO_PASSWORD_POLICY":
+                            case 60:
+                                message.signalType = 60;
+                                break;
+                            case "SIGNAL_TYPE_CONNECTIONS_PERFORMANCE_IMPACT":
+                            case 61:
+                                message.signalType = 61;
+                                break;
+                            case "SIGNAL_TYPE_TMP_TABLES_PERFORMANCE_IMPACT":
+                            case 62:
+                                message.signalType = 62;
+                                break;
+                            case "SIGNAL_TYPE_TRANS_LOGS_PERFORMANCE_IMPACT":
+                            case 63:
+                                message.signalType = 63;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_JOINS_WITHOUT_INDEXES":
+                            case 64:
+                                message.signalType = 64;
+                                break;
+                            case "SIGNAL_TYPE_SUPERUSER_WRITING_TO_USER_TABLES":
+                            case 65:
+                                message.signalType = 65;
+                                break;
+                            case "SIGNAL_TYPE_USER_GRANTED_ALL_PERMISSIONS":
+                            case 66:
+                                message.signalType = 66;
+                                break;
+                            case "SIGNAL_TYPE_DATA_EXPORT_TO_EXTERNAL_CLOUD_STORAGE_BUCKET":
+                            case 67:
+                                message.signalType = 67;
+                                break;
+                            case "SIGNAL_TYPE_DATA_EXPORT_TO_PUBLIC_CLOUD_STORAGE_BUCKET":
+                            case 68:
+                                message.signalType = 68;
+                                break;
+                            case "SIGNAL_TYPE_WEAK_PASSWORD_HASH_ALGORITHM":
+                            case 77:
+                                message.signalType = 77;
+                                break;
+                            case "SIGNAL_TYPE_NO_USER_PASSWORD_POLICY":
+                            case 78:
+                                message.signalType = 78;
+                                break;
+                            case "SIGNAL_TYPE_HOT_NODE":
+                            case 79:
+                                message.signalType = 79;
+                                break;
+                            case "SIGNAL_TYPE_NO_DELETION_PROTECTION":
+                            case 80:
+                                message.signalType = 80;
+                                break;
+                            case "SIGNAL_TYPE_NO_POINT_IN_TIME_RECOVERY":
+                            case 81:
+                                message.signalType = 81;
+                                break;
+                            case "SIGNAL_TYPE_RESOURCE_SUSPENDED":
+                            case 82:
+                                message.signalType = 82;
+                                break;
+                            case "SIGNAL_TYPE_EXPENSIVE_COMMANDS":
+                            case 83:
+                                message.signalType = 83;
+                                break;
+                            case "SIGNAL_TYPE_NO_MAINTENANCE_POLICY_CONFIGURED":
+                            case 84:
+                                message.signalType = 84;
+                                break;
+                            case "SIGNAL_TYPE_INEFFICIENT_QUERY":
+                            case 85:
+                                message.signalType = 85;
+                                break;
+                            case "SIGNAL_TYPE_READ_INTENSIVE_WORKLOAD":
+                            case 86:
+                                message.signalType = 86;
+                                break;
+                            case "SIGNAL_TYPE_MEMORY_LIMIT":
+                            case 87:
+                                message.signalType = 87;
+                                break;
+                            case "SIGNAL_TYPE_MAX_SERVER_MEMORY":
+                            case 88:
+                                message.signalType = 88;
+                                break;
+                            case "SIGNAL_TYPE_LARGE_ROWS":
+                            case 89:
+                                message.signalType = 89;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_WRITE_PRESSURE":
+                            case 90:
+                                message.signalType = 90;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_READ_PRESSURE":
+                            case 91:
+                                message.signalType = 91;
+                                break;
+                            case "SIGNAL_TYPE_ENCRYPTION_ORG_POLICY_NOT_SATISFIED":
+                            case 92:
+                                message.signalType = 92;
+                                break;
+                            case "SIGNAL_TYPE_LOCATION_ORG_POLICY_NOT_SATISFIED":
+                            case 93:
+                                message.signalType = 93;
+                                break;
+                            case "SIGNAL_TYPE_OUTDATED_MINOR_VERSION":
+                            case 94:
+                                message.signalType = 94;
+                                break;
+                            case "SIGNAL_TYPE_SCHEMA_NOT_OPTIMIZED":
+                            case 95:
+                                message.signalType = 95;
+                                break;
+                            case "SIGNAL_TYPE_REPLICATION_LAG":
+                            case 97:
+                                message.signalType = 97;
+                                break;
+                            case "SIGNAL_TYPE_OUTDATED_CLIENT":
+                            case 99:
+                                message.signalType = 99;
+                                break;
+                            case "SIGNAL_TYPE_DATABOOST_DISABLED":
+                            case 100:
+                                message.signalType = 100;
+                                break;
+                            case "SIGNAL_TYPE_RECOMMENDED_MAINTENANCE_POLICIES":
+                            case 101:
+                                message.signalType = 101;
+                                break;
+                            case "SIGNAL_TYPE_EXTENDED_SUPPORT":
+                            case 102:
+                                message.signalType = 102;
+                                break;
+                            case "SIGNAL_TYPE_VERSION_NEARING_END_OF_LIFE":
+                            case 104:
+                                message.signalType = 104;
+                                break;
+                            }
+                            if (object.products) {
+                                if (!Array.isArray(object.products))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.SignalProductsFilters.products: array expected");
+                                message.products = [];
+                                for (var i = 0; i < object.products.length; ++i) {
+                                    if (typeof object.products[i] !== "object")
+                                        throw TypeError(".google.cloud.databasecenter.v1beta.SignalProductsFilters.products: object expected");
+                                    message.products[i] = $root.google.cloud.databasecenter.v1beta.Product.fromObject(object.products[i]);
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a SignalProductsFilters message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.SignalProductsFilters
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.SignalProductsFilters} message SignalProductsFilters
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        SignalProductsFilters.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.arrays || options.defaults)
+                                object.products = [];
+                            if (options.defaults)
+                                object.signalType = options.enums === String ? "SIGNAL_TYPE_UNSPECIFIED" : 0;
+                            if (message.signalType != null && message.hasOwnProperty("signalType"))
+                                object.signalType = options.enums === String ? $root.google.cloud.databasecenter.v1beta.SignalType[message.signalType] === undefined ? message.signalType : $root.google.cloud.databasecenter.v1beta.SignalType[message.signalType] : message.signalType;
+                            if (message.products && message.products.length) {
+                                object.products = [];
+                                for (var j = 0; j < message.products.length; ++j)
+                                    object.products[j] = $root.google.cloud.databasecenter.v1beta.Product.toObject(message.products[j], options);
+                            }
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this SignalProductsFilters to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.SignalProductsFilters
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        SignalProductsFilters.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for SignalProductsFilters
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.SignalProductsFilters
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        SignalProductsFilters.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.SignalProductsFilters";
+                        };
+    
+                        return SignalProductsFilters;
+                    })();
+    
+                    v1beta.QueryIssuesResponse = (function() {
+    
+                        /**
+                         * Properties of a QueryIssuesResponse.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IQueryIssuesResponse
+                         * @property {Array.<google.cloud.databasecenter.v1beta.IDatabaseResourceIssue>|null} [resourceIssues] QueryIssuesResponse resourceIssues
+                         * @property {string|null} [nextPageToken] QueryIssuesResponse nextPageToken
+                         * @property {Array.<string>|null} [unreachable] QueryIssuesResponse unreachable
+                         */
+    
+                        /**
+                         * Constructs a new QueryIssuesResponse.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a QueryIssuesResponse.
+                         * @implements IQueryIssuesResponse
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IQueryIssuesResponse=} [properties] Properties to set
+                         */
+                        function QueryIssuesResponse(properties) {
+                            this.resourceIssues = [];
+                            this.unreachable = [];
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * QueryIssuesResponse resourceIssues.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.IDatabaseResourceIssue>} resourceIssues
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesResponse
+                         * @instance
+                         */
+                        QueryIssuesResponse.prototype.resourceIssues = $util.emptyArray;
+    
+                        /**
+                         * QueryIssuesResponse nextPageToken.
+                         * @member {string} nextPageToken
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesResponse
+                         * @instance
+                         */
+                        QueryIssuesResponse.prototype.nextPageToken = "";
+    
+                        /**
+                         * QueryIssuesResponse unreachable.
+                         * @member {Array.<string>} unreachable
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesResponse
+                         * @instance
+                         */
+                        QueryIssuesResponse.prototype.unreachable = $util.emptyArray;
+    
+                        /**
+                         * Creates a new QueryIssuesResponse instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesResponse
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IQueryIssuesResponse=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.QueryIssuesResponse} QueryIssuesResponse instance
+                         */
+                        QueryIssuesResponse.create = function create(properties) {
+                            return new QueryIssuesResponse(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified QueryIssuesResponse message. Does not implicitly {@link google.cloud.databasecenter.v1beta.QueryIssuesResponse.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesResponse
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IQueryIssuesResponse} message QueryIssuesResponse message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        QueryIssuesResponse.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.resourceIssues != null && message.resourceIssues.length)
+                                for (var i = 0; i < message.resourceIssues.length; ++i)
+                                    $root.google.cloud.databasecenter.v1beta.DatabaseResourceIssue.encode(message.resourceIssues[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                            if (message.nextPageToken != null && Object.hasOwnProperty.call(message, "nextPageToken"))
+                                writer.uint32(/* id 2, wireType 2 =*/18).string(message.nextPageToken);
+                            if (message.unreachable != null && message.unreachable.length)
+                                for (var i = 0; i < message.unreachable.length; ++i)
+                                    writer.uint32(/* id 3, wireType 2 =*/26).string(message.unreachable[i]);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified QueryIssuesResponse message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.QueryIssuesResponse.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesResponse
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IQueryIssuesResponse} message QueryIssuesResponse message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        QueryIssuesResponse.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a QueryIssuesResponse message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesResponse
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.QueryIssuesResponse} QueryIssuesResponse
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        QueryIssuesResponse.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.QueryIssuesResponse();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        if (!(message.resourceIssues && message.resourceIssues.length))
+                                            message.resourceIssues = [];
+                                        message.resourceIssues.push($root.google.cloud.databasecenter.v1beta.DatabaseResourceIssue.decode(reader, reader.uint32()));
+                                        break;
+                                    }
+                                case 2: {
+                                        message.nextPageToken = reader.string();
+                                        break;
+                                    }
+                                case 3: {
+                                        if (!(message.unreachable && message.unreachable.length))
+                                            message.unreachable = [];
+                                        message.unreachable.push(reader.string());
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a QueryIssuesResponse message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesResponse
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.QueryIssuesResponse} QueryIssuesResponse
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        QueryIssuesResponse.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a QueryIssuesResponse message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesResponse
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        QueryIssuesResponse.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.resourceIssues != null && message.hasOwnProperty("resourceIssues")) {
+                                if (!Array.isArray(message.resourceIssues))
+                                    return "resourceIssues: array expected";
+                                for (var i = 0; i < message.resourceIssues.length; ++i) {
+                                    var error = $root.google.cloud.databasecenter.v1beta.DatabaseResourceIssue.verify(message.resourceIssues[i]);
+                                    if (error)
+                                        return "resourceIssues." + error;
+                                }
+                            }
+                            if (message.nextPageToken != null && message.hasOwnProperty("nextPageToken"))
+                                if (!$util.isString(message.nextPageToken))
+                                    return "nextPageToken: string expected";
+                            if (message.unreachable != null && message.hasOwnProperty("unreachable")) {
+                                if (!Array.isArray(message.unreachable))
+                                    return "unreachable: array expected";
+                                for (var i = 0; i < message.unreachable.length; ++i)
+                                    if (!$util.isString(message.unreachable[i]))
+                                        return "unreachable: string[] expected";
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a QueryIssuesResponse message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesResponse
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.QueryIssuesResponse} QueryIssuesResponse
+                         */
+                        QueryIssuesResponse.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.QueryIssuesResponse)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.QueryIssuesResponse();
+                            if (object.resourceIssues) {
+                                if (!Array.isArray(object.resourceIssues))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.QueryIssuesResponse.resourceIssues: array expected");
+                                message.resourceIssues = [];
+                                for (var i = 0; i < object.resourceIssues.length; ++i) {
+                                    if (typeof object.resourceIssues[i] !== "object")
+                                        throw TypeError(".google.cloud.databasecenter.v1beta.QueryIssuesResponse.resourceIssues: object expected");
+                                    message.resourceIssues[i] = $root.google.cloud.databasecenter.v1beta.DatabaseResourceIssue.fromObject(object.resourceIssues[i]);
+                                }
+                            }
+                            if (object.nextPageToken != null)
+                                message.nextPageToken = String(object.nextPageToken);
+                            if (object.unreachable) {
+                                if (!Array.isArray(object.unreachable))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.QueryIssuesResponse.unreachable: array expected");
+                                message.unreachable = [];
+                                for (var i = 0; i < object.unreachable.length; ++i)
+                                    message.unreachable[i] = String(object.unreachable[i]);
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a QueryIssuesResponse message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesResponse
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.QueryIssuesResponse} message QueryIssuesResponse
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        QueryIssuesResponse.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.arrays || options.defaults) {
+                                object.resourceIssues = [];
+                                object.unreachable = [];
+                            }
+                            if (options.defaults)
+                                object.nextPageToken = "";
+                            if (message.resourceIssues && message.resourceIssues.length) {
+                                object.resourceIssues = [];
+                                for (var j = 0; j < message.resourceIssues.length; ++j)
+                                    object.resourceIssues[j] = $root.google.cloud.databasecenter.v1beta.DatabaseResourceIssue.toObject(message.resourceIssues[j], options);
+                            }
+                            if (message.nextPageToken != null && message.hasOwnProperty("nextPageToken"))
+                                object.nextPageToken = message.nextPageToken;
+                            if (message.unreachable && message.unreachable.length) {
+                                object.unreachable = [];
+                                for (var j = 0; j < message.unreachable.length; ++j)
+                                    object.unreachable[j] = message.unreachable[j];
+                            }
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this QueryIssuesResponse to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesResponse
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        QueryIssuesResponse.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for QueryIssuesResponse
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.QueryIssuesResponse
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        QueryIssuesResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.QueryIssuesResponse";
+                        };
+    
+                        return QueryIssuesResponse;
+                    })();
+    
+                    v1beta.DatabaseResourceIssue = (function() {
+    
+                        /**
+                         * Properties of a DatabaseResourceIssue.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IDatabaseResourceIssue
+                         * @property {google.cloud.databasecenter.v1beta.ISignal|null} [signal] DatabaseResourceIssue signal
+                         * @property {google.cloud.databasecenter.v1beta.IDatabaseResource|null} [resource] DatabaseResourceIssue resource
+                         */
+    
+                        /**
+                         * Constructs a new DatabaseResourceIssue.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a DatabaseResourceIssue.
+                         * @implements IDatabaseResourceIssue
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IDatabaseResourceIssue=} [properties] Properties to set
+                         */
+                        function DatabaseResourceIssue(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * DatabaseResourceIssue signal.
+                         * @member {google.cloud.databasecenter.v1beta.ISignal|null|undefined} signal
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResourceIssue
+                         * @instance
+                         */
+                        DatabaseResourceIssue.prototype.signal = null;
+    
+                        /**
+                         * DatabaseResourceIssue resource.
+                         * @member {google.cloud.databasecenter.v1beta.IDatabaseResource|null|undefined} resource
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResourceIssue
+                         * @instance
+                         */
+                        DatabaseResourceIssue.prototype.resource = null;
+    
+                        /**
+                         * Creates a new DatabaseResourceIssue instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResourceIssue
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IDatabaseResourceIssue=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.DatabaseResourceIssue} DatabaseResourceIssue instance
+                         */
+                        DatabaseResourceIssue.create = function create(properties) {
+                            return new DatabaseResourceIssue(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified DatabaseResourceIssue message. Does not implicitly {@link google.cloud.databasecenter.v1beta.DatabaseResourceIssue.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResourceIssue
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IDatabaseResourceIssue} message DatabaseResourceIssue message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        DatabaseResourceIssue.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.signal != null && Object.hasOwnProperty.call(message, "signal"))
+                                $root.google.cloud.databasecenter.v1beta.Signal.encode(message.signal, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                            if (message.resource != null && Object.hasOwnProperty.call(message, "resource"))
+                                $root.google.cloud.databasecenter.v1beta.DatabaseResource.encode(message.resource, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified DatabaseResourceIssue message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.DatabaseResourceIssue.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResourceIssue
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IDatabaseResourceIssue} message DatabaseResourceIssue message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        DatabaseResourceIssue.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a DatabaseResourceIssue message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResourceIssue
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.DatabaseResourceIssue} DatabaseResourceIssue
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        DatabaseResourceIssue.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.DatabaseResourceIssue();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.signal = $root.google.cloud.databasecenter.v1beta.Signal.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 2: {
+                                        message.resource = $root.google.cloud.databasecenter.v1beta.DatabaseResource.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a DatabaseResourceIssue message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResourceIssue
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.DatabaseResourceIssue} DatabaseResourceIssue
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        DatabaseResourceIssue.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a DatabaseResourceIssue message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResourceIssue
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        DatabaseResourceIssue.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.signal != null && message.hasOwnProperty("signal")) {
+                                var error = $root.google.cloud.databasecenter.v1beta.Signal.verify(message.signal);
+                                if (error)
+                                    return "signal." + error;
+                            }
+                            if (message.resource != null && message.hasOwnProperty("resource")) {
+                                var error = $root.google.cloud.databasecenter.v1beta.DatabaseResource.verify(message.resource);
+                                if (error)
+                                    return "resource." + error;
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a DatabaseResourceIssue message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResourceIssue
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.DatabaseResourceIssue} DatabaseResourceIssue
+                         */
+                        DatabaseResourceIssue.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.DatabaseResourceIssue)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.DatabaseResourceIssue();
+                            if (object.signal != null) {
+                                if (typeof object.signal !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.DatabaseResourceIssue.signal: object expected");
+                                message.signal = $root.google.cloud.databasecenter.v1beta.Signal.fromObject(object.signal);
+                            }
+                            if (object.resource != null) {
+                                if (typeof object.resource !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.DatabaseResourceIssue.resource: object expected");
+                                message.resource = $root.google.cloud.databasecenter.v1beta.DatabaseResource.fromObject(object.resource);
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a DatabaseResourceIssue message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResourceIssue
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.DatabaseResourceIssue} message DatabaseResourceIssue
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        DatabaseResourceIssue.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.defaults) {
+                                object.signal = null;
+                                object.resource = null;
+                            }
+                            if (message.signal != null && message.hasOwnProperty("signal"))
+                                object.signal = $root.google.cloud.databasecenter.v1beta.Signal.toObject(message.signal, options);
+                            if (message.resource != null && message.hasOwnProperty("resource"))
+                                object.resource = $root.google.cloud.databasecenter.v1beta.DatabaseResource.toObject(message.resource, options);
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this DatabaseResourceIssue to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResourceIssue
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        DatabaseResourceIssue.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for DatabaseResourceIssue
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.DatabaseResourceIssue
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        DatabaseResourceIssue.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.DatabaseResourceIssue";
+                        };
+    
+                        return DatabaseResourceIssue;
+                    })();
+    
+                    v1beta.Tag = (function() {
+    
+                        /**
+                         * Properties of a Tag.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface ITag
+                         * @property {string|null} [key] Tag key
+                         * @property {string|null} [value] Tag value
+                         * @property {string|null} [source] Tag source
+                         * @property {boolean|null} [inherited] Tag inherited
+                         */
+    
+                        /**
+                         * Constructs a new Tag.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a Tag.
+                         * @implements ITag
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.ITag=} [properties] Properties to set
+                         */
+                        function Tag(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * Tag key.
+                         * @member {string} key
+                         * @memberof google.cloud.databasecenter.v1beta.Tag
+                         * @instance
+                         */
+                        Tag.prototype.key = "";
+    
+                        /**
+                         * Tag value.
+                         * @member {string} value
+                         * @memberof google.cloud.databasecenter.v1beta.Tag
+                         * @instance
+                         */
+                        Tag.prototype.value = "";
+    
+                        /**
+                         * Tag source.
+                         * @member {string} source
+                         * @memberof google.cloud.databasecenter.v1beta.Tag
+                         * @instance
+                         */
+                        Tag.prototype.source = "";
+    
+                        /**
+                         * Tag inherited.
+                         * @member {boolean} inherited
+                         * @memberof google.cloud.databasecenter.v1beta.Tag
+                         * @instance
+                         */
+                        Tag.prototype.inherited = false;
+    
+                        /**
+                         * Creates a new Tag instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.Tag
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ITag=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.Tag} Tag instance
+                         */
+                        Tag.create = function create(properties) {
+                            return new Tag(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified Tag message. Does not implicitly {@link google.cloud.databasecenter.v1beta.Tag.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.Tag
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ITag} message Tag message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        Tag.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.key != null && Object.hasOwnProperty.call(message, "key"))
+                                writer.uint32(/* id 1, wireType 2 =*/10).string(message.key);
+                            if (message.value != null && Object.hasOwnProperty.call(message, "value"))
+                                writer.uint32(/* id 2, wireType 2 =*/18).string(message.value);
+                            if (message.source != null && Object.hasOwnProperty.call(message, "source"))
+                                writer.uint32(/* id 3, wireType 2 =*/26).string(message.source);
+                            if (message.inherited != null && Object.hasOwnProperty.call(message, "inherited"))
+                                writer.uint32(/* id 4, wireType 0 =*/32).bool(message.inherited);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified Tag message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.Tag.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.Tag
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ITag} message Tag message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        Tag.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a Tag message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.Tag
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.Tag} Tag
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        Tag.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.Tag();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.key = reader.string();
+                                        break;
+                                    }
+                                case 2: {
+                                        message.value = reader.string();
+                                        break;
+                                    }
+                                case 3: {
+                                        message.source = reader.string();
+                                        break;
+                                    }
+                                case 4: {
+                                        message.inherited = reader.bool();
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a Tag message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.Tag
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.Tag} Tag
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        Tag.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a Tag message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.Tag
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        Tag.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.key != null && message.hasOwnProperty("key"))
+                                if (!$util.isString(message.key))
+                                    return "key: string expected";
+                            if (message.value != null && message.hasOwnProperty("value"))
+                                if (!$util.isString(message.value))
+                                    return "value: string expected";
+                            if (message.source != null && message.hasOwnProperty("source"))
+                                if (!$util.isString(message.source))
+                                    return "source: string expected";
+                            if (message.inherited != null && message.hasOwnProperty("inherited"))
+                                if (typeof message.inherited !== "boolean")
+                                    return "inherited: boolean expected";
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a Tag message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.Tag
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.Tag} Tag
+                         */
+                        Tag.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.Tag)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.Tag();
+                            if (object.key != null)
+                                message.key = String(object.key);
+                            if (object.value != null)
+                                message.value = String(object.value);
+                            if (object.source != null)
+                                message.source = String(object.source);
+                            if (object.inherited != null)
+                                message.inherited = Boolean(object.inherited);
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a Tag message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.Tag
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.Tag} message Tag
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        Tag.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.defaults) {
+                                object.key = "";
+                                object.value = "";
+                                object.source = "";
+                                object.inherited = false;
+                            }
+                            if (message.key != null && message.hasOwnProperty("key"))
+                                object.key = message.key;
+                            if (message.value != null && message.hasOwnProperty("value"))
+                                object.value = message.value;
+                            if (message.source != null && message.hasOwnProperty("source"))
+                                object.source = message.source;
+                            if (message.inherited != null && message.hasOwnProperty("inherited"))
+                                object.inherited = message.inherited;
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this Tag to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.Tag
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        Tag.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for Tag
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.Tag
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        Tag.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.Tag";
+                        };
+    
+                        return Tag;
+                    })();
+    
+                    v1beta.ResourceDetails = (function() {
+    
+                        /**
+                         * Properties of a ResourceDetails.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IResourceDetails
+                         * @property {string|null} [fullResourceName] ResourceDetails fullResourceName
+                         * @property {string|null} [container] ResourceDetails container
+                         * @property {google.cloud.databasecenter.v1beta.IProduct|null} [product] ResourceDetails product
+                         * @property {string|null} [location] ResourceDetails location
+                         */
+    
+                        /**
+                         * Constructs a new ResourceDetails.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a ResourceDetails.
+                         * @implements IResourceDetails
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IResourceDetails=} [properties] Properties to set
+                         */
+                        function ResourceDetails(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * ResourceDetails fullResourceName.
+                         * @member {string} fullResourceName
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceDetails
+                         * @instance
+                         */
+                        ResourceDetails.prototype.fullResourceName = "";
+    
+                        /**
+                         * ResourceDetails container.
+                         * @member {string} container
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceDetails
+                         * @instance
+                         */
+                        ResourceDetails.prototype.container = "";
+    
+                        /**
+                         * ResourceDetails product.
+                         * @member {google.cloud.databasecenter.v1beta.IProduct|null|undefined} product
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceDetails
+                         * @instance
+                         */
+                        ResourceDetails.prototype.product = null;
+    
+                        /**
+                         * ResourceDetails location.
+                         * @member {string} location
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceDetails
+                         * @instance
+                         */
+                        ResourceDetails.prototype.location = "";
+    
+                        /**
+                         * Creates a new ResourceDetails instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceDetails
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IResourceDetails=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.ResourceDetails} ResourceDetails instance
+                         */
+                        ResourceDetails.create = function create(properties) {
+                            return new ResourceDetails(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified ResourceDetails message. Does not implicitly {@link google.cloud.databasecenter.v1beta.ResourceDetails.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceDetails
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IResourceDetails} message ResourceDetails message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        ResourceDetails.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.fullResourceName != null && Object.hasOwnProperty.call(message, "fullResourceName"))
+                                writer.uint32(/* id 1, wireType 2 =*/10).string(message.fullResourceName);
+                            if (message.container != null && Object.hasOwnProperty.call(message, "container"))
+                                writer.uint32(/* id 2, wireType 2 =*/18).string(message.container);
+                            if (message.product != null && Object.hasOwnProperty.call(message, "product"))
+                                $root.google.cloud.databasecenter.v1beta.Product.encode(message.product, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+                            if (message.location != null && Object.hasOwnProperty.call(message, "location"))
+                                writer.uint32(/* id 4, wireType 2 =*/34).string(message.location);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified ResourceDetails message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.ResourceDetails.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceDetails
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IResourceDetails} message ResourceDetails message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        ResourceDetails.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a ResourceDetails message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceDetails
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.ResourceDetails} ResourceDetails
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        ResourceDetails.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.ResourceDetails();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.fullResourceName = reader.string();
+                                        break;
+                                    }
+                                case 2: {
+                                        message.container = reader.string();
+                                        break;
+                                    }
+                                case 3: {
+                                        message.product = $root.google.cloud.databasecenter.v1beta.Product.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 4: {
+                                        message.location = reader.string();
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a ResourceDetails message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceDetails
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.ResourceDetails} ResourceDetails
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        ResourceDetails.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a ResourceDetails message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceDetails
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        ResourceDetails.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.fullResourceName != null && message.hasOwnProperty("fullResourceName"))
+                                if (!$util.isString(message.fullResourceName))
+                                    return "fullResourceName: string expected";
+                            if (message.container != null && message.hasOwnProperty("container"))
+                                if (!$util.isString(message.container))
+                                    return "container: string expected";
+                            if (message.product != null && message.hasOwnProperty("product")) {
+                                var error = $root.google.cloud.databasecenter.v1beta.Product.verify(message.product);
+                                if (error)
+                                    return "product." + error;
+                            }
+                            if (message.location != null && message.hasOwnProperty("location"))
+                                if (!$util.isString(message.location))
+                                    return "location: string expected";
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a ResourceDetails message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceDetails
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.ResourceDetails} ResourceDetails
+                         */
+                        ResourceDetails.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.ResourceDetails)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.ResourceDetails();
+                            if (object.fullResourceName != null)
+                                message.fullResourceName = String(object.fullResourceName);
+                            if (object.container != null)
+                                message.container = String(object.container);
+                            if (object.product != null) {
+                                if (typeof object.product !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.ResourceDetails.product: object expected");
+                                message.product = $root.google.cloud.databasecenter.v1beta.Product.fromObject(object.product);
+                            }
+                            if (object.location != null)
+                                message.location = String(object.location);
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a ResourceDetails message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceDetails
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ResourceDetails} message ResourceDetails
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        ResourceDetails.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.defaults) {
+                                object.fullResourceName = "";
+                                object.container = "";
+                                object.product = null;
+                                object.location = "";
+                            }
+                            if (message.fullResourceName != null && message.hasOwnProperty("fullResourceName"))
+                                object.fullResourceName = message.fullResourceName;
+                            if (message.container != null && message.hasOwnProperty("container"))
+                                object.container = message.container;
+                            if (message.product != null && message.hasOwnProperty("product"))
+                                object.product = $root.google.cloud.databasecenter.v1beta.Product.toObject(message.product, options);
+                            if (message.location != null && message.hasOwnProperty("location"))
+                                object.location = message.location;
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this ResourceDetails to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceDetails
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        ResourceDetails.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for ResourceDetails
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceDetails
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        ResourceDetails.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.ResourceDetails";
+                        };
+    
+                        return ResourceDetails;
+                    })();
+    
+                    v1beta.DeltaDetails = (function() {
+    
+                        /**
+                         * Properties of a DeltaDetails.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IDeltaDetails
+                         * @property {Array.<google.cloud.databasecenter.v1beta.IResourceDetails>|null} [increasedResources] DeltaDetails increasedResources
+                         * @property {Array.<google.cloud.databasecenter.v1beta.IResourceDetails>|null} [decreasedResources] DeltaDetails decreasedResources
+                         */
+    
+                        /**
+                         * Constructs a new DeltaDetails.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a DeltaDetails.
+                         * @implements IDeltaDetails
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IDeltaDetails=} [properties] Properties to set
+                         */
+                        function DeltaDetails(properties) {
+                            this.increasedResources = [];
+                            this.decreasedResources = [];
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * DeltaDetails increasedResources.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.IResourceDetails>} increasedResources
+                         * @memberof google.cloud.databasecenter.v1beta.DeltaDetails
+                         * @instance
+                         */
+                        DeltaDetails.prototype.increasedResources = $util.emptyArray;
+    
+                        /**
+                         * DeltaDetails decreasedResources.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.IResourceDetails>} decreasedResources
+                         * @memberof google.cloud.databasecenter.v1beta.DeltaDetails
+                         * @instance
+                         */
+                        DeltaDetails.prototype.decreasedResources = $util.emptyArray;
+    
+                        /**
+                         * Creates a new DeltaDetails instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.DeltaDetails
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IDeltaDetails=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.DeltaDetails} DeltaDetails instance
+                         */
+                        DeltaDetails.create = function create(properties) {
+                            return new DeltaDetails(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified DeltaDetails message. Does not implicitly {@link google.cloud.databasecenter.v1beta.DeltaDetails.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.DeltaDetails
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IDeltaDetails} message DeltaDetails message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        DeltaDetails.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.increasedResources != null && message.increasedResources.length)
+                                for (var i = 0; i < message.increasedResources.length; ++i)
+                                    $root.google.cloud.databasecenter.v1beta.ResourceDetails.encode(message.increasedResources[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                            if (message.decreasedResources != null && message.decreasedResources.length)
+                                for (var i = 0; i < message.decreasedResources.length; ++i)
+                                    $root.google.cloud.databasecenter.v1beta.ResourceDetails.encode(message.decreasedResources[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified DeltaDetails message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.DeltaDetails.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.DeltaDetails
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IDeltaDetails} message DeltaDetails message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        DeltaDetails.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a DeltaDetails message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.DeltaDetails
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.DeltaDetails} DeltaDetails
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        DeltaDetails.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.DeltaDetails();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        if (!(message.increasedResources && message.increasedResources.length))
+                                            message.increasedResources = [];
+                                        message.increasedResources.push($root.google.cloud.databasecenter.v1beta.ResourceDetails.decode(reader, reader.uint32()));
+                                        break;
+                                    }
+                                case 2: {
+                                        if (!(message.decreasedResources && message.decreasedResources.length))
+                                            message.decreasedResources = [];
+                                        message.decreasedResources.push($root.google.cloud.databasecenter.v1beta.ResourceDetails.decode(reader, reader.uint32()));
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a DeltaDetails message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.DeltaDetails
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.DeltaDetails} DeltaDetails
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        DeltaDetails.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a DeltaDetails message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.DeltaDetails
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        DeltaDetails.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.increasedResources != null && message.hasOwnProperty("increasedResources")) {
+                                if (!Array.isArray(message.increasedResources))
+                                    return "increasedResources: array expected";
+                                for (var i = 0; i < message.increasedResources.length; ++i) {
+                                    var error = $root.google.cloud.databasecenter.v1beta.ResourceDetails.verify(message.increasedResources[i]);
+                                    if (error)
+                                        return "increasedResources." + error;
+                                }
+                            }
+                            if (message.decreasedResources != null && message.hasOwnProperty("decreasedResources")) {
+                                if (!Array.isArray(message.decreasedResources))
+                                    return "decreasedResources: array expected";
+                                for (var i = 0; i < message.decreasedResources.length; ++i) {
+                                    var error = $root.google.cloud.databasecenter.v1beta.ResourceDetails.verify(message.decreasedResources[i]);
+                                    if (error)
+                                        return "decreasedResources." + error;
+                                }
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a DeltaDetails message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.DeltaDetails
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.DeltaDetails} DeltaDetails
+                         */
+                        DeltaDetails.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.DeltaDetails)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.DeltaDetails();
+                            if (object.increasedResources) {
+                                if (!Array.isArray(object.increasedResources))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.DeltaDetails.increasedResources: array expected");
+                                message.increasedResources = [];
+                                for (var i = 0; i < object.increasedResources.length; ++i) {
+                                    if (typeof object.increasedResources[i] !== "object")
+                                        throw TypeError(".google.cloud.databasecenter.v1beta.DeltaDetails.increasedResources: object expected");
+                                    message.increasedResources[i] = $root.google.cloud.databasecenter.v1beta.ResourceDetails.fromObject(object.increasedResources[i]);
+                                }
+                            }
+                            if (object.decreasedResources) {
+                                if (!Array.isArray(object.decreasedResources))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.DeltaDetails.decreasedResources: array expected");
+                                message.decreasedResources = [];
+                                for (var i = 0; i < object.decreasedResources.length; ++i) {
+                                    if (typeof object.decreasedResources[i] !== "object")
+                                        throw TypeError(".google.cloud.databasecenter.v1beta.DeltaDetails.decreasedResources: object expected");
+                                    message.decreasedResources[i] = $root.google.cloud.databasecenter.v1beta.ResourceDetails.fromObject(object.decreasedResources[i]);
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a DeltaDetails message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.DeltaDetails
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.DeltaDetails} message DeltaDetails
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        DeltaDetails.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.arrays || options.defaults) {
+                                object.increasedResources = [];
+                                object.decreasedResources = [];
+                            }
+                            if (message.increasedResources && message.increasedResources.length) {
+                                object.increasedResources = [];
+                                for (var j = 0; j < message.increasedResources.length; ++j)
+                                    object.increasedResources[j] = $root.google.cloud.databasecenter.v1beta.ResourceDetails.toObject(message.increasedResources[j], options);
+                            }
+                            if (message.decreasedResources && message.decreasedResources.length) {
+                                object.decreasedResources = [];
+                                for (var j = 0; j < message.decreasedResources.length; ++j)
+                                    object.decreasedResources[j] = $root.google.cloud.databasecenter.v1beta.ResourceDetails.toObject(message.decreasedResources[j], options);
+                            }
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this DeltaDetails to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.DeltaDetails
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        DeltaDetails.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for DeltaDetails
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.DeltaDetails
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        DeltaDetails.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.DeltaDetails";
+                        };
+    
+                        return DeltaDetails;
+                    })();
+    
+                    /**
+                     * SignalStatus enum.
+                     * @name google.cloud.databasecenter.v1beta.SignalStatus
+                     * @enum {number}
+                     * @property {number} SIGNAL_STATUS_UNSPECIFIED=0 SIGNAL_STATUS_UNSPECIFIED value
+                     * @property {number} SIGNAL_STATUS_NOT_APPLICABLE=1 SIGNAL_STATUS_NOT_APPLICABLE value
+                     * @property {number} SIGNAL_STATUS_OK=2 SIGNAL_STATUS_OK value
+                     * @property {number} SIGNAL_STATUS_ISSUE=3 SIGNAL_STATUS_ISSUE value
+                     * @property {number} SIGNAL_STATUS_NOT_ENABLED=4 SIGNAL_STATUS_NOT_ENABLED value
+                     */
+                    v1beta.SignalStatus = (function() {
+                        var valuesById = {}, values = Object.create(valuesById);
+                        values[valuesById[0] = "SIGNAL_STATUS_UNSPECIFIED"] = 0;
+                        values[valuesById[1] = "SIGNAL_STATUS_NOT_APPLICABLE"] = 1;
+                        values[valuesById[2] = "SIGNAL_STATUS_OK"] = 2;
+                        values[valuesById[3] = "SIGNAL_STATUS_ISSUE"] = 3;
+                        values[valuesById[4] = "SIGNAL_STATUS_NOT_ENABLED"] = 4;
+                        return values;
+                    })();
+    
+                    /**
+                     * SignalSource enum.
+                     * @name google.cloud.databasecenter.v1beta.SignalSource
+                     * @enum {number}
+                     * @property {number} SIGNAL_SOURCE_UNSPECIFIED=0 SIGNAL_SOURCE_UNSPECIFIED value
+                     * @property {number} SIGNAL_SOURCE_RESOURCE_METADATA=1 SIGNAL_SOURCE_RESOURCE_METADATA value
+                     * @property {number} SIGNAL_SOURCE_SECURITY_FINDINGS=2 SIGNAL_SOURCE_SECURITY_FINDINGS value
+                     * @property {number} SIGNAL_SOURCE_RECOMMENDER=3 SIGNAL_SOURCE_RECOMMENDER value
+                     * @property {number} SIGNAL_SOURCE_MODERN_OBSERVABILITY=4 SIGNAL_SOURCE_MODERN_OBSERVABILITY value
+                     */
+                    v1beta.SignalSource = (function() {
+                        var valuesById = {}, values = Object.create(valuesById);
+                        values[valuesById[0] = "SIGNAL_SOURCE_UNSPECIFIED"] = 0;
+                        values[valuesById[1] = "SIGNAL_SOURCE_RESOURCE_METADATA"] = 1;
+                        values[valuesById[2] = "SIGNAL_SOURCE_SECURITY_FINDINGS"] = 2;
+                        values[valuesById[3] = "SIGNAL_SOURCE_RECOMMENDER"] = 3;
+                        values[valuesById[4] = "SIGNAL_SOURCE_MODERN_OBSERVABILITY"] = 4;
+                        return values;
+                    })();
+    
+                    /**
+                     * IssueSeverity enum.
+                     * @name google.cloud.databasecenter.v1beta.IssueSeverity
+                     * @enum {number}
+                     * @property {number} ISSUE_SEVERITY_UNSPECIFIED=0 ISSUE_SEVERITY_UNSPECIFIED value
+                     * @property {number} ISSUE_SEVERITY_LOW=1 ISSUE_SEVERITY_LOW value
+                     * @property {number} ISSUE_SEVERITY_MEDIUM=2 ISSUE_SEVERITY_MEDIUM value
+                     * @property {number} ISSUE_SEVERITY_HIGH=3 ISSUE_SEVERITY_HIGH value
+                     * @property {number} ISSUE_SEVERITY_CRITICAL=4 ISSUE_SEVERITY_CRITICAL value
+                     * @property {number} ISSUE_SEVERITY_IRRELEVANT=5 ISSUE_SEVERITY_IRRELEVANT value
+                     */
+                    v1beta.IssueSeverity = (function() {
+                        var valuesById = {}, values = Object.create(valuesById);
+                        values[valuesById[0] = "ISSUE_SEVERITY_UNSPECIFIED"] = 0;
+                        values[valuesById[1] = "ISSUE_SEVERITY_LOW"] = 1;
+                        values[valuesById[2] = "ISSUE_SEVERITY_MEDIUM"] = 2;
+                        values[valuesById[3] = "ISSUE_SEVERITY_HIGH"] = 3;
+                        values[valuesById[4] = "ISSUE_SEVERITY_CRITICAL"] = 4;
+                        values[valuesById[5] = "ISSUE_SEVERITY_IRRELEVANT"] = 5;
+                        return values;
+                    })();
+    
+                    /**
+                     * SignalType enum.
+                     * @name google.cloud.databasecenter.v1beta.SignalType
+                     * @enum {number}
+                     * @property {number} SIGNAL_TYPE_UNSPECIFIED=0 SIGNAL_TYPE_UNSPECIFIED value
+                     * @property {number} SIGNAL_TYPE_RESOURCE_FAILOVER_PROTECTED=1 SIGNAL_TYPE_RESOURCE_FAILOVER_PROTECTED value
+                     * @property {number} SIGNAL_TYPE_GROUP_MULTIREGIONAL=2 SIGNAL_TYPE_GROUP_MULTIREGIONAL value
+                     * @property {number} SIGNAL_TYPE_NO_AUTOMATED_BACKUP_POLICY=4 SIGNAL_TYPE_NO_AUTOMATED_BACKUP_POLICY value
+                     * @property {number} SIGNAL_TYPE_SHORT_BACKUP_RETENTION=5 SIGNAL_TYPE_SHORT_BACKUP_RETENTION value
+                     * @property {number} SIGNAL_TYPE_LAST_BACKUP_FAILED=6 SIGNAL_TYPE_LAST_BACKUP_FAILED value
+                     * @property {number} SIGNAL_TYPE_LAST_BACKUP_OLD=7 SIGNAL_TYPE_LAST_BACKUP_OLD value
+                     * @property {number} SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_2_0=8 SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_2_0 value
+                     * @property {number} SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_3=9 SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_3 value
+                     * @property {number} SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_2=10 SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_2 value
+                     * @property {number} SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_1=11 SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_1 value
+                     * @property {number} SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_0=12 SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_0 value
+                     * @property {number} SIGNAL_TYPE_VIOLATES_CIS_CONTROLS_V8_0=76 SIGNAL_TYPE_VIOLATES_CIS_CONTROLS_V8_0 value
+                     * @property {number} SIGNAL_TYPE_VIOLATES_NIST_800_53=13 SIGNAL_TYPE_VIOLATES_NIST_800_53 value
+                     * @property {number} SIGNAL_TYPE_VIOLATES_NIST_800_53_R5=69 SIGNAL_TYPE_VIOLATES_NIST_800_53_R5 value
+                     * @property {number} SIGNAL_TYPE_VIOLATES_NIST_CYBERSECURITY_FRAMEWORK_V1_0=72 SIGNAL_TYPE_VIOLATES_NIST_CYBERSECURITY_FRAMEWORK_V1_0 value
+                     * @property {number} SIGNAL_TYPE_VIOLATES_ISO_27001=14 SIGNAL_TYPE_VIOLATES_ISO_27001 value
+                     * @property {number} SIGNAL_TYPE_VIOLATES_ISO_27001_V2022=70 SIGNAL_TYPE_VIOLATES_ISO_27001_V2022 value
+                     * @property {number} SIGNAL_TYPE_VIOLATES_PCI_DSS_V3_2_1=15 SIGNAL_TYPE_VIOLATES_PCI_DSS_V3_2_1 value
+                     * @property {number} SIGNAL_TYPE_VIOLATES_PCI_DSS_V4_0=71 SIGNAL_TYPE_VIOLATES_PCI_DSS_V4_0 value
+                     * @property {number} SIGNAL_TYPE_VIOLATES_CLOUD_CONTROLS_MATRIX_V4=73 SIGNAL_TYPE_VIOLATES_CLOUD_CONTROLS_MATRIX_V4 value
+                     * @property {number} SIGNAL_TYPE_VIOLATES_HIPAA=74 SIGNAL_TYPE_VIOLATES_HIPAA value
+                     * @property {number} SIGNAL_TYPE_VIOLATES_SOC2_V2017=75 SIGNAL_TYPE_VIOLATES_SOC2_V2017 value
+                     * @property {number} SIGNAL_TYPE_LOGS_NOT_OPTIMIZED_FOR_TROUBLESHOOTING=16 SIGNAL_TYPE_LOGS_NOT_OPTIMIZED_FOR_TROUBLESHOOTING value
+                     * @property {number} SIGNAL_TYPE_QUERY_DURATIONS_NOT_LOGGED=17 SIGNAL_TYPE_QUERY_DURATIONS_NOT_LOGGED value
+                     * @property {number} SIGNAL_TYPE_VERBOSE_ERROR_LOGGING=18 SIGNAL_TYPE_VERBOSE_ERROR_LOGGING value
+                     * @property {number} SIGNAL_TYPE_QUERY_LOCK_WAITS_NOT_LOGGED=19 SIGNAL_TYPE_QUERY_LOCK_WAITS_NOT_LOGGED value
+                     * @property {number} SIGNAL_TYPE_LOGGING_MOST_ERRORS=20 SIGNAL_TYPE_LOGGING_MOST_ERRORS value
+                     * @property {number} SIGNAL_TYPE_LOGGING_ONLY_CRITICAL_ERRORS=21 SIGNAL_TYPE_LOGGING_ONLY_CRITICAL_ERRORS value
+                     * @property {number} SIGNAL_TYPE_MINIMAL_ERROR_LOGGING=22 SIGNAL_TYPE_MINIMAL_ERROR_LOGGING value
+                     * @property {number} SIGNAL_TYPE_QUERY_STATS_LOGGED=23 SIGNAL_TYPE_QUERY_STATS_LOGGED value
+                     * @property {number} SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_CLIENT_HOSTNAME=24 SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_CLIENT_HOSTNAME value
+                     * @property {number} SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PARSER_STATS=25 SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PARSER_STATS value
+                     * @property {number} SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PLANNER_STATS=26 SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PLANNER_STATS value
+                     * @property {number} SIGNAL_TYPE_NOT_LOGGING_ONLY_DDL_STATEMENTS=27 SIGNAL_TYPE_NOT_LOGGING_ONLY_DDL_STATEMENTS value
+                     * @property {number} SIGNAL_TYPE_LOGGING_QUERY_STATS=28 SIGNAL_TYPE_LOGGING_QUERY_STATS value
+                     * @property {number} SIGNAL_TYPE_NOT_LOGGING_TEMPORARY_FILES=29 SIGNAL_TYPE_NOT_LOGGING_TEMPORARY_FILES value
+                     * @property {number} SIGNAL_TYPE_CONNECTION_MAX_NOT_CONFIGURED=30 SIGNAL_TYPE_CONNECTION_MAX_NOT_CONFIGURED value
+                     * @property {number} SIGNAL_TYPE_USER_OPTIONS_CONFIGURED=31 SIGNAL_TYPE_USER_OPTIONS_CONFIGURED value
+                     * @property {number} SIGNAL_TYPE_EXPOSED_TO_PUBLIC_ACCESS=32 SIGNAL_TYPE_EXPOSED_TO_PUBLIC_ACCESS value
+                     * @property {number} SIGNAL_TYPE_UNENCRYPTED_CONNECTIONS=33 SIGNAL_TYPE_UNENCRYPTED_CONNECTIONS value
+                     * @property {number} SIGNAL_TYPE_NO_ROOT_PASSWORD=34 SIGNAL_TYPE_NO_ROOT_PASSWORD value
+                     * @property {number} SIGNAL_TYPE_WEAK_ROOT_PASSWORD=35 SIGNAL_TYPE_WEAK_ROOT_PASSWORD value
+                     * @property {number} SIGNAL_TYPE_ENCRYPTION_KEY_NOT_CUSTOMER_MANAGED=36 SIGNAL_TYPE_ENCRYPTION_KEY_NOT_CUSTOMER_MANAGED value
+                     * @property {number} SIGNAL_TYPE_SERVER_AUTHENTICATION_NOT_REQUIRED=37 SIGNAL_TYPE_SERVER_AUTHENTICATION_NOT_REQUIRED value
+                     * @property {number} SIGNAL_TYPE_EXPOSED_TO_EXTERNAL_SCRIPTS=39 SIGNAL_TYPE_EXPOSED_TO_EXTERNAL_SCRIPTS value
+                     * @property {number} SIGNAL_TYPE_EXPOSED_TO_LOCAL_DATA_LOADS=40 SIGNAL_TYPE_EXPOSED_TO_LOCAL_DATA_LOADS value
+                     * @property {number} SIGNAL_TYPE_CONNECTION_ATTEMPTS_NOT_LOGGED=41 SIGNAL_TYPE_CONNECTION_ATTEMPTS_NOT_LOGGED value
+                     * @property {number} SIGNAL_TYPE_DISCONNECTIONS_NOT_LOGGED=42 SIGNAL_TYPE_DISCONNECTIONS_NOT_LOGGED value
+                     * @property {number} SIGNAL_TYPE_LOGGING_EXCESSIVE_STATEMENT_INFO=43 SIGNAL_TYPE_LOGGING_EXCESSIVE_STATEMENT_INFO value
+                     * @property {number} SIGNAL_TYPE_EXPOSED_TO_REMOTE_ACCESS=44 SIGNAL_TYPE_EXPOSED_TO_REMOTE_ACCESS value
+                     * @property {number} SIGNAL_TYPE_DATABASE_NAMES_EXPOSED=45 SIGNAL_TYPE_DATABASE_NAMES_EXPOSED value
+                     * @property {number} SIGNAL_TYPE_SENSITIVE_TRACE_INFO_NOT_MASKED=46 SIGNAL_TYPE_SENSITIVE_TRACE_INFO_NOT_MASKED value
+                     * @property {number} SIGNAL_TYPE_PUBLIC_IP_ENABLED=47 SIGNAL_TYPE_PUBLIC_IP_ENABLED value
+                     * @property {number} SIGNAL_TYPE_IDLE=48 SIGNAL_TYPE_IDLE value
+                     * @property {number} SIGNAL_TYPE_OVERPROVISIONED=49 SIGNAL_TYPE_OVERPROVISIONED value
+                     * @property {number} SIGNAL_TYPE_HIGH_NUMBER_OF_OPEN_TABLES=50 SIGNAL_TYPE_HIGH_NUMBER_OF_OPEN_TABLES value
+                     * @property {number} SIGNAL_TYPE_HIGH_NUMBER_OF_TABLES=51 SIGNAL_TYPE_HIGH_NUMBER_OF_TABLES value
+                     * @property {number} SIGNAL_TYPE_HIGH_TRANSACTION_ID_UTILIZATION=52 SIGNAL_TYPE_HIGH_TRANSACTION_ID_UTILIZATION value
+                     * @property {number} SIGNAL_TYPE_UNDERPROVISIONED=53 SIGNAL_TYPE_UNDERPROVISIONED value
+                     * @property {number} SIGNAL_TYPE_OUT_OF_DISK=54 SIGNAL_TYPE_OUT_OF_DISK value
+                     * @property {number} SIGNAL_TYPE_SERVER_CERTIFICATE_NEAR_EXPIRY=55 SIGNAL_TYPE_SERVER_CERTIFICATE_NEAR_EXPIRY value
+                     * @property {number} SIGNAL_TYPE_DATABASE_AUDITING_DISABLED=56 SIGNAL_TYPE_DATABASE_AUDITING_DISABLED value
+                     * @property {number} SIGNAL_TYPE_RESTRICT_AUTHORIZED_NETWORKS=57 SIGNAL_TYPE_RESTRICT_AUTHORIZED_NETWORKS value
+                     * @property {number} SIGNAL_TYPE_VIOLATE_POLICY_RESTRICT_PUBLIC_IP=58 SIGNAL_TYPE_VIOLATE_POLICY_RESTRICT_PUBLIC_IP value
+                     * @property {number} SIGNAL_TYPE_QUOTA_LIMIT=59 SIGNAL_TYPE_QUOTA_LIMIT value
+                     * @property {number} SIGNAL_TYPE_NO_PASSWORD_POLICY=60 SIGNAL_TYPE_NO_PASSWORD_POLICY value
+                     * @property {number} SIGNAL_TYPE_CONNECTIONS_PERFORMANCE_IMPACT=61 SIGNAL_TYPE_CONNECTIONS_PERFORMANCE_IMPACT value
+                     * @property {number} SIGNAL_TYPE_TMP_TABLES_PERFORMANCE_IMPACT=62 SIGNAL_TYPE_TMP_TABLES_PERFORMANCE_IMPACT value
+                     * @property {number} SIGNAL_TYPE_TRANS_LOGS_PERFORMANCE_IMPACT=63 SIGNAL_TYPE_TRANS_LOGS_PERFORMANCE_IMPACT value
+                     * @property {number} SIGNAL_TYPE_HIGH_JOINS_WITHOUT_INDEXES=64 SIGNAL_TYPE_HIGH_JOINS_WITHOUT_INDEXES value
+                     * @property {number} SIGNAL_TYPE_SUPERUSER_WRITING_TO_USER_TABLES=65 SIGNAL_TYPE_SUPERUSER_WRITING_TO_USER_TABLES value
+                     * @property {number} SIGNAL_TYPE_USER_GRANTED_ALL_PERMISSIONS=66 SIGNAL_TYPE_USER_GRANTED_ALL_PERMISSIONS value
+                     * @property {number} SIGNAL_TYPE_DATA_EXPORT_TO_EXTERNAL_CLOUD_STORAGE_BUCKET=67 SIGNAL_TYPE_DATA_EXPORT_TO_EXTERNAL_CLOUD_STORAGE_BUCKET value
+                     * @property {number} SIGNAL_TYPE_DATA_EXPORT_TO_PUBLIC_CLOUD_STORAGE_BUCKET=68 SIGNAL_TYPE_DATA_EXPORT_TO_PUBLIC_CLOUD_STORAGE_BUCKET value
+                     * @property {number} SIGNAL_TYPE_WEAK_PASSWORD_HASH_ALGORITHM=77 SIGNAL_TYPE_WEAK_PASSWORD_HASH_ALGORITHM value
+                     * @property {number} SIGNAL_TYPE_NO_USER_PASSWORD_POLICY=78 SIGNAL_TYPE_NO_USER_PASSWORD_POLICY value
+                     * @property {number} SIGNAL_TYPE_HOT_NODE=79 SIGNAL_TYPE_HOT_NODE value
+                     * @property {number} SIGNAL_TYPE_NO_DELETION_PROTECTION=80 SIGNAL_TYPE_NO_DELETION_PROTECTION value
+                     * @property {number} SIGNAL_TYPE_NO_POINT_IN_TIME_RECOVERY=81 SIGNAL_TYPE_NO_POINT_IN_TIME_RECOVERY value
+                     * @property {number} SIGNAL_TYPE_RESOURCE_SUSPENDED=82 SIGNAL_TYPE_RESOURCE_SUSPENDED value
+                     * @property {number} SIGNAL_TYPE_EXPENSIVE_COMMANDS=83 SIGNAL_TYPE_EXPENSIVE_COMMANDS value
+                     * @property {number} SIGNAL_TYPE_NO_MAINTENANCE_POLICY_CONFIGURED=84 SIGNAL_TYPE_NO_MAINTENANCE_POLICY_CONFIGURED value
+                     * @property {number} SIGNAL_TYPE_INEFFICIENT_QUERY=85 SIGNAL_TYPE_INEFFICIENT_QUERY value
+                     * @property {number} SIGNAL_TYPE_READ_INTENSIVE_WORKLOAD=86 SIGNAL_TYPE_READ_INTENSIVE_WORKLOAD value
+                     * @property {number} SIGNAL_TYPE_MEMORY_LIMIT=87 SIGNAL_TYPE_MEMORY_LIMIT value
+                     * @property {number} SIGNAL_TYPE_MAX_SERVER_MEMORY=88 SIGNAL_TYPE_MAX_SERVER_MEMORY value
+                     * @property {number} SIGNAL_TYPE_LARGE_ROWS=89 SIGNAL_TYPE_LARGE_ROWS value
+                     * @property {number} SIGNAL_TYPE_HIGH_WRITE_PRESSURE=90 SIGNAL_TYPE_HIGH_WRITE_PRESSURE value
+                     * @property {number} SIGNAL_TYPE_HIGH_READ_PRESSURE=91 SIGNAL_TYPE_HIGH_READ_PRESSURE value
+                     * @property {number} SIGNAL_TYPE_ENCRYPTION_ORG_POLICY_NOT_SATISFIED=92 SIGNAL_TYPE_ENCRYPTION_ORG_POLICY_NOT_SATISFIED value
+                     * @property {number} SIGNAL_TYPE_LOCATION_ORG_POLICY_NOT_SATISFIED=93 SIGNAL_TYPE_LOCATION_ORG_POLICY_NOT_SATISFIED value
+                     * @property {number} SIGNAL_TYPE_OUTDATED_MINOR_VERSION=94 SIGNAL_TYPE_OUTDATED_MINOR_VERSION value
+                     * @property {number} SIGNAL_TYPE_SCHEMA_NOT_OPTIMIZED=95 SIGNAL_TYPE_SCHEMA_NOT_OPTIMIZED value
+                     * @property {number} SIGNAL_TYPE_REPLICATION_LAG=97 SIGNAL_TYPE_REPLICATION_LAG value
+                     * @property {number} SIGNAL_TYPE_OUTDATED_CLIENT=99 SIGNAL_TYPE_OUTDATED_CLIENT value
+                     * @property {number} SIGNAL_TYPE_DATABOOST_DISABLED=100 SIGNAL_TYPE_DATABOOST_DISABLED value
+                     * @property {number} SIGNAL_TYPE_RECOMMENDED_MAINTENANCE_POLICIES=101 SIGNAL_TYPE_RECOMMENDED_MAINTENANCE_POLICIES value
+                     * @property {number} SIGNAL_TYPE_EXTENDED_SUPPORT=102 SIGNAL_TYPE_EXTENDED_SUPPORT value
+                     * @property {number} SIGNAL_TYPE_VERSION_NEARING_END_OF_LIFE=104 SIGNAL_TYPE_VERSION_NEARING_END_OF_LIFE value
+                     */
+                    v1beta.SignalType = (function() {
+                        var valuesById = {}, values = Object.create(valuesById);
+                        values[valuesById[0] = "SIGNAL_TYPE_UNSPECIFIED"] = 0;
+                        values[valuesById[1] = "SIGNAL_TYPE_RESOURCE_FAILOVER_PROTECTED"] = 1;
+                        values[valuesById[2] = "SIGNAL_TYPE_GROUP_MULTIREGIONAL"] = 2;
+                        values[valuesById[4] = "SIGNAL_TYPE_NO_AUTOMATED_BACKUP_POLICY"] = 4;
+                        values[valuesById[5] = "SIGNAL_TYPE_SHORT_BACKUP_RETENTION"] = 5;
+                        values[valuesById[6] = "SIGNAL_TYPE_LAST_BACKUP_FAILED"] = 6;
+                        values[valuesById[7] = "SIGNAL_TYPE_LAST_BACKUP_OLD"] = 7;
+                        values[valuesById[8] = "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_2_0"] = 8;
+                        values[valuesById[9] = "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_3"] = 9;
+                        values[valuesById[10] = "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_2"] = 10;
+                        values[valuesById[11] = "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_1"] = 11;
+                        values[valuesById[12] = "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_0"] = 12;
+                        values[valuesById[76] = "SIGNAL_TYPE_VIOLATES_CIS_CONTROLS_V8_0"] = 76;
+                        values[valuesById[13] = "SIGNAL_TYPE_VIOLATES_NIST_800_53"] = 13;
+                        values[valuesById[69] = "SIGNAL_TYPE_VIOLATES_NIST_800_53_R5"] = 69;
+                        values[valuesById[72] = "SIGNAL_TYPE_VIOLATES_NIST_CYBERSECURITY_FRAMEWORK_V1_0"] = 72;
+                        values[valuesById[14] = "SIGNAL_TYPE_VIOLATES_ISO_27001"] = 14;
+                        values[valuesById[70] = "SIGNAL_TYPE_VIOLATES_ISO_27001_V2022"] = 70;
+                        values[valuesById[15] = "SIGNAL_TYPE_VIOLATES_PCI_DSS_V3_2_1"] = 15;
+                        values[valuesById[71] = "SIGNAL_TYPE_VIOLATES_PCI_DSS_V4_0"] = 71;
+                        values[valuesById[73] = "SIGNAL_TYPE_VIOLATES_CLOUD_CONTROLS_MATRIX_V4"] = 73;
+                        values[valuesById[74] = "SIGNAL_TYPE_VIOLATES_HIPAA"] = 74;
+                        values[valuesById[75] = "SIGNAL_TYPE_VIOLATES_SOC2_V2017"] = 75;
+                        values[valuesById[16] = "SIGNAL_TYPE_LOGS_NOT_OPTIMIZED_FOR_TROUBLESHOOTING"] = 16;
+                        values[valuesById[17] = "SIGNAL_TYPE_QUERY_DURATIONS_NOT_LOGGED"] = 17;
+                        values[valuesById[18] = "SIGNAL_TYPE_VERBOSE_ERROR_LOGGING"] = 18;
+                        values[valuesById[19] = "SIGNAL_TYPE_QUERY_LOCK_WAITS_NOT_LOGGED"] = 19;
+                        values[valuesById[20] = "SIGNAL_TYPE_LOGGING_MOST_ERRORS"] = 20;
+                        values[valuesById[21] = "SIGNAL_TYPE_LOGGING_ONLY_CRITICAL_ERRORS"] = 21;
+                        values[valuesById[22] = "SIGNAL_TYPE_MINIMAL_ERROR_LOGGING"] = 22;
+                        values[valuesById[23] = "SIGNAL_TYPE_QUERY_STATS_LOGGED"] = 23;
+                        values[valuesById[24] = "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_CLIENT_HOSTNAME"] = 24;
+                        values[valuesById[25] = "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PARSER_STATS"] = 25;
+                        values[valuesById[26] = "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PLANNER_STATS"] = 26;
+                        values[valuesById[27] = "SIGNAL_TYPE_NOT_LOGGING_ONLY_DDL_STATEMENTS"] = 27;
+                        values[valuesById[28] = "SIGNAL_TYPE_LOGGING_QUERY_STATS"] = 28;
+                        values[valuesById[29] = "SIGNAL_TYPE_NOT_LOGGING_TEMPORARY_FILES"] = 29;
+                        values[valuesById[30] = "SIGNAL_TYPE_CONNECTION_MAX_NOT_CONFIGURED"] = 30;
+                        values[valuesById[31] = "SIGNAL_TYPE_USER_OPTIONS_CONFIGURED"] = 31;
+                        values[valuesById[32] = "SIGNAL_TYPE_EXPOSED_TO_PUBLIC_ACCESS"] = 32;
+                        values[valuesById[33] = "SIGNAL_TYPE_UNENCRYPTED_CONNECTIONS"] = 33;
+                        values[valuesById[34] = "SIGNAL_TYPE_NO_ROOT_PASSWORD"] = 34;
+                        values[valuesById[35] = "SIGNAL_TYPE_WEAK_ROOT_PASSWORD"] = 35;
+                        values[valuesById[36] = "SIGNAL_TYPE_ENCRYPTION_KEY_NOT_CUSTOMER_MANAGED"] = 36;
+                        values[valuesById[37] = "SIGNAL_TYPE_SERVER_AUTHENTICATION_NOT_REQUIRED"] = 37;
+                        values[valuesById[39] = "SIGNAL_TYPE_EXPOSED_TO_EXTERNAL_SCRIPTS"] = 39;
+                        values[valuesById[40] = "SIGNAL_TYPE_EXPOSED_TO_LOCAL_DATA_LOADS"] = 40;
+                        values[valuesById[41] = "SIGNAL_TYPE_CONNECTION_ATTEMPTS_NOT_LOGGED"] = 41;
+                        values[valuesById[42] = "SIGNAL_TYPE_DISCONNECTIONS_NOT_LOGGED"] = 42;
+                        values[valuesById[43] = "SIGNAL_TYPE_LOGGING_EXCESSIVE_STATEMENT_INFO"] = 43;
+                        values[valuesById[44] = "SIGNAL_TYPE_EXPOSED_TO_REMOTE_ACCESS"] = 44;
+                        values[valuesById[45] = "SIGNAL_TYPE_DATABASE_NAMES_EXPOSED"] = 45;
+                        values[valuesById[46] = "SIGNAL_TYPE_SENSITIVE_TRACE_INFO_NOT_MASKED"] = 46;
+                        values[valuesById[47] = "SIGNAL_TYPE_PUBLIC_IP_ENABLED"] = 47;
+                        values[valuesById[48] = "SIGNAL_TYPE_IDLE"] = 48;
+                        values[valuesById[49] = "SIGNAL_TYPE_OVERPROVISIONED"] = 49;
+                        values[valuesById[50] = "SIGNAL_TYPE_HIGH_NUMBER_OF_OPEN_TABLES"] = 50;
+                        values[valuesById[51] = "SIGNAL_TYPE_HIGH_NUMBER_OF_TABLES"] = 51;
+                        values[valuesById[52] = "SIGNAL_TYPE_HIGH_TRANSACTION_ID_UTILIZATION"] = 52;
+                        values[valuesById[53] = "SIGNAL_TYPE_UNDERPROVISIONED"] = 53;
+                        values[valuesById[54] = "SIGNAL_TYPE_OUT_OF_DISK"] = 54;
+                        values[valuesById[55] = "SIGNAL_TYPE_SERVER_CERTIFICATE_NEAR_EXPIRY"] = 55;
+                        values[valuesById[56] = "SIGNAL_TYPE_DATABASE_AUDITING_DISABLED"] = 56;
+                        values[valuesById[57] = "SIGNAL_TYPE_RESTRICT_AUTHORIZED_NETWORKS"] = 57;
+                        values[valuesById[58] = "SIGNAL_TYPE_VIOLATE_POLICY_RESTRICT_PUBLIC_IP"] = 58;
+                        values[valuesById[59] = "SIGNAL_TYPE_QUOTA_LIMIT"] = 59;
+                        values[valuesById[60] = "SIGNAL_TYPE_NO_PASSWORD_POLICY"] = 60;
+                        values[valuesById[61] = "SIGNAL_TYPE_CONNECTIONS_PERFORMANCE_IMPACT"] = 61;
+                        values[valuesById[62] = "SIGNAL_TYPE_TMP_TABLES_PERFORMANCE_IMPACT"] = 62;
+                        values[valuesById[63] = "SIGNAL_TYPE_TRANS_LOGS_PERFORMANCE_IMPACT"] = 63;
+                        values[valuesById[64] = "SIGNAL_TYPE_HIGH_JOINS_WITHOUT_INDEXES"] = 64;
+                        values[valuesById[65] = "SIGNAL_TYPE_SUPERUSER_WRITING_TO_USER_TABLES"] = 65;
+                        values[valuesById[66] = "SIGNAL_TYPE_USER_GRANTED_ALL_PERMISSIONS"] = 66;
+                        values[valuesById[67] = "SIGNAL_TYPE_DATA_EXPORT_TO_EXTERNAL_CLOUD_STORAGE_BUCKET"] = 67;
+                        values[valuesById[68] = "SIGNAL_TYPE_DATA_EXPORT_TO_PUBLIC_CLOUD_STORAGE_BUCKET"] = 68;
+                        values[valuesById[77] = "SIGNAL_TYPE_WEAK_PASSWORD_HASH_ALGORITHM"] = 77;
+                        values[valuesById[78] = "SIGNAL_TYPE_NO_USER_PASSWORD_POLICY"] = 78;
+                        values[valuesById[79] = "SIGNAL_TYPE_HOT_NODE"] = 79;
+                        values[valuesById[80] = "SIGNAL_TYPE_NO_DELETION_PROTECTION"] = 80;
+                        values[valuesById[81] = "SIGNAL_TYPE_NO_POINT_IN_TIME_RECOVERY"] = 81;
+                        values[valuesById[82] = "SIGNAL_TYPE_RESOURCE_SUSPENDED"] = 82;
+                        values[valuesById[83] = "SIGNAL_TYPE_EXPENSIVE_COMMANDS"] = 83;
+                        values[valuesById[84] = "SIGNAL_TYPE_NO_MAINTENANCE_POLICY_CONFIGURED"] = 84;
+                        values[valuesById[85] = "SIGNAL_TYPE_INEFFICIENT_QUERY"] = 85;
+                        values[valuesById[86] = "SIGNAL_TYPE_READ_INTENSIVE_WORKLOAD"] = 86;
+                        values[valuesById[87] = "SIGNAL_TYPE_MEMORY_LIMIT"] = 87;
+                        values[valuesById[88] = "SIGNAL_TYPE_MAX_SERVER_MEMORY"] = 88;
+                        values[valuesById[89] = "SIGNAL_TYPE_LARGE_ROWS"] = 89;
+                        values[valuesById[90] = "SIGNAL_TYPE_HIGH_WRITE_PRESSURE"] = 90;
+                        values[valuesById[91] = "SIGNAL_TYPE_HIGH_READ_PRESSURE"] = 91;
+                        values[valuesById[92] = "SIGNAL_TYPE_ENCRYPTION_ORG_POLICY_NOT_SATISFIED"] = 92;
+                        values[valuesById[93] = "SIGNAL_TYPE_LOCATION_ORG_POLICY_NOT_SATISFIED"] = 93;
+                        values[valuesById[94] = "SIGNAL_TYPE_OUTDATED_MINOR_VERSION"] = 94;
+                        values[valuesById[95] = "SIGNAL_TYPE_SCHEMA_NOT_OPTIMIZED"] = 95;
+                        values[valuesById[97] = "SIGNAL_TYPE_REPLICATION_LAG"] = 97;
+                        values[valuesById[99] = "SIGNAL_TYPE_OUTDATED_CLIENT"] = 99;
+                        values[valuesById[100] = "SIGNAL_TYPE_DATABOOST_DISABLED"] = 100;
+                        values[valuesById[101] = "SIGNAL_TYPE_RECOMMENDED_MAINTENANCE_POLICIES"] = 101;
+                        values[valuesById[102] = "SIGNAL_TYPE_EXTENDED_SUPPORT"] = 102;
+                        values[valuesById[104] = "SIGNAL_TYPE_VERSION_NEARING_END_OF_LIFE"] = 104;
+                        return values;
+                    })();
+    
+                    v1beta.SignalTypeGroup = (function() {
+    
+                        /**
+                         * Properties of a SignalTypeGroup.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface ISignalTypeGroup
+                         * @property {string|null} [displayName] SignalTypeGroup displayName
+                         * @property {Array.<google.cloud.databasecenter.v1beta.SignalType>|null} [signalTypes] SignalTypeGroup signalTypes
+                         */
+    
+                        /**
+                         * Constructs a new SignalTypeGroup.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a SignalTypeGroup.
+                         * @implements ISignalTypeGroup
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.ISignalTypeGroup=} [properties] Properties to set
+                         */
+                        function SignalTypeGroup(properties) {
+                            this.signalTypes = [];
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * SignalTypeGroup displayName.
+                         * @member {string} displayName
+                         * @memberof google.cloud.databasecenter.v1beta.SignalTypeGroup
+                         * @instance
+                         */
+                        SignalTypeGroup.prototype.displayName = "";
+    
+                        /**
+                         * SignalTypeGroup signalTypes.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.SignalType>} signalTypes
+                         * @memberof google.cloud.databasecenter.v1beta.SignalTypeGroup
+                         * @instance
+                         */
+                        SignalTypeGroup.prototype.signalTypes = $util.emptyArray;
+    
+                        /**
+                         * Creates a new SignalTypeGroup instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.SignalTypeGroup
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ISignalTypeGroup=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.SignalTypeGroup} SignalTypeGroup instance
+                         */
+                        SignalTypeGroup.create = function create(properties) {
+                            return new SignalTypeGroup(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified SignalTypeGroup message. Does not implicitly {@link google.cloud.databasecenter.v1beta.SignalTypeGroup.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.SignalTypeGroup
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ISignalTypeGroup} message SignalTypeGroup message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        SignalTypeGroup.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.displayName != null && Object.hasOwnProperty.call(message, "displayName"))
+                                writer.uint32(/* id 1, wireType 2 =*/10).string(message.displayName);
+                            if (message.signalTypes != null && message.signalTypes.length) {
+                                writer.uint32(/* id 2, wireType 2 =*/18).fork();
+                                for (var i = 0; i < message.signalTypes.length; ++i)
+                                    writer.int32(message.signalTypes[i]);
+                                writer.ldelim();
+                            }
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified SignalTypeGroup message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.SignalTypeGroup.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.SignalTypeGroup
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ISignalTypeGroup} message SignalTypeGroup message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        SignalTypeGroup.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a SignalTypeGroup message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.SignalTypeGroup
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.SignalTypeGroup} SignalTypeGroup
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        SignalTypeGroup.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.SignalTypeGroup();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.displayName = reader.string();
+                                        break;
+                                    }
+                                case 2: {
+                                        if (!(message.signalTypes && message.signalTypes.length))
+                                            message.signalTypes = [];
+                                        if ((tag & 7) === 2) {
+                                            var end2 = reader.uint32() + reader.pos;
+                                            while (reader.pos < end2)
+                                                message.signalTypes.push(reader.int32());
+                                        } else
+                                            message.signalTypes.push(reader.int32());
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a SignalTypeGroup message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.SignalTypeGroup
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.SignalTypeGroup} SignalTypeGroup
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        SignalTypeGroup.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a SignalTypeGroup message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.SignalTypeGroup
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        SignalTypeGroup.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.displayName != null && message.hasOwnProperty("displayName"))
+                                if (!$util.isString(message.displayName))
+                                    return "displayName: string expected";
+                            if (message.signalTypes != null && message.hasOwnProperty("signalTypes")) {
+                                if (!Array.isArray(message.signalTypes))
+                                    return "signalTypes: array expected";
+                                for (var i = 0; i < message.signalTypes.length; ++i)
+                                    switch (message.signalTypes[i]) {
+                                    default:
+                                        return "signalTypes: enum value[] expected";
+                                    case 0:
+                                    case 1:
+                                    case 2:
+                                    case 4:
+                                    case 5:
+                                    case 6:
+                                    case 7:
+                                    case 8:
+                                    case 9:
+                                    case 10:
+                                    case 11:
+                                    case 12:
+                                    case 76:
+                                    case 13:
+                                    case 69:
+                                    case 72:
+                                    case 14:
+                                    case 70:
+                                    case 15:
+                                    case 71:
+                                    case 73:
+                                    case 74:
+                                    case 75:
+                                    case 16:
+                                    case 17:
+                                    case 18:
+                                    case 19:
+                                    case 20:
+                                    case 21:
+                                    case 22:
+                                    case 23:
+                                    case 24:
+                                    case 25:
+                                    case 26:
+                                    case 27:
+                                    case 28:
+                                    case 29:
+                                    case 30:
+                                    case 31:
+                                    case 32:
+                                    case 33:
+                                    case 34:
+                                    case 35:
+                                    case 36:
+                                    case 37:
+                                    case 39:
+                                    case 40:
+                                    case 41:
+                                    case 42:
+                                    case 43:
+                                    case 44:
+                                    case 45:
+                                    case 46:
+                                    case 47:
+                                    case 48:
+                                    case 49:
+                                    case 50:
+                                    case 51:
+                                    case 52:
+                                    case 53:
+                                    case 54:
+                                    case 55:
+                                    case 56:
+                                    case 57:
+                                    case 58:
+                                    case 59:
+                                    case 60:
+                                    case 61:
+                                    case 62:
+                                    case 63:
+                                    case 64:
+                                    case 65:
+                                    case 66:
+                                    case 67:
+                                    case 68:
+                                    case 77:
+                                    case 78:
+                                    case 79:
+                                    case 80:
+                                    case 81:
+                                    case 82:
+                                    case 83:
+                                    case 84:
+                                    case 85:
+                                    case 86:
+                                    case 87:
+                                    case 88:
+                                    case 89:
+                                    case 90:
+                                    case 91:
+                                    case 92:
+                                    case 93:
+                                    case 94:
+                                    case 95:
+                                    case 97:
+                                    case 99:
+                                    case 100:
+                                    case 101:
+                                    case 102:
+                                    case 104:
+                                        break;
+                                    }
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a SignalTypeGroup message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.SignalTypeGroup
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.SignalTypeGroup} SignalTypeGroup
+                         */
+                        SignalTypeGroup.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.SignalTypeGroup)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.SignalTypeGroup();
+                            if (object.displayName != null)
+                                message.displayName = String(object.displayName);
+                            if (object.signalTypes) {
+                                if (!Array.isArray(object.signalTypes))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.SignalTypeGroup.signalTypes: array expected");
+                                message.signalTypes = [];
+                                for (var i = 0; i < object.signalTypes.length; ++i)
+                                    switch (object.signalTypes[i]) {
+                                    default:
+                                        if (typeof object.signalTypes[i] === "number") {
+                                            message.signalTypes[i] = object.signalTypes[i];
+                                            break;
+                                        }
+                                    case "SIGNAL_TYPE_UNSPECIFIED":
+                                    case 0:
+                                        message.signalTypes[i] = 0;
+                                        break;
+                                    case "SIGNAL_TYPE_RESOURCE_FAILOVER_PROTECTED":
+                                    case 1:
+                                        message.signalTypes[i] = 1;
+                                        break;
+                                    case "SIGNAL_TYPE_GROUP_MULTIREGIONAL":
+                                    case 2:
+                                        message.signalTypes[i] = 2;
+                                        break;
+                                    case "SIGNAL_TYPE_NO_AUTOMATED_BACKUP_POLICY":
+                                    case 4:
+                                        message.signalTypes[i] = 4;
+                                        break;
+                                    case "SIGNAL_TYPE_SHORT_BACKUP_RETENTION":
+                                    case 5:
+                                        message.signalTypes[i] = 5;
+                                        break;
+                                    case "SIGNAL_TYPE_LAST_BACKUP_FAILED":
+                                    case 6:
+                                        message.signalTypes[i] = 6;
+                                        break;
+                                    case "SIGNAL_TYPE_LAST_BACKUP_OLD":
+                                    case 7:
+                                        message.signalTypes[i] = 7;
+                                        break;
+                                    case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_2_0":
+                                    case 8:
+                                        message.signalTypes[i] = 8;
+                                        break;
+                                    case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_3":
+                                    case 9:
+                                        message.signalTypes[i] = 9;
+                                        break;
+                                    case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_2":
+                                    case 10:
+                                        message.signalTypes[i] = 10;
+                                        break;
+                                    case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_1":
+                                    case 11:
+                                        message.signalTypes[i] = 11;
+                                        break;
+                                    case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_0":
+                                    case 12:
+                                        message.signalTypes[i] = 12;
+                                        break;
+                                    case "SIGNAL_TYPE_VIOLATES_CIS_CONTROLS_V8_0":
+                                    case 76:
+                                        message.signalTypes[i] = 76;
+                                        break;
+                                    case "SIGNAL_TYPE_VIOLATES_NIST_800_53":
+                                    case 13:
+                                        message.signalTypes[i] = 13;
+                                        break;
+                                    case "SIGNAL_TYPE_VIOLATES_NIST_800_53_R5":
+                                    case 69:
+                                        message.signalTypes[i] = 69;
+                                        break;
+                                    case "SIGNAL_TYPE_VIOLATES_NIST_CYBERSECURITY_FRAMEWORK_V1_0":
+                                    case 72:
+                                        message.signalTypes[i] = 72;
+                                        break;
+                                    case "SIGNAL_TYPE_VIOLATES_ISO_27001":
+                                    case 14:
+                                        message.signalTypes[i] = 14;
+                                        break;
+                                    case "SIGNAL_TYPE_VIOLATES_ISO_27001_V2022":
+                                    case 70:
+                                        message.signalTypes[i] = 70;
+                                        break;
+                                    case "SIGNAL_TYPE_VIOLATES_PCI_DSS_V3_2_1":
+                                    case 15:
+                                        message.signalTypes[i] = 15;
+                                        break;
+                                    case "SIGNAL_TYPE_VIOLATES_PCI_DSS_V4_0":
+                                    case 71:
+                                        message.signalTypes[i] = 71;
+                                        break;
+                                    case "SIGNAL_TYPE_VIOLATES_CLOUD_CONTROLS_MATRIX_V4":
+                                    case 73:
+                                        message.signalTypes[i] = 73;
+                                        break;
+                                    case "SIGNAL_TYPE_VIOLATES_HIPAA":
+                                    case 74:
+                                        message.signalTypes[i] = 74;
+                                        break;
+                                    case "SIGNAL_TYPE_VIOLATES_SOC2_V2017":
+                                    case 75:
+                                        message.signalTypes[i] = 75;
+                                        break;
+                                    case "SIGNAL_TYPE_LOGS_NOT_OPTIMIZED_FOR_TROUBLESHOOTING":
+                                    case 16:
+                                        message.signalTypes[i] = 16;
+                                        break;
+                                    case "SIGNAL_TYPE_QUERY_DURATIONS_NOT_LOGGED":
+                                    case 17:
+                                        message.signalTypes[i] = 17;
+                                        break;
+                                    case "SIGNAL_TYPE_VERBOSE_ERROR_LOGGING":
+                                    case 18:
+                                        message.signalTypes[i] = 18;
+                                        break;
+                                    case "SIGNAL_TYPE_QUERY_LOCK_WAITS_NOT_LOGGED":
+                                    case 19:
+                                        message.signalTypes[i] = 19;
+                                        break;
+                                    case "SIGNAL_TYPE_LOGGING_MOST_ERRORS":
+                                    case 20:
+                                        message.signalTypes[i] = 20;
+                                        break;
+                                    case "SIGNAL_TYPE_LOGGING_ONLY_CRITICAL_ERRORS":
+                                    case 21:
+                                        message.signalTypes[i] = 21;
+                                        break;
+                                    case "SIGNAL_TYPE_MINIMAL_ERROR_LOGGING":
+                                    case 22:
+                                        message.signalTypes[i] = 22;
+                                        break;
+                                    case "SIGNAL_TYPE_QUERY_STATS_LOGGED":
+                                    case 23:
+                                        message.signalTypes[i] = 23;
+                                        break;
+                                    case "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_CLIENT_HOSTNAME":
+                                    case 24:
+                                        message.signalTypes[i] = 24;
+                                        break;
+                                    case "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PARSER_STATS":
+                                    case 25:
+                                        message.signalTypes[i] = 25;
+                                        break;
+                                    case "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PLANNER_STATS":
+                                    case 26:
+                                        message.signalTypes[i] = 26;
+                                        break;
+                                    case "SIGNAL_TYPE_NOT_LOGGING_ONLY_DDL_STATEMENTS":
+                                    case 27:
+                                        message.signalTypes[i] = 27;
+                                        break;
+                                    case "SIGNAL_TYPE_LOGGING_QUERY_STATS":
+                                    case 28:
+                                        message.signalTypes[i] = 28;
+                                        break;
+                                    case "SIGNAL_TYPE_NOT_LOGGING_TEMPORARY_FILES":
+                                    case 29:
+                                        message.signalTypes[i] = 29;
+                                        break;
+                                    case "SIGNAL_TYPE_CONNECTION_MAX_NOT_CONFIGURED":
+                                    case 30:
+                                        message.signalTypes[i] = 30;
+                                        break;
+                                    case "SIGNAL_TYPE_USER_OPTIONS_CONFIGURED":
+                                    case 31:
+                                        message.signalTypes[i] = 31;
+                                        break;
+                                    case "SIGNAL_TYPE_EXPOSED_TO_PUBLIC_ACCESS":
+                                    case 32:
+                                        message.signalTypes[i] = 32;
+                                        break;
+                                    case "SIGNAL_TYPE_UNENCRYPTED_CONNECTIONS":
+                                    case 33:
+                                        message.signalTypes[i] = 33;
+                                        break;
+                                    case "SIGNAL_TYPE_NO_ROOT_PASSWORD":
+                                    case 34:
+                                        message.signalTypes[i] = 34;
+                                        break;
+                                    case "SIGNAL_TYPE_WEAK_ROOT_PASSWORD":
+                                    case 35:
+                                        message.signalTypes[i] = 35;
+                                        break;
+                                    case "SIGNAL_TYPE_ENCRYPTION_KEY_NOT_CUSTOMER_MANAGED":
+                                    case 36:
+                                        message.signalTypes[i] = 36;
+                                        break;
+                                    case "SIGNAL_TYPE_SERVER_AUTHENTICATION_NOT_REQUIRED":
+                                    case 37:
+                                        message.signalTypes[i] = 37;
+                                        break;
+                                    case "SIGNAL_TYPE_EXPOSED_TO_EXTERNAL_SCRIPTS":
+                                    case 39:
+                                        message.signalTypes[i] = 39;
+                                        break;
+                                    case "SIGNAL_TYPE_EXPOSED_TO_LOCAL_DATA_LOADS":
+                                    case 40:
+                                        message.signalTypes[i] = 40;
+                                        break;
+                                    case "SIGNAL_TYPE_CONNECTION_ATTEMPTS_NOT_LOGGED":
+                                    case 41:
+                                        message.signalTypes[i] = 41;
+                                        break;
+                                    case "SIGNAL_TYPE_DISCONNECTIONS_NOT_LOGGED":
+                                    case 42:
+                                        message.signalTypes[i] = 42;
+                                        break;
+                                    case "SIGNAL_TYPE_LOGGING_EXCESSIVE_STATEMENT_INFO":
+                                    case 43:
+                                        message.signalTypes[i] = 43;
+                                        break;
+                                    case "SIGNAL_TYPE_EXPOSED_TO_REMOTE_ACCESS":
+                                    case 44:
+                                        message.signalTypes[i] = 44;
+                                        break;
+                                    case "SIGNAL_TYPE_DATABASE_NAMES_EXPOSED":
+                                    case 45:
+                                        message.signalTypes[i] = 45;
+                                        break;
+                                    case "SIGNAL_TYPE_SENSITIVE_TRACE_INFO_NOT_MASKED":
+                                    case 46:
+                                        message.signalTypes[i] = 46;
+                                        break;
+                                    case "SIGNAL_TYPE_PUBLIC_IP_ENABLED":
+                                    case 47:
+                                        message.signalTypes[i] = 47;
+                                        break;
+                                    case "SIGNAL_TYPE_IDLE":
+                                    case 48:
+                                        message.signalTypes[i] = 48;
+                                        break;
+                                    case "SIGNAL_TYPE_OVERPROVISIONED":
+                                    case 49:
+                                        message.signalTypes[i] = 49;
+                                        break;
+                                    case "SIGNAL_TYPE_HIGH_NUMBER_OF_OPEN_TABLES":
+                                    case 50:
+                                        message.signalTypes[i] = 50;
+                                        break;
+                                    case "SIGNAL_TYPE_HIGH_NUMBER_OF_TABLES":
+                                    case 51:
+                                        message.signalTypes[i] = 51;
+                                        break;
+                                    case "SIGNAL_TYPE_HIGH_TRANSACTION_ID_UTILIZATION":
+                                    case 52:
+                                        message.signalTypes[i] = 52;
+                                        break;
+                                    case "SIGNAL_TYPE_UNDERPROVISIONED":
+                                    case 53:
+                                        message.signalTypes[i] = 53;
+                                        break;
+                                    case "SIGNAL_TYPE_OUT_OF_DISK":
+                                    case 54:
+                                        message.signalTypes[i] = 54;
+                                        break;
+                                    case "SIGNAL_TYPE_SERVER_CERTIFICATE_NEAR_EXPIRY":
+                                    case 55:
+                                        message.signalTypes[i] = 55;
+                                        break;
+                                    case "SIGNAL_TYPE_DATABASE_AUDITING_DISABLED":
+                                    case 56:
+                                        message.signalTypes[i] = 56;
+                                        break;
+                                    case "SIGNAL_TYPE_RESTRICT_AUTHORIZED_NETWORKS":
+                                    case 57:
+                                        message.signalTypes[i] = 57;
+                                        break;
+                                    case "SIGNAL_TYPE_VIOLATE_POLICY_RESTRICT_PUBLIC_IP":
+                                    case 58:
+                                        message.signalTypes[i] = 58;
+                                        break;
+                                    case "SIGNAL_TYPE_QUOTA_LIMIT":
+                                    case 59:
+                                        message.signalTypes[i] = 59;
+                                        break;
+                                    case "SIGNAL_TYPE_NO_PASSWORD_POLICY":
+                                    case 60:
+                                        message.signalTypes[i] = 60;
+                                        break;
+                                    case "SIGNAL_TYPE_CONNECTIONS_PERFORMANCE_IMPACT":
+                                    case 61:
+                                        message.signalTypes[i] = 61;
+                                        break;
+                                    case "SIGNAL_TYPE_TMP_TABLES_PERFORMANCE_IMPACT":
+                                    case 62:
+                                        message.signalTypes[i] = 62;
+                                        break;
+                                    case "SIGNAL_TYPE_TRANS_LOGS_PERFORMANCE_IMPACT":
+                                    case 63:
+                                        message.signalTypes[i] = 63;
+                                        break;
+                                    case "SIGNAL_TYPE_HIGH_JOINS_WITHOUT_INDEXES":
+                                    case 64:
+                                        message.signalTypes[i] = 64;
+                                        break;
+                                    case "SIGNAL_TYPE_SUPERUSER_WRITING_TO_USER_TABLES":
+                                    case 65:
+                                        message.signalTypes[i] = 65;
+                                        break;
+                                    case "SIGNAL_TYPE_USER_GRANTED_ALL_PERMISSIONS":
+                                    case 66:
+                                        message.signalTypes[i] = 66;
+                                        break;
+                                    case "SIGNAL_TYPE_DATA_EXPORT_TO_EXTERNAL_CLOUD_STORAGE_BUCKET":
+                                    case 67:
+                                        message.signalTypes[i] = 67;
+                                        break;
+                                    case "SIGNAL_TYPE_DATA_EXPORT_TO_PUBLIC_CLOUD_STORAGE_BUCKET":
+                                    case 68:
+                                        message.signalTypes[i] = 68;
+                                        break;
+                                    case "SIGNAL_TYPE_WEAK_PASSWORD_HASH_ALGORITHM":
+                                    case 77:
+                                        message.signalTypes[i] = 77;
+                                        break;
+                                    case "SIGNAL_TYPE_NO_USER_PASSWORD_POLICY":
+                                    case 78:
+                                        message.signalTypes[i] = 78;
+                                        break;
+                                    case "SIGNAL_TYPE_HOT_NODE":
+                                    case 79:
+                                        message.signalTypes[i] = 79;
+                                        break;
+                                    case "SIGNAL_TYPE_NO_DELETION_PROTECTION":
+                                    case 80:
+                                        message.signalTypes[i] = 80;
+                                        break;
+                                    case "SIGNAL_TYPE_NO_POINT_IN_TIME_RECOVERY":
+                                    case 81:
+                                        message.signalTypes[i] = 81;
+                                        break;
+                                    case "SIGNAL_TYPE_RESOURCE_SUSPENDED":
+                                    case 82:
+                                        message.signalTypes[i] = 82;
+                                        break;
+                                    case "SIGNAL_TYPE_EXPENSIVE_COMMANDS":
+                                    case 83:
+                                        message.signalTypes[i] = 83;
+                                        break;
+                                    case "SIGNAL_TYPE_NO_MAINTENANCE_POLICY_CONFIGURED":
+                                    case 84:
+                                        message.signalTypes[i] = 84;
+                                        break;
+                                    case "SIGNAL_TYPE_INEFFICIENT_QUERY":
+                                    case 85:
+                                        message.signalTypes[i] = 85;
+                                        break;
+                                    case "SIGNAL_TYPE_READ_INTENSIVE_WORKLOAD":
+                                    case 86:
+                                        message.signalTypes[i] = 86;
+                                        break;
+                                    case "SIGNAL_TYPE_MEMORY_LIMIT":
+                                    case 87:
+                                        message.signalTypes[i] = 87;
+                                        break;
+                                    case "SIGNAL_TYPE_MAX_SERVER_MEMORY":
+                                    case 88:
+                                        message.signalTypes[i] = 88;
+                                        break;
+                                    case "SIGNAL_TYPE_LARGE_ROWS":
+                                    case 89:
+                                        message.signalTypes[i] = 89;
+                                        break;
+                                    case "SIGNAL_TYPE_HIGH_WRITE_PRESSURE":
+                                    case 90:
+                                        message.signalTypes[i] = 90;
+                                        break;
+                                    case "SIGNAL_TYPE_HIGH_READ_PRESSURE":
+                                    case 91:
+                                        message.signalTypes[i] = 91;
+                                        break;
+                                    case "SIGNAL_TYPE_ENCRYPTION_ORG_POLICY_NOT_SATISFIED":
+                                    case 92:
+                                        message.signalTypes[i] = 92;
+                                        break;
+                                    case "SIGNAL_TYPE_LOCATION_ORG_POLICY_NOT_SATISFIED":
+                                    case 93:
+                                        message.signalTypes[i] = 93;
+                                        break;
+                                    case "SIGNAL_TYPE_OUTDATED_MINOR_VERSION":
+                                    case 94:
+                                        message.signalTypes[i] = 94;
+                                        break;
+                                    case "SIGNAL_TYPE_SCHEMA_NOT_OPTIMIZED":
+                                    case 95:
+                                        message.signalTypes[i] = 95;
+                                        break;
+                                    case "SIGNAL_TYPE_REPLICATION_LAG":
+                                    case 97:
+                                        message.signalTypes[i] = 97;
+                                        break;
+                                    case "SIGNAL_TYPE_OUTDATED_CLIENT":
+                                    case 99:
+                                        message.signalTypes[i] = 99;
+                                        break;
+                                    case "SIGNAL_TYPE_DATABOOST_DISABLED":
+                                    case 100:
+                                        message.signalTypes[i] = 100;
+                                        break;
+                                    case "SIGNAL_TYPE_RECOMMENDED_MAINTENANCE_POLICIES":
+                                    case 101:
+                                        message.signalTypes[i] = 101;
+                                        break;
+                                    case "SIGNAL_TYPE_EXTENDED_SUPPORT":
+                                    case 102:
+                                        message.signalTypes[i] = 102;
+                                        break;
+                                    case "SIGNAL_TYPE_VERSION_NEARING_END_OF_LIFE":
+                                    case 104:
+                                        message.signalTypes[i] = 104;
+                                        break;
+                                    }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a SignalTypeGroup message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.SignalTypeGroup
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.SignalTypeGroup} message SignalTypeGroup
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        SignalTypeGroup.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.arrays || options.defaults)
+                                object.signalTypes = [];
+                            if (options.defaults)
+                                object.displayName = "";
+                            if (message.displayName != null && message.hasOwnProperty("displayName"))
+                                object.displayName = message.displayName;
+                            if (message.signalTypes && message.signalTypes.length) {
+                                object.signalTypes = [];
+                                for (var j = 0; j < message.signalTypes.length; ++j)
+                                    object.signalTypes[j] = options.enums === String ? $root.google.cloud.databasecenter.v1beta.SignalType[message.signalTypes[j]] === undefined ? message.signalTypes[j] : $root.google.cloud.databasecenter.v1beta.SignalType[message.signalTypes[j]] : message.signalTypes[j];
+                            }
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this SignalTypeGroup to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.SignalTypeGroup
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        SignalTypeGroup.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for SignalTypeGroup
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.SignalTypeGroup
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        SignalTypeGroup.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.SignalTypeGroup";
+                        };
+    
+                        return SignalTypeGroup;
+                    })();
+    
+                    v1beta.SignalFilter = (function() {
+    
+                        /**
+                         * Properties of a SignalFilter.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface ISignalFilter
+                         * @property {google.cloud.databasecenter.v1beta.SignalType|null} [signalType] SignalFilter signalType
+                         * @property {google.cloud.databasecenter.v1beta.SignalStatus|null} [signalStatus] SignalFilter signalStatus
+                         */
+    
+                        /**
+                         * Constructs a new SignalFilter.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a SignalFilter.
+                         * @implements ISignalFilter
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.ISignalFilter=} [properties] Properties to set
+                         */
+                        function SignalFilter(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * SignalFilter signalType.
+                         * @member {google.cloud.databasecenter.v1beta.SignalType} signalType
+                         * @memberof google.cloud.databasecenter.v1beta.SignalFilter
+                         * @instance
+                         */
+                        SignalFilter.prototype.signalType = 0;
+    
+                        /**
+                         * SignalFilter signalStatus.
+                         * @member {google.cloud.databasecenter.v1beta.SignalStatus} signalStatus
+                         * @memberof google.cloud.databasecenter.v1beta.SignalFilter
+                         * @instance
+                         */
+                        SignalFilter.prototype.signalStatus = 0;
+    
+                        /**
+                         * Creates a new SignalFilter instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.SignalFilter
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ISignalFilter=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.SignalFilter} SignalFilter instance
+                         */
+                        SignalFilter.create = function create(properties) {
+                            return new SignalFilter(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified SignalFilter message. Does not implicitly {@link google.cloud.databasecenter.v1beta.SignalFilter.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.SignalFilter
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ISignalFilter} message SignalFilter message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        SignalFilter.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.signalType != null && Object.hasOwnProperty.call(message, "signalType"))
+                                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.signalType);
+                            if (message.signalStatus != null && Object.hasOwnProperty.call(message, "signalStatus"))
+                                writer.uint32(/* id 2, wireType 0 =*/16).int32(message.signalStatus);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified SignalFilter message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.SignalFilter.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.SignalFilter
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ISignalFilter} message SignalFilter message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        SignalFilter.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a SignalFilter message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.SignalFilter
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.SignalFilter} SignalFilter
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        SignalFilter.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.SignalFilter();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.signalType = reader.int32();
+                                        break;
+                                    }
+                                case 2: {
+                                        message.signalStatus = reader.int32();
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a SignalFilter message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.SignalFilter
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.SignalFilter} SignalFilter
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        SignalFilter.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a SignalFilter message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.SignalFilter
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        SignalFilter.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.signalType != null && message.hasOwnProperty("signalType"))
+                                switch (message.signalType) {
+                                default:
+                                    return "signalType: enum value expected";
+                                case 0:
+                                case 1:
+                                case 2:
+                                case 4:
+                                case 5:
+                                case 6:
+                                case 7:
+                                case 8:
+                                case 9:
+                                case 10:
+                                case 11:
+                                case 12:
+                                case 76:
+                                case 13:
+                                case 69:
+                                case 72:
+                                case 14:
+                                case 70:
+                                case 15:
+                                case 71:
+                                case 73:
+                                case 74:
+                                case 75:
+                                case 16:
+                                case 17:
+                                case 18:
+                                case 19:
+                                case 20:
+                                case 21:
+                                case 22:
+                                case 23:
+                                case 24:
+                                case 25:
+                                case 26:
+                                case 27:
+                                case 28:
+                                case 29:
+                                case 30:
+                                case 31:
+                                case 32:
+                                case 33:
+                                case 34:
+                                case 35:
+                                case 36:
+                                case 37:
+                                case 39:
+                                case 40:
+                                case 41:
+                                case 42:
+                                case 43:
+                                case 44:
+                                case 45:
+                                case 46:
+                                case 47:
+                                case 48:
+                                case 49:
+                                case 50:
+                                case 51:
+                                case 52:
+                                case 53:
+                                case 54:
+                                case 55:
+                                case 56:
+                                case 57:
+                                case 58:
+                                case 59:
+                                case 60:
+                                case 61:
+                                case 62:
+                                case 63:
+                                case 64:
+                                case 65:
+                                case 66:
+                                case 67:
+                                case 68:
+                                case 77:
+                                case 78:
+                                case 79:
+                                case 80:
+                                case 81:
+                                case 82:
+                                case 83:
+                                case 84:
+                                case 85:
+                                case 86:
+                                case 87:
+                                case 88:
+                                case 89:
+                                case 90:
+                                case 91:
+                                case 92:
+                                case 93:
+                                case 94:
+                                case 95:
+                                case 97:
+                                case 99:
+                                case 100:
+                                case 101:
+                                case 102:
+                                case 104:
+                                    break;
+                                }
+                            if (message.signalStatus != null && message.hasOwnProperty("signalStatus"))
+                                switch (message.signalStatus) {
+                                default:
+                                    return "signalStatus: enum value expected";
+                                case 0:
+                                case 1:
+                                case 2:
+                                case 3:
+                                case 4:
+                                    break;
+                                }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a SignalFilter message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.SignalFilter
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.SignalFilter} SignalFilter
+                         */
+                        SignalFilter.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.SignalFilter)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.SignalFilter();
+                            switch (object.signalType) {
+                            default:
+                                if (typeof object.signalType === "number") {
+                                    message.signalType = object.signalType;
+                                    break;
+                                }
+                                break;
+                            case "SIGNAL_TYPE_UNSPECIFIED":
+                            case 0:
+                                message.signalType = 0;
+                                break;
+                            case "SIGNAL_TYPE_RESOURCE_FAILOVER_PROTECTED":
+                            case 1:
+                                message.signalType = 1;
+                                break;
+                            case "SIGNAL_TYPE_GROUP_MULTIREGIONAL":
+                            case 2:
+                                message.signalType = 2;
+                                break;
+                            case "SIGNAL_TYPE_NO_AUTOMATED_BACKUP_POLICY":
+                            case 4:
+                                message.signalType = 4;
+                                break;
+                            case "SIGNAL_TYPE_SHORT_BACKUP_RETENTION":
+                            case 5:
+                                message.signalType = 5;
+                                break;
+                            case "SIGNAL_TYPE_LAST_BACKUP_FAILED":
+                            case 6:
+                                message.signalType = 6;
+                                break;
+                            case "SIGNAL_TYPE_LAST_BACKUP_OLD":
+                            case 7:
+                                message.signalType = 7;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_2_0":
+                            case 8:
+                                message.signalType = 8;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_3":
+                            case 9:
+                                message.signalType = 9;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_2":
+                            case 10:
+                                message.signalType = 10;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_1":
+                            case 11:
+                                message.signalType = 11;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_0":
+                            case 12:
+                                message.signalType = 12;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_CONTROLS_V8_0":
+                            case 76:
+                                message.signalType = 76;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_NIST_800_53":
+                            case 13:
+                                message.signalType = 13;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_NIST_800_53_R5":
+                            case 69:
+                                message.signalType = 69;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_NIST_CYBERSECURITY_FRAMEWORK_V1_0":
+                            case 72:
+                                message.signalType = 72;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_ISO_27001":
+                            case 14:
+                                message.signalType = 14;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_ISO_27001_V2022":
+                            case 70:
+                                message.signalType = 70;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_PCI_DSS_V3_2_1":
+                            case 15:
+                                message.signalType = 15;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_PCI_DSS_V4_0":
+                            case 71:
+                                message.signalType = 71;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CLOUD_CONTROLS_MATRIX_V4":
+                            case 73:
+                                message.signalType = 73;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_HIPAA":
+                            case 74:
+                                message.signalType = 74;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_SOC2_V2017":
+                            case 75:
+                                message.signalType = 75;
+                                break;
+                            case "SIGNAL_TYPE_LOGS_NOT_OPTIMIZED_FOR_TROUBLESHOOTING":
+                            case 16:
+                                message.signalType = 16;
+                                break;
+                            case "SIGNAL_TYPE_QUERY_DURATIONS_NOT_LOGGED":
+                            case 17:
+                                message.signalType = 17;
+                                break;
+                            case "SIGNAL_TYPE_VERBOSE_ERROR_LOGGING":
+                            case 18:
+                                message.signalType = 18;
+                                break;
+                            case "SIGNAL_TYPE_QUERY_LOCK_WAITS_NOT_LOGGED":
+                            case 19:
+                                message.signalType = 19;
+                                break;
+                            case "SIGNAL_TYPE_LOGGING_MOST_ERRORS":
+                            case 20:
+                                message.signalType = 20;
+                                break;
+                            case "SIGNAL_TYPE_LOGGING_ONLY_CRITICAL_ERRORS":
+                            case 21:
+                                message.signalType = 21;
+                                break;
+                            case "SIGNAL_TYPE_MINIMAL_ERROR_LOGGING":
+                            case 22:
+                                message.signalType = 22;
+                                break;
+                            case "SIGNAL_TYPE_QUERY_STATS_LOGGED":
+                            case 23:
+                                message.signalType = 23;
+                                break;
+                            case "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_CLIENT_HOSTNAME":
+                            case 24:
+                                message.signalType = 24;
+                                break;
+                            case "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PARSER_STATS":
+                            case 25:
+                                message.signalType = 25;
+                                break;
+                            case "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PLANNER_STATS":
+                            case 26:
+                                message.signalType = 26;
+                                break;
+                            case "SIGNAL_TYPE_NOT_LOGGING_ONLY_DDL_STATEMENTS":
+                            case 27:
+                                message.signalType = 27;
+                                break;
+                            case "SIGNAL_TYPE_LOGGING_QUERY_STATS":
+                            case 28:
+                                message.signalType = 28;
+                                break;
+                            case "SIGNAL_TYPE_NOT_LOGGING_TEMPORARY_FILES":
+                            case 29:
+                                message.signalType = 29;
+                                break;
+                            case "SIGNAL_TYPE_CONNECTION_MAX_NOT_CONFIGURED":
+                            case 30:
+                                message.signalType = 30;
+                                break;
+                            case "SIGNAL_TYPE_USER_OPTIONS_CONFIGURED":
+                            case 31:
+                                message.signalType = 31;
+                                break;
+                            case "SIGNAL_TYPE_EXPOSED_TO_PUBLIC_ACCESS":
+                            case 32:
+                                message.signalType = 32;
+                                break;
+                            case "SIGNAL_TYPE_UNENCRYPTED_CONNECTIONS":
+                            case 33:
+                                message.signalType = 33;
+                                break;
+                            case "SIGNAL_TYPE_NO_ROOT_PASSWORD":
+                            case 34:
+                                message.signalType = 34;
+                                break;
+                            case "SIGNAL_TYPE_WEAK_ROOT_PASSWORD":
+                            case 35:
+                                message.signalType = 35;
+                                break;
+                            case "SIGNAL_TYPE_ENCRYPTION_KEY_NOT_CUSTOMER_MANAGED":
+                            case 36:
+                                message.signalType = 36;
+                                break;
+                            case "SIGNAL_TYPE_SERVER_AUTHENTICATION_NOT_REQUIRED":
+                            case 37:
+                                message.signalType = 37;
+                                break;
+                            case "SIGNAL_TYPE_EXPOSED_TO_EXTERNAL_SCRIPTS":
+                            case 39:
+                                message.signalType = 39;
+                                break;
+                            case "SIGNAL_TYPE_EXPOSED_TO_LOCAL_DATA_LOADS":
+                            case 40:
+                                message.signalType = 40;
+                                break;
+                            case "SIGNAL_TYPE_CONNECTION_ATTEMPTS_NOT_LOGGED":
+                            case 41:
+                                message.signalType = 41;
+                                break;
+                            case "SIGNAL_TYPE_DISCONNECTIONS_NOT_LOGGED":
+                            case 42:
+                                message.signalType = 42;
+                                break;
+                            case "SIGNAL_TYPE_LOGGING_EXCESSIVE_STATEMENT_INFO":
+                            case 43:
+                                message.signalType = 43;
+                                break;
+                            case "SIGNAL_TYPE_EXPOSED_TO_REMOTE_ACCESS":
+                            case 44:
+                                message.signalType = 44;
+                                break;
+                            case "SIGNAL_TYPE_DATABASE_NAMES_EXPOSED":
+                            case 45:
+                                message.signalType = 45;
+                                break;
+                            case "SIGNAL_TYPE_SENSITIVE_TRACE_INFO_NOT_MASKED":
+                            case 46:
+                                message.signalType = 46;
+                                break;
+                            case "SIGNAL_TYPE_PUBLIC_IP_ENABLED":
+                            case 47:
+                                message.signalType = 47;
+                                break;
+                            case "SIGNAL_TYPE_IDLE":
+                            case 48:
+                                message.signalType = 48;
+                                break;
+                            case "SIGNAL_TYPE_OVERPROVISIONED":
+                            case 49:
+                                message.signalType = 49;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_NUMBER_OF_OPEN_TABLES":
+                            case 50:
+                                message.signalType = 50;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_NUMBER_OF_TABLES":
+                            case 51:
+                                message.signalType = 51;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_TRANSACTION_ID_UTILIZATION":
+                            case 52:
+                                message.signalType = 52;
+                                break;
+                            case "SIGNAL_TYPE_UNDERPROVISIONED":
+                            case 53:
+                                message.signalType = 53;
+                                break;
+                            case "SIGNAL_TYPE_OUT_OF_DISK":
+                            case 54:
+                                message.signalType = 54;
+                                break;
+                            case "SIGNAL_TYPE_SERVER_CERTIFICATE_NEAR_EXPIRY":
+                            case 55:
+                                message.signalType = 55;
+                                break;
+                            case "SIGNAL_TYPE_DATABASE_AUDITING_DISABLED":
+                            case 56:
+                                message.signalType = 56;
+                                break;
+                            case "SIGNAL_TYPE_RESTRICT_AUTHORIZED_NETWORKS":
+                            case 57:
+                                message.signalType = 57;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATE_POLICY_RESTRICT_PUBLIC_IP":
+                            case 58:
+                                message.signalType = 58;
+                                break;
+                            case "SIGNAL_TYPE_QUOTA_LIMIT":
+                            case 59:
+                                message.signalType = 59;
+                                break;
+                            case "SIGNAL_TYPE_NO_PASSWORD_POLICY":
+                            case 60:
+                                message.signalType = 60;
+                                break;
+                            case "SIGNAL_TYPE_CONNECTIONS_PERFORMANCE_IMPACT":
+                            case 61:
+                                message.signalType = 61;
+                                break;
+                            case "SIGNAL_TYPE_TMP_TABLES_PERFORMANCE_IMPACT":
+                            case 62:
+                                message.signalType = 62;
+                                break;
+                            case "SIGNAL_TYPE_TRANS_LOGS_PERFORMANCE_IMPACT":
+                            case 63:
+                                message.signalType = 63;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_JOINS_WITHOUT_INDEXES":
+                            case 64:
+                                message.signalType = 64;
+                                break;
+                            case "SIGNAL_TYPE_SUPERUSER_WRITING_TO_USER_TABLES":
+                            case 65:
+                                message.signalType = 65;
+                                break;
+                            case "SIGNAL_TYPE_USER_GRANTED_ALL_PERMISSIONS":
+                            case 66:
+                                message.signalType = 66;
+                                break;
+                            case "SIGNAL_TYPE_DATA_EXPORT_TO_EXTERNAL_CLOUD_STORAGE_BUCKET":
+                            case 67:
+                                message.signalType = 67;
+                                break;
+                            case "SIGNAL_TYPE_DATA_EXPORT_TO_PUBLIC_CLOUD_STORAGE_BUCKET":
+                            case 68:
+                                message.signalType = 68;
+                                break;
+                            case "SIGNAL_TYPE_WEAK_PASSWORD_HASH_ALGORITHM":
+                            case 77:
+                                message.signalType = 77;
+                                break;
+                            case "SIGNAL_TYPE_NO_USER_PASSWORD_POLICY":
+                            case 78:
+                                message.signalType = 78;
+                                break;
+                            case "SIGNAL_TYPE_HOT_NODE":
+                            case 79:
+                                message.signalType = 79;
+                                break;
+                            case "SIGNAL_TYPE_NO_DELETION_PROTECTION":
+                            case 80:
+                                message.signalType = 80;
+                                break;
+                            case "SIGNAL_TYPE_NO_POINT_IN_TIME_RECOVERY":
+                            case 81:
+                                message.signalType = 81;
+                                break;
+                            case "SIGNAL_TYPE_RESOURCE_SUSPENDED":
+                            case 82:
+                                message.signalType = 82;
+                                break;
+                            case "SIGNAL_TYPE_EXPENSIVE_COMMANDS":
+                            case 83:
+                                message.signalType = 83;
+                                break;
+                            case "SIGNAL_TYPE_NO_MAINTENANCE_POLICY_CONFIGURED":
+                            case 84:
+                                message.signalType = 84;
+                                break;
+                            case "SIGNAL_TYPE_INEFFICIENT_QUERY":
+                            case 85:
+                                message.signalType = 85;
+                                break;
+                            case "SIGNAL_TYPE_READ_INTENSIVE_WORKLOAD":
+                            case 86:
+                                message.signalType = 86;
+                                break;
+                            case "SIGNAL_TYPE_MEMORY_LIMIT":
+                            case 87:
+                                message.signalType = 87;
+                                break;
+                            case "SIGNAL_TYPE_MAX_SERVER_MEMORY":
+                            case 88:
+                                message.signalType = 88;
+                                break;
+                            case "SIGNAL_TYPE_LARGE_ROWS":
+                            case 89:
+                                message.signalType = 89;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_WRITE_PRESSURE":
+                            case 90:
+                                message.signalType = 90;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_READ_PRESSURE":
+                            case 91:
+                                message.signalType = 91;
+                                break;
+                            case "SIGNAL_TYPE_ENCRYPTION_ORG_POLICY_NOT_SATISFIED":
+                            case 92:
+                                message.signalType = 92;
+                                break;
+                            case "SIGNAL_TYPE_LOCATION_ORG_POLICY_NOT_SATISFIED":
+                            case 93:
+                                message.signalType = 93;
+                                break;
+                            case "SIGNAL_TYPE_OUTDATED_MINOR_VERSION":
+                            case 94:
+                                message.signalType = 94;
+                                break;
+                            case "SIGNAL_TYPE_SCHEMA_NOT_OPTIMIZED":
+                            case 95:
+                                message.signalType = 95;
+                                break;
+                            case "SIGNAL_TYPE_REPLICATION_LAG":
+                            case 97:
+                                message.signalType = 97;
+                                break;
+                            case "SIGNAL_TYPE_OUTDATED_CLIENT":
+                            case 99:
+                                message.signalType = 99;
+                                break;
+                            case "SIGNAL_TYPE_DATABOOST_DISABLED":
+                            case 100:
+                                message.signalType = 100;
+                                break;
+                            case "SIGNAL_TYPE_RECOMMENDED_MAINTENANCE_POLICIES":
+                            case 101:
+                                message.signalType = 101;
+                                break;
+                            case "SIGNAL_TYPE_EXTENDED_SUPPORT":
+                            case 102:
+                                message.signalType = 102;
+                                break;
+                            case "SIGNAL_TYPE_VERSION_NEARING_END_OF_LIFE":
+                            case 104:
+                                message.signalType = 104;
+                                break;
+                            }
+                            switch (object.signalStatus) {
+                            default:
+                                if (typeof object.signalStatus === "number") {
+                                    message.signalStatus = object.signalStatus;
+                                    break;
+                                }
+                                break;
+                            case "SIGNAL_STATUS_UNSPECIFIED":
+                            case 0:
+                                message.signalStatus = 0;
+                                break;
+                            case "SIGNAL_STATUS_NOT_APPLICABLE":
+                            case 1:
+                                message.signalStatus = 1;
+                                break;
+                            case "SIGNAL_STATUS_OK":
+                            case 2:
+                                message.signalStatus = 2;
+                                break;
+                            case "SIGNAL_STATUS_ISSUE":
+                            case 3:
+                                message.signalStatus = 3;
+                                break;
+                            case "SIGNAL_STATUS_NOT_ENABLED":
+                            case 4:
+                                message.signalStatus = 4;
+                                break;
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a SignalFilter message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.SignalFilter
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.SignalFilter} message SignalFilter
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        SignalFilter.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.defaults) {
+                                object.signalType = options.enums === String ? "SIGNAL_TYPE_UNSPECIFIED" : 0;
+                                object.signalStatus = options.enums === String ? "SIGNAL_STATUS_UNSPECIFIED" : 0;
+                            }
+                            if (message.signalType != null && message.hasOwnProperty("signalType"))
+                                object.signalType = options.enums === String ? $root.google.cloud.databasecenter.v1beta.SignalType[message.signalType] === undefined ? message.signalType : $root.google.cloud.databasecenter.v1beta.SignalType[message.signalType] : message.signalType;
+                            if (message.signalStatus != null && message.hasOwnProperty("signalStatus"))
+                                object.signalStatus = options.enums === String ? $root.google.cloud.databasecenter.v1beta.SignalStatus[message.signalStatus] === undefined ? message.signalStatus : $root.google.cloud.databasecenter.v1beta.SignalStatus[message.signalStatus] : message.signalStatus;
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this SignalFilter to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.SignalFilter
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        SignalFilter.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for SignalFilter
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.SignalFilter
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        SignalFilter.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.SignalFilter";
+                        };
+    
+                        return SignalFilter;
+                    })();
+    
+                    v1beta.SignalGroup = (function() {
+    
+                        /**
+                         * Properties of a SignalGroup.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface ISignalGroup
+                         * @property {string|null} [displayName] SignalGroup displayName
+                         * @property {number|null} [issueCount] SignalGroup issueCount
+                         * @property {Array.<google.cloud.databasecenter.v1beta.ISignal>|null} [signals] SignalGroup signals
+                         */
+    
+                        /**
+                         * Constructs a new SignalGroup.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a SignalGroup.
+                         * @implements ISignalGroup
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.ISignalGroup=} [properties] Properties to set
+                         */
+                        function SignalGroup(properties) {
+                            this.signals = [];
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * SignalGroup displayName.
+                         * @member {string} displayName
+                         * @memberof google.cloud.databasecenter.v1beta.SignalGroup
+                         * @instance
+                         */
+                        SignalGroup.prototype.displayName = "";
+    
+                        /**
+                         * SignalGroup issueCount.
+                         * @member {number} issueCount
+                         * @memberof google.cloud.databasecenter.v1beta.SignalGroup
+                         * @instance
+                         */
+                        SignalGroup.prototype.issueCount = 0;
+    
+                        /**
+                         * SignalGroup signals.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.ISignal>} signals
+                         * @memberof google.cloud.databasecenter.v1beta.SignalGroup
+                         * @instance
+                         */
+                        SignalGroup.prototype.signals = $util.emptyArray;
+    
+                        /**
+                         * Creates a new SignalGroup instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.SignalGroup
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ISignalGroup=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.SignalGroup} SignalGroup instance
+                         */
+                        SignalGroup.create = function create(properties) {
+                            return new SignalGroup(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified SignalGroup message. Does not implicitly {@link google.cloud.databasecenter.v1beta.SignalGroup.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.SignalGroup
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ISignalGroup} message SignalGroup message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        SignalGroup.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.displayName != null && Object.hasOwnProperty.call(message, "displayName"))
+                                writer.uint32(/* id 1, wireType 2 =*/10).string(message.displayName);
+                            if (message.issueCount != null && Object.hasOwnProperty.call(message, "issueCount"))
+                                writer.uint32(/* id 2, wireType 0 =*/16).int32(message.issueCount);
+                            if (message.signals != null && message.signals.length)
+                                for (var i = 0; i < message.signals.length; ++i)
+                                    $root.google.cloud.databasecenter.v1beta.Signal.encode(message.signals[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified SignalGroup message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.SignalGroup.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.SignalGroup
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ISignalGroup} message SignalGroup message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        SignalGroup.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a SignalGroup message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.SignalGroup
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.SignalGroup} SignalGroup
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        SignalGroup.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.SignalGroup();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.displayName = reader.string();
+                                        break;
+                                    }
+                                case 2: {
+                                        message.issueCount = reader.int32();
+                                        break;
+                                    }
+                                case 3: {
+                                        if (!(message.signals && message.signals.length))
+                                            message.signals = [];
+                                        message.signals.push($root.google.cloud.databasecenter.v1beta.Signal.decode(reader, reader.uint32()));
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a SignalGroup message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.SignalGroup
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.SignalGroup} SignalGroup
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        SignalGroup.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a SignalGroup message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.SignalGroup
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        SignalGroup.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.displayName != null && message.hasOwnProperty("displayName"))
+                                if (!$util.isString(message.displayName))
+                                    return "displayName: string expected";
+                            if (message.issueCount != null && message.hasOwnProperty("issueCount"))
+                                if (!$util.isInteger(message.issueCount))
+                                    return "issueCount: integer expected";
+                            if (message.signals != null && message.hasOwnProperty("signals")) {
+                                if (!Array.isArray(message.signals))
+                                    return "signals: array expected";
+                                for (var i = 0; i < message.signals.length; ++i) {
+                                    var error = $root.google.cloud.databasecenter.v1beta.Signal.verify(message.signals[i]);
+                                    if (error)
+                                        return "signals." + error;
+                                }
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a SignalGroup message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.SignalGroup
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.SignalGroup} SignalGroup
+                         */
+                        SignalGroup.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.SignalGroup)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.SignalGroup();
+                            if (object.displayName != null)
+                                message.displayName = String(object.displayName);
+                            if (object.issueCount != null)
+                                message.issueCount = object.issueCount | 0;
+                            if (object.signals) {
+                                if (!Array.isArray(object.signals))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.SignalGroup.signals: array expected");
+                                message.signals = [];
+                                for (var i = 0; i < object.signals.length; ++i) {
+                                    if (typeof object.signals[i] !== "object")
+                                        throw TypeError(".google.cloud.databasecenter.v1beta.SignalGroup.signals: object expected");
+                                    message.signals[i] = $root.google.cloud.databasecenter.v1beta.Signal.fromObject(object.signals[i]);
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a SignalGroup message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.SignalGroup
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.SignalGroup} message SignalGroup
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        SignalGroup.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.arrays || options.defaults)
+                                object.signals = [];
+                            if (options.defaults) {
+                                object.displayName = "";
+                                object.issueCount = 0;
+                            }
+                            if (message.displayName != null && message.hasOwnProperty("displayName"))
+                                object.displayName = message.displayName;
+                            if (message.issueCount != null && message.hasOwnProperty("issueCount"))
+                                object.issueCount = message.issueCount;
+                            if (message.signals && message.signals.length) {
+                                object.signals = [];
+                                for (var j = 0; j < message.signals.length; ++j)
+                                    object.signals[j] = $root.google.cloud.databasecenter.v1beta.Signal.toObject(message.signals[j], options);
+                            }
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this SignalGroup to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.SignalGroup
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        SignalGroup.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for SignalGroup
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.SignalGroup
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        SignalGroup.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.SignalGroup";
+                        };
+    
+                        return SignalGroup;
+                    })();
+    
+                    v1beta.IssueCount = (function() {
+    
+                        /**
+                         * Properties of an IssueCount.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IIssueCount
+                         * @property {string|null} [displayName] IssueCount displayName
+                         * @property {number|null} [issueCount] IssueCount issueCount
+                         */
+    
+                        /**
+                         * Constructs a new IssueCount.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents an IssueCount.
+                         * @implements IIssueCount
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IIssueCount=} [properties] Properties to set
+                         */
+                        function IssueCount(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * IssueCount displayName.
+                         * @member {string} displayName
+                         * @memberof google.cloud.databasecenter.v1beta.IssueCount
+                         * @instance
+                         */
+                        IssueCount.prototype.displayName = "";
+    
+                        /**
+                         * IssueCount issueCount.
+                         * @member {number} issueCount
+                         * @memberof google.cloud.databasecenter.v1beta.IssueCount
+                         * @instance
+                         */
+                        IssueCount.prototype.issueCount = 0;
+    
+                        /**
+                         * Creates a new IssueCount instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.IssueCount
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IIssueCount=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.IssueCount} IssueCount instance
+                         */
+                        IssueCount.create = function create(properties) {
+                            return new IssueCount(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified IssueCount message. Does not implicitly {@link google.cloud.databasecenter.v1beta.IssueCount.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.IssueCount
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IIssueCount} message IssueCount message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        IssueCount.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.displayName != null && Object.hasOwnProperty.call(message, "displayName"))
+                                writer.uint32(/* id 1, wireType 2 =*/10).string(message.displayName);
+                            if (message.issueCount != null && Object.hasOwnProperty.call(message, "issueCount"))
+                                writer.uint32(/* id 2, wireType 0 =*/16).int32(message.issueCount);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified IssueCount message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.IssueCount.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.IssueCount
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IIssueCount} message IssueCount message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        IssueCount.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes an IssueCount message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.IssueCount
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.IssueCount} IssueCount
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        IssueCount.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.IssueCount();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.displayName = reader.string();
+                                        break;
+                                    }
+                                case 2: {
+                                        message.issueCount = reader.int32();
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes an IssueCount message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.IssueCount
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.IssueCount} IssueCount
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        IssueCount.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies an IssueCount message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.IssueCount
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        IssueCount.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.displayName != null && message.hasOwnProperty("displayName"))
+                                if (!$util.isString(message.displayName))
+                                    return "displayName: string expected";
+                            if (message.issueCount != null && message.hasOwnProperty("issueCount"))
+                                if (!$util.isInteger(message.issueCount))
+                                    return "issueCount: integer expected";
+                            return null;
+                        };
+    
+                        /**
+                         * Creates an IssueCount message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.IssueCount
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.IssueCount} IssueCount
+                         */
+                        IssueCount.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.IssueCount)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.IssueCount();
+                            if (object.displayName != null)
+                                message.displayName = String(object.displayName);
+                            if (object.issueCount != null)
+                                message.issueCount = object.issueCount | 0;
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from an IssueCount message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.IssueCount
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IssueCount} message IssueCount
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        IssueCount.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.defaults) {
+                                object.displayName = "";
+                                object.issueCount = 0;
+                            }
+                            if (message.displayName != null && message.hasOwnProperty("displayName"))
+                                object.displayName = message.displayName;
+                            if (message.issueCount != null && message.hasOwnProperty("issueCount"))
+                                object.issueCount = message.issueCount;
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this IssueCount to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.IssueCount
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        IssueCount.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for IssueCount
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.IssueCount
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        IssueCount.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.IssueCount";
+                        };
+    
+                        return IssueCount;
+                    })();
+    
+                    v1beta.AdditionalDetail = (function() {
+    
+                        /**
+                         * Properties of an AdditionalDetail.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IAdditionalDetail
+                         * @property {google.cloud.databasecenter.v1beta.IRetentionSettingsInfo|null} [shortBackupRetentionInfo] AdditionalDetail shortBackupRetentionInfo
+                         * @property {google.cloud.databasecenter.v1beta.IBackupRunInfo|null} [backupRunInfo] AdditionalDetail backupRunInfo
+                         * @property {google.cloud.databasecenter.v1beta.ISCCInfo|null} [sccInfo] AdditionalDetail sccInfo
+                         * @property {google.cloud.databasecenter.v1beta.IRecommendationInfo|null} [recommendationInfo] AdditionalDetail recommendationInfo
+                         * @property {google.cloud.databasecenter.v1beta.IAutomatedBackupPolicyInfo|null} [automatedBackupPolicyInfo] AdditionalDetail automatedBackupPolicyInfo
+                         * @property {google.cloud.databasecenter.v1beta.IDeletionProtectionInfo|null} [deletionProtectionInfo] AdditionalDetail deletionProtectionInfo
+                         * @property {google.cloud.databasecenter.v1beta.IResourceSuspensionInfo|null} [resourceSuspensionInfo] AdditionalDetail resourceSuspensionInfo
+                         * @property {google.cloud.databasecenter.v1beta.IInefficientQueryInfo|null} [inefficientQueryInfo] AdditionalDetail inefficientQueryInfo
+                         * @property {google.cloud.databasecenter.v1beta.IOutdatedMinorVersionInfo|null} [outdatedMinorVersionInfo] AdditionalDetail outdatedMinorVersionInfo
+                         * @property {google.cloud.databasecenter.v1beta.IMaintenanceRecommendationInfo|null} [maintenanceRecommendationInfo] AdditionalDetail maintenanceRecommendationInfo
+                         * @property {google.cloud.databasecenter.v1beta.SignalSource|null} [signalSource] AdditionalDetail signalSource
+                         * @property {google.cloud.databasecenter.v1beta.SignalType|null} [signalType] AdditionalDetail signalType
+                         * @property {google.protobuf.ITimestamp|null} [signalEventTime] AdditionalDetail signalEventTime
+                         */
+    
+                        /**
+                         * Constructs a new AdditionalDetail.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents an AdditionalDetail.
+                         * @implements IAdditionalDetail
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IAdditionalDetail=} [properties] Properties to set
+                         */
+                        function AdditionalDetail(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * AdditionalDetail shortBackupRetentionInfo.
+                         * @member {google.cloud.databasecenter.v1beta.IRetentionSettingsInfo|null|undefined} shortBackupRetentionInfo
+                         * @memberof google.cloud.databasecenter.v1beta.AdditionalDetail
+                         * @instance
+                         */
+                        AdditionalDetail.prototype.shortBackupRetentionInfo = null;
+    
+                        /**
+                         * AdditionalDetail backupRunInfo.
+                         * @member {google.cloud.databasecenter.v1beta.IBackupRunInfo|null|undefined} backupRunInfo
+                         * @memberof google.cloud.databasecenter.v1beta.AdditionalDetail
+                         * @instance
+                         */
+                        AdditionalDetail.prototype.backupRunInfo = null;
+    
+                        /**
+                         * AdditionalDetail sccInfo.
+                         * @member {google.cloud.databasecenter.v1beta.ISCCInfo|null|undefined} sccInfo
+                         * @memberof google.cloud.databasecenter.v1beta.AdditionalDetail
+                         * @instance
+                         */
+                        AdditionalDetail.prototype.sccInfo = null;
+    
+                        /**
+                         * AdditionalDetail recommendationInfo.
+                         * @member {google.cloud.databasecenter.v1beta.IRecommendationInfo|null|undefined} recommendationInfo
+                         * @memberof google.cloud.databasecenter.v1beta.AdditionalDetail
+                         * @instance
+                         */
+                        AdditionalDetail.prototype.recommendationInfo = null;
+    
+                        /**
+                         * AdditionalDetail automatedBackupPolicyInfo.
+                         * @member {google.cloud.databasecenter.v1beta.IAutomatedBackupPolicyInfo|null|undefined} automatedBackupPolicyInfo
+                         * @memberof google.cloud.databasecenter.v1beta.AdditionalDetail
+                         * @instance
+                         */
+                        AdditionalDetail.prototype.automatedBackupPolicyInfo = null;
+    
+                        /**
+                         * AdditionalDetail deletionProtectionInfo.
+                         * @member {google.cloud.databasecenter.v1beta.IDeletionProtectionInfo|null|undefined} deletionProtectionInfo
+                         * @memberof google.cloud.databasecenter.v1beta.AdditionalDetail
+                         * @instance
+                         */
+                        AdditionalDetail.prototype.deletionProtectionInfo = null;
+    
+                        /**
+                         * AdditionalDetail resourceSuspensionInfo.
+                         * @member {google.cloud.databasecenter.v1beta.IResourceSuspensionInfo|null|undefined} resourceSuspensionInfo
+                         * @memberof google.cloud.databasecenter.v1beta.AdditionalDetail
+                         * @instance
+                         */
+                        AdditionalDetail.prototype.resourceSuspensionInfo = null;
+    
+                        /**
+                         * AdditionalDetail inefficientQueryInfo.
+                         * @member {google.cloud.databasecenter.v1beta.IInefficientQueryInfo|null|undefined} inefficientQueryInfo
+                         * @memberof google.cloud.databasecenter.v1beta.AdditionalDetail
+                         * @instance
+                         */
+                        AdditionalDetail.prototype.inefficientQueryInfo = null;
+    
+                        /**
+                         * AdditionalDetail outdatedMinorVersionInfo.
+                         * @member {google.cloud.databasecenter.v1beta.IOutdatedMinorVersionInfo|null|undefined} outdatedMinorVersionInfo
+                         * @memberof google.cloud.databasecenter.v1beta.AdditionalDetail
+                         * @instance
+                         */
+                        AdditionalDetail.prototype.outdatedMinorVersionInfo = null;
+    
+                        /**
+                         * AdditionalDetail maintenanceRecommendationInfo.
+                         * @member {google.cloud.databasecenter.v1beta.IMaintenanceRecommendationInfo|null|undefined} maintenanceRecommendationInfo
+                         * @memberof google.cloud.databasecenter.v1beta.AdditionalDetail
+                         * @instance
+                         */
+                        AdditionalDetail.prototype.maintenanceRecommendationInfo = null;
+    
+                        /**
+                         * AdditionalDetail signalSource.
+                         * @member {google.cloud.databasecenter.v1beta.SignalSource} signalSource
+                         * @memberof google.cloud.databasecenter.v1beta.AdditionalDetail
+                         * @instance
+                         */
+                        AdditionalDetail.prototype.signalSource = 0;
+    
+                        /**
+                         * AdditionalDetail signalType.
+                         * @member {google.cloud.databasecenter.v1beta.SignalType} signalType
+                         * @memberof google.cloud.databasecenter.v1beta.AdditionalDetail
+                         * @instance
+                         */
+                        AdditionalDetail.prototype.signalType = 0;
+    
+                        /**
+                         * AdditionalDetail signalEventTime.
+                         * @member {google.protobuf.ITimestamp|null|undefined} signalEventTime
+                         * @memberof google.cloud.databasecenter.v1beta.AdditionalDetail
+                         * @instance
+                         */
+                        AdditionalDetail.prototype.signalEventTime = null;
+    
+                        // OneOf field names bound to virtual getters and setters
+                        var $oneOfFields;
+    
+                        /**
+                         * AdditionalDetail detail.
+                         * @member {"shortBackupRetentionInfo"|"backupRunInfo"|"sccInfo"|"recommendationInfo"|"automatedBackupPolicyInfo"|"deletionProtectionInfo"|"resourceSuspensionInfo"|"inefficientQueryInfo"|"outdatedMinorVersionInfo"|"maintenanceRecommendationInfo"|undefined} detail
+                         * @memberof google.cloud.databasecenter.v1beta.AdditionalDetail
+                         * @instance
+                         */
+                        Object.defineProperty(AdditionalDetail.prototype, "detail", {
+                            get: $util.oneOfGetter($oneOfFields = ["shortBackupRetentionInfo", "backupRunInfo", "sccInfo", "recommendationInfo", "automatedBackupPolicyInfo", "deletionProtectionInfo", "resourceSuspensionInfo", "inefficientQueryInfo", "outdatedMinorVersionInfo", "maintenanceRecommendationInfo"]),
+                            set: $util.oneOfSetter($oneOfFields)
+                        });
+    
+                        /**
+                         * Creates a new AdditionalDetail instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.AdditionalDetail
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IAdditionalDetail=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.AdditionalDetail} AdditionalDetail instance
+                         */
+                        AdditionalDetail.create = function create(properties) {
+                            return new AdditionalDetail(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified AdditionalDetail message. Does not implicitly {@link google.cloud.databasecenter.v1beta.AdditionalDetail.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.AdditionalDetail
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IAdditionalDetail} message AdditionalDetail message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        AdditionalDetail.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.signalSource != null && Object.hasOwnProperty.call(message, "signalSource"))
+                                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.signalSource);
+                            if (message.shortBackupRetentionInfo != null && Object.hasOwnProperty.call(message, "shortBackupRetentionInfo"))
+                                $root.google.cloud.databasecenter.v1beta.RetentionSettingsInfo.encode(message.shortBackupRetentionInfo, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+                            if (message.backupRunInfo != null && Object.hasOwnProperty.call(message, "backupRunInfo"))
+                                $root.google.cloud.databasecenter.v1beta.BackupRunInfo.encode(message.backupRunInfo, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+                            if (message.sccInfo != null && Object.hasOwnProperty.call(message, "sccInfo"))
+                                $root.google.cloud.databasecenter.v1beta.SCCInfo.encode(message.sccInfo, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
+                            if (message.signalType != null && Object.hasOwnProperty.call(message, "signalType"))
+                                writer.uint32(/* id 5, wireType 0 =*/40).int32(message.signalType);
+                            if (message.recommendationInfo != null && Object.hasOwnProperty.call(message, "recommendationInfo"))
+                                $root.google.cloud.databasecenter.v1beta.RecommendationInfo.encode(message.recommendationInfo, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();
+                            if (message.signalEventTime != null && Object.hasOwnProperty.call(message, "signalEventTime"))
+                                $root.google.protobuf.Timestamp.encode(message.signalEventTime, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();
+                            if (message.automatedBackupPolicyInfo != null && Object.hasOwnProperty.call(message, "automatedBackupPolicyInfo"))
+                                $root.google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo.encode(message.automatedBackupPolicyInfo, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();
+                            if (message.deletionProtectionInfo != null && Object.hasOwnProperty.call(message, "deletionProtectionInfo"))
+                                $root.google.cloud.databasecenter.v1beta.DeletionProtectionInfo.encode(message.deletionProtectionInfo, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim();
+                            if (message.resourceSuspensionInfo != null && Object.hasOwnProperty.call(message, "resourceSuspensionInfo"))
+                                $root.google.cloud.databasecenter.v1beta.ResourceSuspensionInfo.encode(message.resourceSuspensionInfo, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();
+                            if (message.inefficientQueryInfo != null && Object.hasOwnProperty.call(message, "inefficientQueryInfo"))
+                                $root.google.cloud.databasecenter.v1beta.InefficientQueryInfo.encode(message.inefficientQueryInfo, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();
+                            if (message.outdatedMinorVersionInfo != null && Object.hasOwnProperty.call(message, "outdatedMinorVersionInfo"))
+                                $root.google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo.encode(message.outdatedMinorVersionInfo, writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim();
+                            if (message.maintenanceRecommendationInfo != null && Object.hasOwnProperty.call(message, "maintenanceRecommendationInfo"))
+                                $root.google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo.encode(message.maintenanceRecommendationInfo, writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim();
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified AdditionalDetail message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.AdditionalDetail.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.AdditionalDetail
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IAdditionalDetail} message AdditionalDetail message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        AdditionalDetail.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes an AdditionalDetail message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.AdditionalDetail
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.AdditionalDetail} AdditionalDetail
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        AdditionalDetail.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.AdditionalDetail();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 2: {
+                                        message.shortBackupRetentionInfo = $root.google.cloud.databasecenter.v1beta.RetentionSettingsInfo.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 3: {
+                                        message.backupRunInfo = $root.google.cloud.databasecenter.v1beta.BackupRunInfo.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 4: {
+                                        message.sccInfo = $root.google.cloud.databasecenter.v1beta.SCCInfo.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 6: {
+                                        message.recommendationInfo = $root.google.cloud.databasecenter.v1beta.RecommendationInfo.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 8: {
+                                        message.automatedBackupPolicyInfo = $root.google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 9: {
+                                        message.deletionProtectionInfo = $root.google.cloud.databasecenter.v1beta.DeletionProtectionInfo.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 10: {
+                                        message.resourceSuspensionInfo = $root.google.cloud.databasecenter.v1beta.ResourceSuspensionInfo.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 11: {
+                                        message.inefficientQueryInfo = $root.google.cloud.databasecenter.v1beta.InefficientQueryInfo.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 12: {
+                                        message.outdatedMinorVersionInfo = $root.google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 13: {
+                                        message.maintenanceRecommendationInfo = $root.google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 1: {
+                                        message.signalSource = reader.int32();
+                                        break;
+                                    }
+                                case 5: {
+                                        message.signalType = reader.int32();
+                                        break;
+                                    }
+                                case 7: {
+                                        message.signalEventTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes an AdditionalDetail message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.AdditionalDetail
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.AdditionalDetail} AdditionalDetail
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        AdditionalDetail.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies an AdditionalDetail message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.AdditionalDetail
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        AdditionalDetail.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            var properties = {};
+                            if (message.shortBackupRetentionInfo != null && message.hasOwnProperty("shortBackupRetentionInfo")) {
+                                properties.detail = 1;
+                                {
+                                    var error = $root.google.cloud.databasecenter.v1beta.RetentionSettingsInfo.verify(message.shortBackupRetentionInfo);
+                                    if (error)
+                                        return "shortBackupRetentionInfo." + error;
+                                }
+                            }
+                            if (message.backupRunInfo != null && message.hasOwnProperty("backupRunInfo")) {
+                                if (properties.detail === 1)
+                                    return "detail: multiple values";
+                                properties.detail = 1;
+                                {
+                                    var error = $root.google.cloud.databasecenter.v1beta.BackupRunInfo.verify(message.backupRunInfo);
+                                    if (error)
+                                        return "backupRunInfo." + error;
+                                }
+                            }
+                            if (message.sccInfo != null && message.hasOwnProperty("sccInfo")) {
+                                if (properties.detail === 1)
+                                    return "detail: multiple values";
+                                properties.detail = 1;
+                                {
+                                    var error = $root.google.cloud.databasecenter.v1beta.SCCInfo.verify(message.sccInfo);
+                                    if (error)
+                                        return "sccInfo." + error;
+                                }
+                            }
+                            if (message.recommendationInfo != null && message.hasOwnProperty("recommendationInfo")) {
+                                if (properties.detail === 1)
+                                    return "detail: multiple values";
+                                properties.detail = 1;
+                                {
+                                    var error = $root.google.cloud.databasecenter.v1beta.RecommendationInfo.verify(message.recommendationInfo);
+                                    if (error)
+                                        return "recommendationInfo." + error;
+                                }
+                            }
+                            if (message.automatedBackupPolicyInfo != null && message.hasOwnProperty("automatedBackupPolicyInfo")) {
+                                if (properties.detail === 1)
+                                    return "detail: multiple values";
+                                properties.detail = 1;
+                                {
+                                    var error = $root.google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo.verify(message.automatedBackupPolicyInfo);
+                                    if (error)
+                                        return "automatedBackupPolicyInfo." + error;
+                                }
+                            }
+                            if (message.deletionProtectionInfo != null && message.hasOwnProperty("deletionProtectionInfo")) {
+                                if (properties.detail === 1)
+                                    return "detail: multiple values";
+                                properties.detail = 1;
+                                {
+                                    var error = $root.google.cloud.databasecenter.v1beta.DeletionProtectionInfo.verify(message.deletionProtectionInfo);
+                                    if (error)
+                                        return "deletionProtectionInfo." + error;
+                                }
+                            }
+                            if (message.resourceSuspensionInfo != null && message.hasOwnProperty("resourceSuspensionInfo")) {
+                                if (properties.detail === 1)
+                                    return "detail: multiple values";
+                                properties.detail = 1;
+                                {
+                                    var error = $root.google.cloud.databasecenter.v1beta.ResourceSuspensionInfo.verify(message.resourceSuspensionInfo);
+                                    if (error)
+                                        return "resourceSuspensionInfo." + error;
+                                }
+                            }
+                            if (message.inefficientQueryInfo != null && message.hasOwnProperty("inefficientQueryInfo")) {
+                                if (properties.detail === 1)
+                                    return "detail: multiple values";
+                                properties.detail = 1;
+                                {
+                                    var error = $root.google.cloud.databasecenter.v1beta.InefficientQueryInfo.verify(message.inefficientQueryInfo);
+                                    if (error)
+                                        return "inefficientQueryInfo." + error;
+                                }
+                            }
+                            if (message.outdatedMinorVersionInfo != null && message.hasOwnProperty("outdatedMinorVersionInfo")) {
+                                if (properties.detail === 1)
+                                    return "detail: multiple values";
+                                properties.detail = 1;
+                                {
+                                    var error = $root.google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo.verify(message.outdatedMinorVersionInfo);
+                                    if (error)
+                                        return "outdatedMinorVersionInfo." + error;
+                                }
+                            }
+                            if (message.maintenanceRecommendationInfo != null && message.hasOwnProperty("maintenanceRecommendationInfo")) {
+                                if (properties.detail === 1)
+                                    return "detail: multiple values";
+                                properties.detail = 1;
+                                {
+                                    var error = $root.google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo.verify(message.maintenanceRecommendationInfo);
+                                    if (error)
+                                        return "maintenanceRecommendationInfo." + error;
+                                }
+                            }
+                            if (message.signalSource != null && message.hasOwnProperty("signalSource"))
+                                switch (message.signalSource) {
+                                default:
+                                    return "signalSource: enum value expected";
+                                case 0:
+                                case 1:
+                                case 2:
+                                case 3:
+                                case 4:
+                                    break;
+                                }
+                            if (message.signalType != null && message.hasOwnProperty("signalType"))
+                                switch (message.signalType) {
+                                default:
+                                    return "signalType: enum value expected";
+                                case 0:
+                                case 1:
+                                case 2:
+                                case 4:
+                                case 5:
+                                case 6:
+                                case 7:
+                                case 8:
+                                case 9:
+                                case 10:
+                                case 11:
+                                case 12:
+                                case 76:
+                                case 13:
+                                case 69:
+                                case 72:
+                                case 14:
+                                case 70:
+                                case 15:
+                                case 71:
+                                case 73:
+                                case 74:
+                                case 75:
+                                case 16:
+                                case 17:
+                                case 18:
+                                case 19:
+                                case 20:
+                                case 21:
+                                case 22:
+                                case 23:
+                                case 24:
+                                case 25:
+                                case 26:
+                                case 27:
+                                case 28:
+                                case 29:
+                                case 30:
+                                case 31:
+                                case 32:
+                                case 33:
+                                case 34:
+                                case 35:
+                                case 36:
+                                case 37:
+                                case 39:
+                                case 40:
+                                case 41:
+                                case 42:
+                                case 43:
+                                case 44:
+                                case 45:
+                                case 46:
+                                case 47:
+                                case 48:
+                                case 49:
+                                case 50:
+                                case 51:
+                                case 52:
+                                case 53:
+                                case 54:
+                                case 55:
+                                case 56:
+                                case 57:
+                                case 58:
+                                case 59:
+                                case 60:
+                                case 61:
+                                case 62:
+                                case 63:
+                                case 64:
+                                case 65:
+                                case 66:
+                                case 67:
+                                case 68:
+                                case 77:
+                                case 78:
+                                case 79:
+                                case 80:
+                                case 81:
+                                case 82:
+                                case 83:
+                                case 84:
+                                case 85:
+                                case 86:
+                                case 87:
+                                case 88:
+                                case 89:
+                                case 90:
+                                case 91:
+                                case 92:
+                                case 93:
+                                case 94:
+                                case 95:
+                                case 97:
+                                case 99:
+                                case 100:
+                                case 101:
+                                case 102:
+                                case 104:
+                                    break;
+                                }
+                            if (message.signalEventTime != null && message.hasOwnProperty("signalEventTime")) {
+                                var error = $root.google.protobuf.Timestamp.verify(message.signalEventTime);
+                                if (error)
+                                    return "signalEventTime." + error;
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates an AdditionalDetail message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.AdditionalDetail
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.AdditionalDetail} AdditionalDetail
+                         */
+                        AdditionalDetail.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.AdditionalDetail)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.AdditionalDetail();
+                            if (object.shortBackupRetentionInfo != null) {
+                                if (typeof object.shortBackupRetentionInfo !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.AdditionalDetail.shortBackupRetentionInfo: object expected");
+                                message.shortBackupRetentionInfo = $root.google.cloud.databasecenter.v1beta.RetentionSettingsInfo.fromObject(object.shortBackupRetentionInfo);
+                            }
+                            if (object.backupRunInfo != null) {
+                                if (typeof object.backupRunInfo !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.AdditionalDetail.backupRunInfo: object expected");
+                                message.backupRunInfo = $root.google.cloud.databasecenter.v1beta.BackupRunInfo.fromObject(object.backupRunInfo);
+                            }
+                            if (object.sccInfo != null) {
+                                if (typeof object.sccInfo !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.AdditionalDetail.sccInfo: object expected");
+                                message.sccInfo = $root.google.cloud.databasecenter.v1beta.SCCInfo.fromObject(object.sccInfo);
+                            }
+                            if (object.recommendationInfo != null) {
+                                if (typeof object.recommendationInfo !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.AdditionalDetail.recommendationInfo: object expected");
+                                message.recommendationInfo = $root.google.cloud.databasecenter.v1beta.RecommendationInfo.fromObject(object.recommendationInfo);
+                            }
+                            if (object.automatedBackupPolicyInfo != null) {
+                                if (typeof object.automatedBackupPolicyInfo !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.AdditionalDetail.automatedBackupPolicyInfo: object expected");
+                                message.automatedBackupPolicyInfo = $root.google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo.fromObject(object.automatedBackupPolicyInfo);
+                            }
+                            if (object.deletionProtectionInfo != null) {
+                                if (typeof object.deletionProtectionInfo !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.AdditionalDetail.deletionProtectionInfo: object expected");
+                                message.deletionProtectionInfo = $root.google.cloud.databasecenter.v1beta.DeletionProtectionInfo.fromObject(object.deletionProtectionInfo);
+                            }
+                            if (object.resourceSuspensionInfo != null) {
+                                if (typeof object.resourceSuspensionInfo !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.AdditionalDetail.resourceSuspensionInfo: object expected");
+                                message.resourceSuspensionInfo = $root.google.cloud.databasecenter.v1beta.ResourceSuspensionInfo.fromObject(object.resourceSuspensionInfo);
+                            }
+                            if (object.inefficientQueryInfo != null) {
+                                if (typeof object.inefficientQueryInfo !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.AdditionalDetail.inefficientQueryInfo: object expected");
+                                message.inefficientQueryInfo = $root.google.cloud.databasecenter.v1beta.InefficientQueryInfo.fromObject(object.inefficientQueryInfo);
+                            }
+                            if (object.outdatedMinorVersionInfo != null) {
+                                if (typeof object.outdatedMinorVersionInfo !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.AdditionalDetail.outdatedMinorVersionInfo: object expected");
+                                message.outdatedMinorVersionInfo = $root.google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo.fromObject(object.outdatedMinorVersionInfo);
+                            }
+                            if (object.maintenanceRecommendationInfo != null) {
+                                if (typeof object.maintenanceRecommendationInfo !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.AdditionalDetail.maintenanceRecommendationInfo: object expected");
+                                message.maintenanceRecommendationInfo = $root.google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo.fromObject(object.maintenanceRecommendationInfo);
+                            }
+                            switch (object.signalSource) {
+                            default:
+                                if (typeof object.signalSource === "number") {
+                                    message.signalSource = object.signalSource;
+                                    break;
+                                }
+                                break;
+                            case "SIGNAL_SOURCE_UNSPECIFIED":
+                            case 0:
+                                message.signalSource = 0;
+                                break;
+                            case "SIGNAL_SOURCE_RESOURCE_METADATA":
+                            case 1:
+                                message.signalSource = 1;
+                                break;
+                            case "SIGNAL_SOURCE_SECURITY_FINDINGS":
+                            case 2:
+                                message.signalSource = 2;
+                                break;
+                            case "SIGNAL_SOURCE_RECOMMENDER":
+                            case 3:
+                                message.signalSource = 3;
+                                break;
+                            case "SIGNAL_SOURCE_MODERN_OBSERVABILITY":
+                            case 4:
+                                message.signalSource = 4;
+                                break;
+                            }
+                            switch (object.signalType) {
+                            default:
+                                if (typeof object.signalType === "number") {
+                                    message.signalType = object.signalType;
+                                    break;
+                                }
+                                break;
+                            case "SIGNAL_TYPE_UNSPECIFIED":
+                            case 0:
+                                message.signalType = 0;
+                                break;
+                            case "SIGNAL_TYPE_RESOURCE_FAILOVER_PROTECTED":
+                            case 1:
+                                message.signalType = 1;
+                                break;
+                            case "SIGNAL_TYPE_GROUP_MULTIREGIONAL":
+                            case 2:
+                                message.signalType = 2;
+                                break;
+                            case "SIGNAL_TYPE_NO_AUTOMATED_BACKUP_POLICY":
+                            case 4:
+                                message.signalType = 4;
+                                break;
+                            case "SIGNAL_TYPE_SHORT_BACKUP_RETENTION":
+                            case 5:
+                                message.signalType = 5;
+                                break;
+                            case "SIGNAL_TYPE_LAST_BACKUP_FAILED":
+                            case 6:
+                                message.signalType = 6;
+                                break;
+                            case "SIGNAL_TYPE_LAST_BACKUP_OLD":
+                            case 7:
+                                message.signalType = 7;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_2_0":
+                            case 8:
+                                message.signalType = 8;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_3":
+                            case 9:
+                                message.signalType = 9;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_2":
+                            case 10:
+                                message.signalType = 10;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_1":
+                            case 11:
+                                message.signalType = 11;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_0":
+                            case 12:
+                                message.signalType = 12;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_CONTROLS_V8_0":
+                            case 76:
+                                message.signalType = 76;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_NIST_800_53":
+                            case 13:
+                                message.signalType = 13;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_NIST_800_53_R5":
+                            case 69:
+                                message.signalType = 69;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_NIST_CYBERSECURITY_FRAMEWORK_V1_0":
+                            case 72:
+                                message.signalType = 72;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_ISO_27001":
+                            case 14:
+                                message.signalType = 14;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_ISO_27001_V2022":
+                            case 70:
+                                message.signalType = 70;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_PCI_DSS_V3_2_1":
+                            case 15:
+                                message.signalType = 15;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_PCI_DSS_V4_0":
+                            case 71:
+                                message.signalType = 71;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CLOUD_CONTROLS_MATRIX_V4":
+                            case 73:
+                                message.signalType = 73;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_HIPAA":
+                            case 74:
+                                message.signalType = 74;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_SOC2_V2017":
+                            case 75:
+                                message.signalType = 75;
+                                break;
+                            case "SIGNAL_TYPE_LOGS_NOT_OPTIMIZED_FOR_TROUBLESHOOTING":
+                            case 16:
+                                message.signalType = 16;
+                                break;
+                            case "SIGNAL_TYPE_QUERY_DURATIONS_NOT_LOGGED":
+                            case 17:
+                                message.signalType = 17;
+                                break;
+                            case "SIGNAL_TYPE_VERBOSE_ERROR_LOGGING":
+                            case 18:
+                                message.signalType = 18;
+                                break;
+                            case "SIGNAL_TYPE_QUERY_LOCK_WAITS_NOT_LOGGED":
+                            case 19:
+                                message.signalType = 19;
+                                break;
+                            case "SIGNAL_TYPE_LOGGING_MOST_ERRORS":
+                            case 20:
+                                message.signalType = 20;
+                                break;
+                            case "SIGNAL_TYPE_LOGGING_ONLY_CRITICAL_ERRORS":
+                            case 21:
+                                message.signalType = 21;
+                                break;
+                            case "SIGNAL_TYPE_MINIMAL_ERROR_LOGGING":
+                            case 22:
+                                message.signalType = 22;
+                                break;
+                            case "SIGNAL_TYPE_QUERY_STATS_LOGGED":
+                            case 23:
+                                message.signalType = 23;
+                                break;
+                            case "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_CLIENT_HOSTNAME":
+                            case 24:
+                                message.signalType = 24;
+                                break;
+                            case "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PARSER_STATS":
+                            case 25:
+                                message.signalType = 25;
+                                break;
+                            case "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PLANNER_STATS":
+                            case 26:
+                                message.signalType = 26;
+                                break;
+                            case "SIGNAL_TYPE_NOT_LOGGING_ONLY_DDL_STATEMENTS":
+                            case 27:
+                                message.signalType = 27;
+                                break;
+                            case "SIGNAL_TYPE_LOGGING_QUERY_STATS":
+                            case 28:
+                                message.signalType = 28;
+                                break;
+                            case "SIGNAL_TYPE_NOT_LOGGING_TEMPORARY_FILES":
+                            case 29:
+                                message.signalType = 29;
+                                break;
+                            case "SIGNAL_TYPE_CONNECTION_MAX_NOT_CONFIGURED":
+                            case 30:
+                                message.signalType = 30;
+                                break;
+                            case "SIGNAL_TYPE_USER_OPTIONS_CONFIGURED":
+                            case 31:
+                                message.signalType = 31;
+                                break;
+                            case "SIGNAL_TYPE_EXPOSED_TO_PUBLIC_ACCESS":
+                            case 32:
+                                message.signalType = 32;
+                                break;
+                            case "SIGNAL_TYPE_UNENCRYPTED_CONNECTIONS":
+                            case 33:
+                                message.signalType = 33;
+                                break;
+                            case "SIGNAL_TYPE_NO_ROOT_PASSWORD":
+                            case 34:
+                                message.signalType = 34;
+                                break;
+                            case "SIGNAL_TYPE_WEAK_ROOT_PASSWORD":
+                            case 35:
+                                message.signalType = 35;
+                                break;
+                            case "SIGNAL_TYPE_ENCRYPTION_KEY_NOT_CUSTOMER_MANAGED":
+                            case 36:
+                                message.signalType = 36;
+                                break;
+                            case "SIGNAL_TYPE_SERVER_AUTHENTICATION_NOT_REQUIRED":
+                            case 37:
+                                message.signalType = 37;
+                                break;
+                            case "SIGNAL_TYPE_EXPOSED_TO_EXTERNAL_SCRIPTS":
+                            case 39:
+                                message.signalType = 39;
+                                break;
+                            case "SIGNAL_TYPE_EXPOSED_TO_LOCAL_DATA_LOADS":
+                            case 40:
+                                message.signalType = 40;
+                                break;
+                            case "SIGNAL_TYPE_CONNECTION_ATTEMPTS_NOT_LOGGED":
+                            case 41:
+                                message.signalType = 41;
+                                break;
+                            case "SIGNAL_TYPE_DISCONNECTIONS_NOT_LOGGED":
+                            case 42:
+                                message.signalType = 42;
+                                break;
+                            case "SIGNAL_TYPE_LOGGING_EXCESSIVE_STATEMENT_INFO":
+                            case 43:
+                                message.signalType = 43;
+                                break;
+                            case "SIGNAL_TYPE_EXPOSED_TO_REMOTE_ACCESS":
+                            case 44:
+                                message.signalType = 44;
+                                break;
+                            case "SIGNAL_TYPE_DATABASE_NAMES_EXPOSED":
+                            case 45:
+                                message.signalType = 45;
+                                break;
+                            case "SIGNAL_TYPE_SENSITIVE_TRACE_INFO_NOT_MASKED":
+                            case 46:
+                                message.signalType = 46;
+                                break;
+                            case "SIGNAL_TYPE_PUBLIC_IP_ENABLED":
+                            case 47:
+                                message.signalType = 47;
+                                break;
+                            case "SIGNAL_TYPE_IDLE":
+                            case 48:
+                                message.signalType = 48;
+                                break;
+                            case "SIGNAL_TYPE_OVERPROVISIONED":
+                            case 49:
+                                message.signalType = 49;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_NUMBER_OF_OPEN_TABLES":
+                            case 50:
+                                message.signalType = 50;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_NUMBER_OF_TABLES":
+                            case 51:
+                                message.signalType = 51;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_TRANSACTION_ID_UTILIZATION":
+                            case 52:
+                                message.signalType = 52;
+                                break;
+                            case "SIGNAL_TYPE_UNDERPROVISIONED":
+                            case 53:
+                                message.signalType = 53;
+                                break;
+                            case "SIGNAL_TYPE_OUT_OF_DISK":
+                            case 54:
+                                message.signalType = 54;
+                                break;
+                            case "SIGNAL_TYPE_SERVER_CERTIFICATE_NEAR_EXPIRY":
+                            case 55:
+                                message.signalType = 55;
+                                break;
+                            case "SIGNAL_TYPE_DATABASE_AUDITING_DISABLED":
+                            case 56:
+                                message.signalType = 56;
+                                break;
+                            case "SIGNAL_TYPE_RESTRICT_AUTHORIZED_NETWORKS":
+                            case 57:
+                                message.signalType = 57;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATE_POLICY_RESTRICT_PUBLIC_IP":
+                            case 58:
+                                message.signalType = 58;
+                                break;
+                            case "SIGNAL_TYPE_QUOTA_LIMIT":
+                            case 59:
+                                message.signalType = 59;
+                                break;
+                            case "SIGNAL_TYPE_NO_PASSWORD_POLICY":
+                            case 60:
+                                message.signalType = 60;
+                                break;
+                            case "SIGNAL_TYPE_CONNECTIONS_PERFORMANCE_IMPACT":
+                            case 61:
+                                message.signalType = 61;
+                                break;
+                            case "SIGNAL_TYPE_TMP_TABLES_PERFORMANCE_IMPACT":
+                            case 62:
+                                message.signalType = 62;
+                                break;
+                            case "SIGNAL_TYPE_TRANS_LOGS_PERFORMANCE_IMPACT":
+                            case 63:
+                                message.signalType = 63;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_JOINS_WITHOUT_INDEXES":
+                            case 64:
+                                message.signalType = 64;
+                                break;
+                            case "SIGNAL_TYPE_SUPERUSER_WRITING_TO_USER_TABLES":
+                            case 65:
+                                message.signalType = 65;
+                                break;
+                            case "SIGNAL_TYPE_USER_GRANTED_ALL_PERMISSIONS":
+                            case 66:
+                                message.signalType = 66;
+                                break;
+                            case "SIGNAL_TYPE_DATA_EXPORT_TO_EXTERNAL_CLOUD_STORAGE_BUCKET":
+                            case 67:
+                                message.signalType = 67;
+                                break;
+                            case "SIGNAL_TYPE_DATA_EXPORT_TO_PUBLIC_CLOUD_STORAGE_BUCKET":
+                            case 68:
+                                message.signalType = 68;
+                                break;
+                            case "SIGNAL_TYPE_WEAK_PASSWORD_HASH_ALGORITHM":
+                            case 77:
+                                message.signalType = 77;
+                                break;
+                            case "SIGNAL_TYPE_NO_USER_PASSWORD_POLICY":
+                            case 78:
+                                message.signalType = 78;
+                                break;
+                            case "SIGNAL_TYPE_HOT_NODE":
+                            case 79:
+                                message.signalType = 79;
+                                break;
+                            case "SIGNAL_TYPE_NO_DELETION_PROTECTION":
+                            case 80:
+                                message.signalType = 80;
+                                break;
+                            case "SIGNAL_TYPE_NO_POINT_IN_TIME_RECOVERY":
+                            case 81:
+                                message.signalType = 81;
+                                break;
+                            case "SIGNAL_TYPE_RESOURCE_SUSPENDED":
+                            case 82:
+                                message.signalType = 82;
+                                break;
+                            case "SIGNAL_TYPE_EXPENSIVE_COMMANDS":
+                            case 83:
+                                message.signalType = 83;
+                                break;
+                            case "SIGNAL_TYPE_NO_MAINTENANCE_POLICY_CONFIGURED":
+                            case 84:
+                                message.signalType = 84;
+                                break;
+                            case "SIGNAL_TYPE_INEFFICIENT_QUERY":
+                            case 85:
+                                message.signalType = 85;
+                                break;
+                            case "SIGNAL_TYPE_READ_INTENSIVE_WORKLOAD":
+                            case 86:
+                                message.signalType = 86;
+                                break;
+                            case "SIGNAL_TYPE_MEMORY_LIMIT":
+                            case 87:
+                                message.signalType = 87;
+                                break;
+                            case "SIGNAL_TYPE_MAX_SERVER_MEMORY":
+                            case 88:
+                                message.signalType = 88;
+                                break;
+                            case "SIGNAL_TYPE_LARGE_ROWS":
+                            case 89:
+                                message.signalType = 89;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_WRITE_PRESSURE":
+                            case 90:
+                                message.signalType = 90;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_READ_PRESSURE":
+                            case 91:
+                                message.signalType = 91;
+                                break;
+                            case "SIGNAL_TYPE_ENCRYPTION_ORG_POLICY_NOT_SATISFIED":
+                            case 92:
+                                message.signalType = 92;
+                                break;
+                            case "SIGNAL_TYPE_LOCATION_ORG_POLICY_NOT_SATISFIED":
+                            case 93:
+                                message.signalType = 93;
+                                break;
+                            case "SIGNAL_TYPE_OUTDATED_MINOR_VERSION":
+                            case 94:
+                                message.signalType = 94;
+                                break;
+                            case "SIGNAL_TYPE_SCHEMA_NOT_OPTIMIZED":
+                            case 95:
+                                message.signalType = 95;
+                                break;
+                            case "SIGNAL_TYPE_REPLICATION_LAG":
+                            case 97:
+                                message.signalType = 97;
+                                break;
+                            case "SIGNAL_TYPE_OUTDATED_CLIENT":
+                            case 99:
+                                message.signalType = 99;
+                                break;
+                            case "SIGNAL_TYPE_DATABOOST_DISABLED":
+                            case 100:
+                                message.signalType = 100;
+                                break;
+                            case "SIGNAL_TYPE_RECOMMENDED_MAINTENANCE_POLICIES":
+                            case 101:
+                                message.signalType = 101;
+                                break;
+                            case "SIGNAL_TYPE_EXTENDED_SUPPORT":
+                            case 102:
+                                message.signalType = 102;
+                                break;
+                            case "SIGNAL_TYPE_VERSION_NEARING_END_OF_LIFE":
+                            case 104:
+                                message.signalType = 104;
+                                break;
+                            }
+                            if (object.signalEventTime != null) {
+                                if (typeof object.signalEventTime !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.AdditionalDetail.signalEventTime: object expected");
+                                message.signalEventTime = $root.google.protobuf.Timestamp.fromObject(object.signalEventTime);
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from an AdditionalDetail message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.AdditionalDetail
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.AdditionalDetail} message AdditionalDetail
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        AdditionalDetail.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.defaults) {
+                                object.signalSource = options.enums === String ? "SIGNAL_SOURCE_UNSPECIFIED" : 0;
+                                object.signalType = options.enums === String ? "SIGNAL_TYPE_UNSPECIFIED" : 0;
+                                object.signalEventTime = null;
+                            }
+                            if (message.signalSource != null && message.hasOwnProperty("signalSource"))
+                                object.signalSource = options.enums === String ? $root.google.cloud.databasecenter.v1beta.SignalSource[message.signalSource] === undefined ? message.signalSource : $root.google.cloud.databasecenter.v1beta.SignalSource[message.signalSource] : message.signalSource;
+                            if (message.shortBackupRetentionInfo != null && message.hasOwnProperty("shortBackupRetentionInfo")) {
+                                object.shortBackupRetentionInfo = $root.google.cloud.databasecenter.v1beta.RetentionSettingsInfo.toObject(message.shortBackupRetentionInfo, options);
+                                if (options.oneofs)
+                                    object.detail = "shortBackupRetentionInfo";
+                            }
+                            if (message.backupRunInfo != null && message.hasOwnProperty("backupRunInfo")) {
+                                object.backupRunInfo = $root.google.cloud.databasecenter.v1beta.BackupRunInfo.toObject(message.backupRunInfo, options);
+                                if (options.oneofs)
+                                    object.detail = "backupRunInfo";
+                            }
+                            if (message.sccInfo != null && message.hasOwnProperty("sccInfo")) {
+                                object.sccInfo = $root.google.cloud.databasecenter.v1beta.SCCInfo.toObject(message.sccInfo, options);
+                                if (options.oneofs)
+                                    object.detail = "sccInfo";
+                            }
+                            if (message.signalType != null && message.hasOwnProperty("signalType"))
+                                object.signalType = options.enums === String ? $root.google.cloud.databasecenter.v1beta.SignalType[message.signalType] === undefined ? message.signalType : $root.google.cloud.databasecenter.v1beta.SignalType[message.signalType] : message.signalType;
+                            if (message.recommendationInfo != null && message.hasOwnProperty("recommendationInfo")) {
+                                object.recommendationInfo = $root.google.cloud.databasecenter.v1beta.RecommendationInfo.toObject(message.recommendationInfo, options);
+                                if (options.oneofs)
+                                    object.detail = "recommendationInfo";
+                            }
+                            if (message.signalEventTime != null && message.hasOwnProperty("signalEventTime"))
+                                object.signalEventTime = $root.google.protobuf.Timestamp.toObject(message.signalEventTime, options);
+                            if (message.automatedBackupPolicyInfo != null && message.hasOwnProperty("automatedBackupPolicyInfo")) {
+                                object.automatedBackupPolicyInfo = $root.google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo.toObject(message.automatedBackupPolicyInfo, options);
+                                if (options.oneofs)
+                                    object.detail = "automatedBackupPolicyInfo";
+                            }
+                            if (message.deletionProtectionInfo != null && message.hasOwnProperty("deletionProtectionInfo")) {
+                                object.deletionProtectionInfo = $root.google.cloud.databasecenter.v1beta.DeletionProtectionInfo.toObject(message.deletionProtectionInfo, options);
+                                if (options.oneofs)
+                                    object.detail = "deletionProtectionInfo";
+                            }
+                            if (message.resourceSuspensionInfo != null && message.hasOwnProperty("resourceSuspensionInfo")) {
+                                object.resourceSuspensionInfo = $root.google.cloud.databasecenter.v1beta.ResourceSuspensionInfo.toObject(message.resourceSuspensionInfo, options);
+                                if (options.oneofs)
+                                    object.detail = "resourceSuspensionInfo";
+                            }
+                            if (message.inefficientQueryInfo != null && message.hasOwnProperty("inefficientQueryInfo")) {
+                                object.inefficientQueryInfo = $root.google.cloud.databasecenter.v1beta.InefficientQueryInfo.toObject(message.inefficientQueryInfo, options);
+                                if (options.oneofs)
+                                    object.detail = "inefficientQueryInfo";
+                            }
+                            if (message.outdatedMinorVersionInfo != null && message.hasOwnProperty("outdatedMinorVersionInfo")) {
+                                object.outdatedMinorVersionInfo = $root.google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo.toObject(message.outdatedMinorVersionInfo, options);
+                                if (options.oneofs)
+                                    object.detail = "outdatedMinorVersionInfo";
+                            }
+                            if (message.maintenanceRecommendationInfo != null && message.hasOwnProperty("maintenanceRecommendationInfo")) {
+                                object.maintenanceRecommendationInfo = $root.google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo.toObject(message.maintenanceRecommendationInfo, options);
+                                if (options.oneofs)
+                                    object.detail = "maintenanceRecommendationInfo";
+                            }
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this AdditionalDetail to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.AdditionalDetail
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        AdditionalDetail.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for AdditionalDetail
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.AdditionalDetail
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        AdditionalDetail.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.AdditionalDetail";
+                        };
+    
+                        return AdditionalDetail;
+                    })();
+    
+                    v1beta.SubResource = (function() {
+    
+                        /**
+                         * Properties of a SubResource.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface ISubResource
+                         * @property {string|null} [resourceType] SubResource resourceType
+                         * @property {string|null} [fullResourceName] SubResource fullResourceName
+                         * @property {google.cloud.databasecenter.v1beta.IProduct|null} [product] SubResource product
+                         * @property {string|null} [container] SubResource container
+                         */
+    
+                        /**
+                         * Constructs a new SubResource.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a SubResource.
+                         * @implements ISubResource
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.ISubResource=} [properties] Properties to set
+                         */
+                        function SubResource(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * SubResource resourceType.
+                         * @member {string} resourceType
+                         * @memberof google.cloud.databasecenter.v1beta.SubResource
+                         * @instance
+                         */
+                        SubResource.prototype.resourceType = "";
+    
+                        /**
+                         * SubResource fullResourceName.
+                         * @member {string} fullResourceName
+                         * @memberof google.cloud.databasecenter.v1beta.SubResource
+                         * @instance
+                         */
+                        SubResource.prototype.fullResourceName = "";
+    
+                        /**
+                         * SubResource product.
+                         * @member {google.cloud.databasecenter.v1beta.IProduct|null|undefined} product
+                         * @memberof google.cloud.databasecenter.v1beta.SubResource
+                         * @instance
+                         */
+                        SubResource.prototype.product = null;
+    
+                        /**
+                         * SubResource container.
+                         * @member {string} container
+                         * @memberof google.cloud.databasecenter.v1beta.SubResource
+                         * @instance
+                         */
+                        SubResource.prototype.container = "";
+    
+                        /**
+                         * Creates a new SubResource instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.SubResource
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ISubResource=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.SubResource} SubResource instance
+                         */
+                        SubResource.create = function create(properties) {
+                            return new SubResource(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified SubResource message. Does not implicitly {@link google.cloud.databasecenter.v1beta.SubResource.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.SubResource
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ISubResource} message SubResource message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        SubResource.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.resourceType != null && Object.hasOwnProperty.call(message, "resourceType"))
+                                writer.uint32(/* id 1, wireType 2 =*/10).string(message.resourceType);
+                            if (message.fullResourceName != null && Object.hasOwnProperty.call(message, "fullResourceName"))
+                                writer.uint32(/* id 2, wireType 2 =*/18).string(message.fullResourceName);
+                            if (message.product != null && Object.hasOwnProperty.call(message, "product"))
+                                $root.google.cloud.databasecenter.v1beta.Product.encode(message.product, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+                            if (message.container != null && Object.hasOwnProperty.call(message, "container"))
+                                writer.uint32(/* id 4, wireType 2 =*/34).string(message.container);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified SubResource message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.SubResource.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.SubResource
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ISubResource} message SubResource message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        SubResource.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a SubResource message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.SubResource
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.SubResource} SubResource
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        SubResource.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.SubResource();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.resourceType = reader.string();
+                                        break;
+                                    }
+                                case 2: {
+                                        message.fullResourceName = reader.string();
+                                        break;
+                                    }
+                                case 3: {
+                                        message.product = $root.google.cloud.databasecenter.v1beta.Product.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 4: {
+                                        message.container = reader.string();
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a SubResource message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.SubResource
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.SubResource} SubResource
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        SubResource.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a SubResource message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.SubResource
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        SubResource.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.resourceType != null && message.hasOwnProperty("resourceType"))
+                                if (!$util.isString(message.resourceType))
+                                    return "resourceType: string expected";
+                            if (message.fullResourceName != null && message.hasOwnProperty("fullResourceName"))
+                                if (!$util.isString(message.fullResourceName))
+                                    return "fullResourceName: string expected";
+                            if (message.product != null && message.hasOwnProperty("product")) {
+                                var error = $root.google.cloud.databasecenter.v1beta.Product.verify(message.product);
+                                if (error)
+                                    return "product." + error;
+                            }
+                            if (message.container != null && message.hasOwnProperty("container"))
+                                if (!$util.isString(message.container))
+                                    return "container: string expected";
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a SubResource message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.SubResource
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.SubResource} SubResource
+                         */
+                        SubResource.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.SubResource)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.SubResource();
+                            if (object.resourceType != null)
+                                message.resourceType = String(object.resourceType);
+                            if (object.fullResourceName != null)
+                                message.fullResourceName = String(object.fullResourceName);
+                            if (object.product != null) {
+                                if (typeof object.product !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.SubResource.product: object expected");
+                                message.product = $root.google.cloud.databasecenter.v1beta.Product.fromObject(object.product);
+                            }
+                            if (object.container != null)
+                                message.container = String(object.container);
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a SubResource message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.SubResource
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.SubResource} message SubResource
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        SubResource.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.defaults) {
+                                object.resourceType = "";
+                                object.fullResourceName = "";
+                                object.product = null;
+                                object.container = "";
+                            }
+                            if (message.resourceType != null && message.hasOwnProperty("resourceType"))
+                                object.resourceType = message.resourceType;
+                            if (message.fullResourceName != null && message.hasOwnProperty("fullResourceName"))
+                                object.fullResourceName = message.fullResourceName;
+                            if (message.product != null && message.hasOwnProperty("product"))
+                                object.product = $root.google.cloud.databasecenter.v1beta.Product.toObject(message.product, options);
+                            if (message.container != null && message.hasOwnProperty("container"))
+                                object.container = message.container;
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this SubResource to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.SubResource
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        SubResource.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for SubResource
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.SubResource
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        SubResource.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.SubResource";
+                        };
+    
+                        return SubResource;
+                    })();
+    
+                    v1beta.RetentionSettingsInfo = (function() {
+    
+                        /**
+                         * Properties of a RetentionSettingsInfo.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IRetentionSettingsInfo
+                         * @property {google.protobuf.IInt32Value|null} [quantityBasedRetention] RetentionSettingsInfo quantityBasedRetention
+                         * @property {google.protobuf.IDuration|null} [durationBasedRetention] RetentionSettingsInfo durationBasedRetention
+                         * @property {google.protobuf.ITimestamp|null} [timestampBasedRetentionTime] RetentionSettingsInfo timestampBasedRetentionTime
+                         * @property {google.cloud.databasecenter.v1beta.ISubResource|null} [subResource] RetentionSettingsInfo subResource
+                         */
+    
+                        /**
+                         * Constructs a new RetentionSettingsInfo.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a RetentionSettingsInfo.
+                         * @implements IRetentionSettingsInfo
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IRetentionSettingsInfo=} [properties] Properties to set
+                         */
+                        function RetentionSettingsInfo(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * RetentionSettingsInfo quantityBasedRetention.
+                         * @member {google.protobuf.IInt32Value|null|undefined} quantityBasedRetention
+                         * @memberof google.cloud.databasecenter.v1beta.RetentionSettingsInfo
+                         * @instance
+                         */
+                        RetentionSettingsInfo.prototype.quantityBasedRetention = null;
+    
+                        /**
+                         * RetentionSettingsInfo durationBasedRetention.
+                         * @member {google.protobuf.IDuration|null|undefined} durationBasedRetention
+                         * @memberof google.cloud.databasecenter.v1beta.RetentionSettingsInfo
+                         * @instance
+                         */
+                        RetentionSettingsInfo.prototype.durationBasedRetention = null;
+    
+                        /**
+                         * RetentionSettingsInfo timestampBasedRetentionTime.
+                         * @member {google.protobuf.ITimestamp|null|undefined} timestampBasedRetentionTime
+                         * @memberof google.cloud.databasecenter.v1beta.RetentionSettingsInfo
+                         * @instance
+                         */
+                        RetentionSettingsInfo.prototype.timestampBasedRetentionTime = null;
+    
+                        /**
+                         * RetentionSettingsInfo subResource.
+                         * @member {google.cloud.databasecenter.v1beta.ISubResource|null|undefined} subResource
+                         * @memberof google.cloud.databasecenter.v1beta.RetentionSettingsInfo
+                         * @instance
+                         */
+                        RetentionSettingsInfo.prototype.subResource = null;
+    
+                        // OneOf field names bound to virtual getters and setters
+                        var $oneOfFields;
+    
+                        /**
+                         * RetentionSettingsInfo retention.
+                         * @member {"quantityBasedRetention"|"durationBasedRetention"|"timestampBasedRetentionTime"|undefined} retention
+                         * @memberof google.cloud.databasecenter.v1beta.RetentionSettingsInfo
+                         * @instance
+                         */
+                        Object.defineProperty(RetentionSettingsInfo.prototype, "retention", {
+                            get: $util.oneOfGetter($oneOfFields = ["quantityBasedRetention", "durationBasedRetention", "timestampBasedRetentionTime"]),
+                            set: $util.oneOfSetter($oneOfFields)
+                        });
+    
+                        /**
+                         * Creates a new RetentionSettingsInfo instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.RetentionSettingsInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IRetentionSettingsInfo=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.RetentionSettingsInfo} RetentionSettingsInfo instance
+                         */
+                        RetentionSettingsInfo.create = function create(properties) {
+                            return new RetentionSettingsInfo(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified RetentionSettingsInfo message. Does not implicitly {@link google.cloud.databasecenter.v1beta.RetentionSettingsInfo.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.RetentionSettingsInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IRetentionSettingsInfo} message RetentionSettingsInfo message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        RetentionSettingsInfo.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.quantityBasedRetention != null && Object.hasOwnProperty.call(message, "quantityBasedRetention"))
+                                $root.google.protobuf.Int32Value.encode(message.quantityBasedRetention, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+                            if (message.subResource != null && Object.hasOwnProperty.call(message, "subResource"))
+                                $root.google.cloud.databasecenter.v1beta.SubResource.encode(message.subResource, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
+                            if (message.durationBasedRetention != null && Object.hasOwnProperty.call(message, "durationBasedRetention"))
+                                $root.google.protobuf.Duration.encode(message.durationBasedRetention, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
+                            if (message.timestampBasedRetentionTime != null && Object.hasOwnProperty.call(message, "timestampBasedRetentionTime"))
+                                $root.google.protobuf.Timestamp.encode(message.timestampBasedRetentionTime, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified RetentionSettingsInfo message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.RetentionSettingsInfo.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.RetentionSettingsInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IRetentionSettingsInfo} message RetentionSettingsInfo message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        RetentionSettingsInfo.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a RetentionSettingsInfo message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.RetentionSettingsInfo
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.RetentionSettingsInfo} RetentionSettingsInfo
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        RetentionSettingsInfo.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.RetentionSettingsInfo();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 3: {
+                                        message.quantityBasedRetention = $root.google.protobuf.Int32Value.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 5: {
+                                        message.durationBasedRetention = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 6: {
+                                        message.timestampBasedRetentionTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 4: {
+                                        message.subResource = $root.google.cloud.databasecenter.v1beta.SubResource.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a RetentionSettingsInfo message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.RetentionSettingsInfo
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.RetentionSettingsInfo} RetentionSettingsInfo
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        RetentionSettingsInfo.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a RetentionSettingsInfo message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.RetentionSettingsInfo
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        RetentionSettingsInfo.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            var properties = {};
+                            if (message.quantityBasedRetention != null && message.hasOwnProperty("quantityBasedRetention")) {
+                                properties.retention = 1;
+                                {
+                                    var error = $root.google.protobuf.Int32Value.verify(message.quantityBasedRetention);
+                                    if (error)
+                                        return "quantityBasedRetention." + error;
+                                }
+                            }
+                            if (message.durationBasedRetention != null && message.hasOwnProperty("durationBasedRetention")) {
+                                if (properties.retention === 1)
+                                    return "retention: multiple values";
+                                properties.retention = 1;
+                                {
+                                    var error = $root.google.protobuf.Duration.verify(message.durationBasedRetention);
+                                    if (error)
+                                        return "durationBasedRetention." + error;
+                                }
+                            }
+                            if (message.timestampBasedRetentionTime != null && message.hasOwnProperty("timestampBasedRetentionTime")) {
+                                if (properties.retention === 1)
+                                    return "retention: multiple values";
+                                properties.retention = 1;
+                                {
+                                    var error = $root.google.protobuf.Timestamp.verify(message.timestampBasedRetentionTime);
+                                    if (error)
+                                        return "timestampBasedRetentionTime." + error;
+                                }
+                            }
+                            if (message.subResource != null && message.hasOwnProperty("subResource")) {
+                                var error = $root.google.cloud.databasecenter.v1beta.SubResource.verify(message.subResource);
+                                if (error)
+                                    return "subResource." + error;
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a RetentionSettingsInfo message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.RetentionSettingsInfo
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.RetentionSettingsInfo} RetentionSettingsInfo
+                         */
+                        RetentionSettingsInfo.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.RetentionSettingsInfo)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.RetentionSettingsInfo();
+                            if (object.quantityBasedRetention != null) {
+                                if (typeof object.quantityBasedRetention !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.RetentionSettingsInfo.quantityBasedRetention: object expected");
+                                message.quantityBasedRetention = $root.google.protobuf.Int32Value.fromObject(object.quantityBasedRetention);
+                            }
+                            if (object.durationBasedRetention != null) {
+                                if (typeof object.durationBasedRetention !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.RetentionSettingsInfo.durationBasedRetention: object expected");
+                                message.durationBasedRetention = $root.google.protobuf.Duration.fromObject(object.durationBasedRetention);
+                            }
+                            if (object.timestampBasedRetentionTime != null) {
+                                if (typeof object.timestampBasedRetentionTime !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.RetentionSettingsInfo.timestampBasedRetentionTime: object expected");
+                                message.timestampBasedRetentionTime = $root.google.protobuf.Timestamp.fromObject(object.timestampBasedRetentionTime);
+                            }
+                            if (object.subResource != null) {
+                                if (typeof object.subResource !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.RetentionSettingsInfo.subResource: object expected");
+                                message.subResource = $root.google.cloud.databasecenter.v1beta.SubResource.fromObject(object.subResource);
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a RetentionSettingsInfo message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.RetentionSettingsInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.RetentionSettingsInfo} message RetentionSettingsInfo
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        RetentionSettingsInfo.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.defaults)
+                                object.subResource = null;
+                            if (message.quantityBasedRetention != null && message.hasOwnProperty("quantityBasedRetention")) {
+                                object.quantityBasedRetention = $root.google.protobuf.Int32Value.toObject(message.quantityBasedRetention, options);
+                                if (options.oneofs)
+                                    object.retention = "quantityBasedRetention";
+                            }
+                            if (message.subResource != null && message.hasOwnProperty("subResource"))
+                                object.subResource = $root.google.cloud.databasecenter.v1beta.SubResource.toObject(message.subResource, options);
+                            if (message.durationBasedRetention != null && message.hasOwnProperty("durationBasedRetention")) {
+                                object.durationBasedRetention = $root.google.protobuf.Duration.toObject(message.durationBasedRetention, options);
+                                if (options.oneofs)
+                                    object.retention = "durationBasedRetention";
+                            }
+                            if (message.timestampBasedRetentionTime != null && message.hasOwnProperty("timestampBasedRetentionTime")) {
+                                object.timestampBasedRetentionTime = $root.google.protobuf.Timestamp.toObject(message.timestampBasedRetentionTime, options);
+                                if (options.oneofs)
+                                    object.retention = "timestampBasedRetentionTime";
+                            }
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this RetentionSettingsInfo to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.RetentionSettingsInfo
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        RetentionSettingsInfo.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for RetentionSettingsInfo
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.RetentionSettingsInfo
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        RetentionSettingsInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.RetentionSettingsInfo";
+                        };
+    
+                        return RetentionSettingsInfo;
+                    })();
+    
+                    v1beta.AutomatedBackupPolicyInfo = (function() {
+    
+                        /**
+                         * Properties of an AutomatedBackupPolicyInfo.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IAutomatedBackupPolicyInfo
+                         * @property {google.cloud.databasecenter.v1beta.ISubResource|null} [subResource] AutomatedBackupPolicyInfo subResource
+                         * @property {boolean|null} [isEnabled] AutomatedBackupPolicyInfo isEnabled
+                         */
+    
+                        /**
+                         * Constructs a new AutomatedBackupPolicyInfo.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents an AutomatedBackupPolicyInfo.
+                         * @implements IAutomatedBackupPolicyInfo
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IAutomatedBackupPolicyInfo=} [properties] Properties to set
+                         */
+                        function AutomatedBackupPolicyInfo(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * AutomatedBackupPolicyInfo subResource.
+                         * @member {google.cloud.databasecenter.v1beta.ISubResource|null|undefined} subResource
+                         * @memberof google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo
+                         * @instance
+                         */
+                        AutomatedBackupPolicyInfo.prototype.subResource = null;
+    
+                        /**
+                         * AutomatedBackupPolicyInfo isEnabled.
+                         * @member {boolean} isEnabled
+                         * @memberof google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo
+                         * @instance
+                         */
+                        AutomatedBackupPolicyInfo.prototype.isEnabled = false;
+    
+                        /**
+                         * Creates a new AutomatedBackupPolicyInfo instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IAutomatedBackupPolicyInfo=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo} AutomatedBackupPolicyInfo instance
+                         */
+                        AutomatedBackupPolicyInfo.create = function create(properties) {
+                            return new AutomatedBackupPolicyInfo(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified AutomatedBackupPolicyInfo message. Does not implicitly {@link google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IAutomatedBackupPolicyInfo} message AutomatedBackupPolicyInfo message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        AutomatedBackupPolicyInfo.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.subResource != null && Object.hasOwnProperty.call(message, "subResource"))
+                                $root.google.cloud.databasecenter.v1beta.SubResource.encode(message.subResource, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                            if (message.isEnabled != null && Object.hasOwnProperty.call(message, "isEnabled"))
+                                writer.uint32(/* id 2, wireType 0 =*/16).bool(message.isEnabled);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified AutomatedBackupPolicyInfo message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IAutomatedBackupPolicyInfo} message AutomatedBackupPolicyInfo message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        AutomatedBackupPolicyInfo.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes an AutomatedBackupPolicyInfo message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo} AutomatedBackupPolicyInfo
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        AutomatedBackupPolicyInfo.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.subResource = $root.google.cloud.databasecenter.v1beta.SubResource.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 2: {
+                                        message.isEnabled = reader.bool();
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes an AutomatedBackupPolicyInfo message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo} AutomatedBackupPolicyInfo
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        AutomatedBackupPolicyInfo.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies an AutomatedBackupPolicyInfo message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        AutomatedBackupPolicyInfo.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.subResource != null && message.hasOwnProperty("subResource")) {
+                                var error = $root.google.cloud.databasecenter.v1beta.SubResource.verify(message.subResource);
+                                if (error)
+                                    return "subResource." + error;
+                            }
+                            if (message.isEnabled != null && message.hasOwnProperty("isEnabled"))
+                                if (typeof message.isEnabled !== "boolean")
+                                    return "isEnabled: boolean expected";
+                            return null;
+                        };
+    
+                        /**
+                         * Creates an AutomatedBackupPolicyInfo message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo} AutomatedBackupPolicyInfo
+                         */
+                        AutomatedBackupPolicyInfo.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo();
+                            if (object.subResource != null) {
+                                if (typeof object.subResource !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo.subResource: object expected");
+                                message.subResource = $root.google.cloud.databasecenter.v1beta.SubResource.fromObject(object.subResource);
+                            }
+                            if (object.isEnabled != null)
+                                message.isEnabled = Boolean(object.isEnabled);
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from an AutomatedBackupPolicyInfo message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo} message AutomatedBackupPolicyInfo
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        AutomatedBackupPolicyInfo.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.defaults) {
+                                object.subResource = null;
+                                object.isEnabled = false;
+                            }
+                            if (message.subResource != null && message.hasOwnProperty("subResource"))
+                                object.subResource = $root.google.cloud.databasecenter.v1beta.SubResource.toObject(message.subResource, options);
+                            if (message.isEnabled != null && message.hasOwnProperty("isEnabled"))
+                                object.isEnabled = message.isEnabled;
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this AutomatedBackupPolicyInfo to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        AutomatedBackupPolicyInfo.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for AutomatedBackupPolicyInfo
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        AutomatedBackupPolicyInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.AutomatedBackupPolicyInfo";
+                        };
+    
+                        return AutomatedBackupPolicyInfo;
+                    })();
+    
+                    v1beta.DeletionProtectionInfo = (function() {
+    
+                        /**
+                         * Properties of a DeletionProtectionInfo.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IDeletionProtectionInfo
+                         * @property {google.cloud.databasecenter.v1beta.ISubResource|null} [subResource] DeletionProtectionInfo subResource
+                         * @property {boolean|null} [deletionProtectionEnabled] DeletionProtectionInfo deletionProtectionEnabled
+                         */
+    
+                        /**
+                         * Constructs a new DeletionProtectionInfo.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a DeletionProtectionInfo.
+                         * @implements IDeletionProtectionInfo
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IDeletionProtectionInfo=} [properties] Properties to set
+                         */
+                        function DeletionProtectionInfo(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * DeletionProtectionInfo subResource.
+                         * @member {google.cloud.databasecenter.v1beta.ISubResource|null|undefined} subResource
+                         * @memberof google.cloud.databasecenter.v1beta.DeletionProtectionInfo
+                         * @instance
+                         */
+                        DeletionProtectionInfo.prototype.subResource = null;
+    
+                        /**
+                         * DeletionProtectionInfo deletionProtectionEnabled.
+                         * @member {boolean} deletionProtectionEnabled
+                         * @memberof google.cloud.databasecenter.v1beta.DeletionProtectionInfo
+                         * @instance
+                         */
+                        DeletionProtectionInfo.prototype.deletionProtectionEnabled = false;
+    
+                        /**
+                         * Creates a new DeletionProtectionInfo instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.DeletionProtectionInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IDeletionProtectionInfo=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.DeletionProtectionInfo} DeletionProtectionInfo instance
+                         */
+                        DeletionProtectionInfo.create = function create(properties) {
+                            return new DeletionProtectionInfo(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified DeletionProtectionInfo message. Does not implicitly {@link google.cloud.databasecenter.v1beta.DeletionProtectionInfo.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.DeletionProtectionInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IDeletionProtectionInfo} message DeletionProtectionInfo message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        DeletionProtectionInfo.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.subResource != null && Object.hasOwnProperty.call(message, "subResource"))
+                                $root.google.cloud.databasecenter.v1beta.SubResource.encode(message.subResource, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                            if (message.deletionProtectionEnabled != null && Object.hasOwnProperty.call(message, "deletionProtectionEnabled"))
+                                writer.uint32(/* id 2, wireType 0 =*/16).bool(message.deletionProtectionEnabled);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified DeletionProtectionInfo message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.DeletionProtectionInfo.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.DeletionProtectionInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IDeletionProtectionInfo} message DeletionProtectionInfo message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        DeletionProtectionInfo.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a DeletionProtectionInfo message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.DeletionProtectionInfo
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.DeletionProtectionInfo} DeletionProtectionInfo
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        DeletionProtectionInfo.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.DeletionProtectionInfo();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.subResource = $root.google.cloud.databasecenter.v1beta.SubResource.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 2: {
+                                        message.deletionProtectionEnabled = reader.bool();
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a DeletionProtectionInfo message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.DeletionProtectionInfo
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.DeletionProtectionInfo} DeletionProtectionInfo
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        DeletionProtectionInfo.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a DeletionProtectionInfo message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.DeletionProtectionInfo
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        DeletionProtectionInfo.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.subResource != null && message.hasOwnProperty("subResource")) {
+                                var error = $root.google.cloud.databasecenter.v1beta.SubResource.verify(message.subResource);
+                                if (error)
+                                    return "subResource." + error;
+                            }
+                            if (message.deletionProtectionEnabled != null && message.hasOwnProperty("deletionProtectionEnabled"))
+                                if (typeof message.deletionProtectionEnabled !== "boolean")
+                                    return "deletionProtectionEnabled: boolean expected";
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a DeletionProtectionInfo message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.DeletionProtectionInfo
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.DeletionProtectionInfo} DeletionProtectionInfo
+                         */
+                        DeletionProtectionInfo.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.DeletionProtectionInfo)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.DeletionProtectionInfo();
+                            if (object.subResource != null) {
+                                if (typeof object.subResource !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.DeletionProtectionInfo.subResource: object expected");
+                                message.subResource = $root.google.cloud.databasecenter.v1beta.SubResource.fromObject(object.subResource);
+                            }
+                            if (object.deletionProtectionEnabled != null)
+                                message.deletionProtectionEnabled = Boolean(object.deletionProtectionEnabled);
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a DeletionProtectionInfo message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.DeletionProtectionInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.DeletionProtectionInfo} message DeletionProtectionInfo
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        DeletionProtectionInfo.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.defaults) {
+                                object.subResource = null;
+                                object.deletionProtectionEnabled = false;
+                            }
+                            if (message.subResource != null && message.hasOwnProperty("subResource"))
+                                object.subResource = $root.google.cloud.databasecenter.v1beta.SubResource.toObject(message.subResource, options);
+                            if (message.deletionProtectionEnabled != null && message.hasOwnProperty("deletionProtectionEnabled"))
+                                object.deletionProtectionEnabled = message.deletionProtectionEnabled;
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this DeletionProtectionInfo to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.DeletionProtectionInfo
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        DeletionProtectionInfo.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for DeletionProtectionInfo
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.DeletionProtectionInfo
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        DeletionProtectionInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.DeletionProtectionInfo";
+                        };
+    
+                        return DeletionProtectionInfo;
+                    })();
+    
+                    v1beta.ResourceSuspensionInfo = (function() {
+    
+                        /**
+                         * Properties of a ResourceSuspensionInfo.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IResourceSuspensionInfo
+                         * @property {boolean|null} [resourceSuspended] ResourceSuspensionInfo resourceSuspended
+                         * @property {google.cloud.databasecenter.v1beta.SuspensionReason|null} [suspensionReason] ResourceSuspensionInfo suspensionReason
+                         */
+    
+                        /**
+                         * Constructs a new ResourceSuspensionInfo.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a ResourceSuspensionInfo.
+                         * @implements IResourceSuspensionInfo
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IResourceSuspensionInfo=} [properties] Properties to set
+                         */
+                        function ResourceSuspensionInfo(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * ResourceSuspensionInfo resourceSuspended.
+                         * @member {boolean} resourceSuspended
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceSuspensionInfo
+                         * @instance
+                         */
+                        ResourceSuspensionInfo.prototype.resourceSuspended = false;
+    
+                        /**
+                         * ResourceSuspensionInfo suspensionReason.
+                         * @member {google.cloud.databasecenter.v1beta.SuspensionReason} suspensionReason
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceSuspensionInfo
+                         * @instance
+                         */
+                        ResourceSuspensionInfo.prototype.suspensionReason = 0;
+    
+                        /**
+                         * Creates a new ResourceSuspensionInfo instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceSuspensionInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IResourceSuspensionInfo=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.ResourceSuspensionInfo} ResourceSuspensionInfo instance
+                         */
+                        ResourceSuspensionInfo.create = function create(properties) {
+                            return new ResourceSuspensionInfo(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified ResourceSuspensionInfo message. Does not implicitly {@link google.cloud.databasecenter.v1beta.ResourceSuspensionInfo.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceSuspensionInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IResourceSuspensionInfo} message ResourceSuspensionInfo message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        ResourceSuspensionInfo.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.resourceSuspended != null && Object.hasOwnProperty.call(message, "resourceSuspended"))
+                                writer.uint32(/* id 1, wireType 0 =*/8).bool(message.resourceSuspended);
+                            if (message.suspensionReason != null && Object.hasOwnProperty.call(message, "suspensionReason"))
+                                writer.uint32(/* id 2, wireType 0 =*/16).int32(message.suspensionReason);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified ResourceSuspensionInfo message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.ResourceSuspensionInfo.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceSuspensionInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IResourceSuspensionInfo} message ResourceSuspensionInfo message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        ResourceSuspensionInfo.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a ResourceSuspensionInfo message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceSuspensionInfo
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.ResourceSuspensionInfo} ResourceSuspensionInfo
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        ResourceSuspensionInfo.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.ResourceSuspensionInfo();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.resourceSuspended = reader.bool();
+                                        break;
+                                    }
+                                case 2: {
+                                        message.suspensionReason = reader.int32();
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a ResourceSuspensionInfo message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceSuspensionInfo
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.ResourceSuspensionInfo} ResourceSuspensionInfo
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        ResourceSuspensionInfo.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a ResourceSuspensionInfo message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceSuspensionInfo
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        ResourceSuspensionInfo.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.resourceSuspended != null && message.hasOwnProperty("resourceSuspended"))
+                                if (typeof message.resourceSuspended !== "boolean")
+                                    return "resourceSuspended: boolean expected";
+                            if (message.suspensionReason != null && message.hasOwnProperty("suspensionReason"))
+                                switch (message.suspensionReason) {
+                                default:
+                                    return "suspensionReason: enum value expected";
+                                case 0:
+                                case 1:
+                                case 2:
+                                case 3:
+                                case 4:
+                                case 5:
+                                case 6:
+                                    break;
+                                }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a ResourceSuspensionInfo message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceSuspensionInfo
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.ResourceSuspensionInfo} ResourceSuspensionInfo
+                         */
+                        ResourceSuspensionInfo.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.ResourceSuspensionInfo)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.ResourceSuspensionInfo();
+                            if (object.resourceSuspended != null)
+                                message.resourceSuspended = Boolean(object.resourceSuspended);
+                            switch (object.suspensionReason) {
+                            default:
+                                if (typeof object.suspensionReason === "number") {
+                                    message.suspensionReason = object.suspensionReason;
+                                    break;
+                                }
+                                break;
+                            case "SUSPENSION_REASON_UNSPECIFIED":
+                            case 0:
+                                message.suspensionReason = 0;
+                                break;
+                            case "WIPEOUT_HIDE_EVENT":
+                            case 1:
+                                message.suspensionReason = 1;
+                                break;
+                            case "WIPEOUT_PURGE_EVENT":
+                            case 2:
+                                message.suspensionReason = 2;
+                                break;
+                            case "BILLING_DISABLED":
+                            case 3:
+                                message.suspensionReason = 3;
+                                break;
+                            case "ABUSER_DETECTED":
+                            case 4:
+                                message.suspensionReason = 4;
+                                break;
+                            case "ENCRYPTION_KEY_INACCESSIBLE":
+                            case 5:
+                                message.suspensionReason = 5;
+                                break;
+                            case "REPLICATED_CLUSTER_ENCRYPTION_KEY_INACCESSIBLE":
+                            case 6:
+                                message.suspensionReason = 6;
+                                break;
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a ResourceSuspensionInfo message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceSuspensionInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ResourceSuspensionInfo} message ResourceSuspensionInfo
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        ResourceSuspensionInfo.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.defaults) {
+                                object.resourceSuspended = false;
+                                object.suspensionReason = options.enums === String ? "SUSPENSION_REASON_UNSPECIFIED" : 0;
+                            }
+                            if (message.resourceSuspended != null && message.hasOwnProperty("resourceSuspended"))
+                                object.resourceSuspended = message.resourceSuspended;
+                            if (message.suspensionReason != null && message.hasOwnProperty("suspensionReason"))
+                                object.suspensionReason = options.enums === String ? $root.google.cloud.databasecenter.v1beta.SuspensionReason[message.suspensionReason] === undefined ? message.suspensionReason : $root.google.cloud.databasecenter.v1beta.SuspensionReason[message.suspensionReason] : message.suspensionReason;
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this ResourceSuspensionInfo to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceSuspensionInfo
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        ResourceSuspensionInfo.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for ResourceSuspensionInfo
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.ResourceSuspensionInfo
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        ResourceSuspensionInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.ResourceSuspensionInfo";
+                        };
+    
+                        return ResourceSuspensionInfo;
+                    })();
+    
+                    v1beta.BackupRunInfo = (function() {
+    
+                        /**
+                         * Properties of a BackupRunInfo.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IBackupRunInfo
+                         * @property {google.protobuf.ITimestamp|null} [startTime] BackupRunInfo startTime
+                         * @property {google.protobuf.ITimestamp|null} [endTime] BackupRunInfo endTime
+                         * @property {google.cloud.databasecenter.v1beta.BackupRunInfo.State|null} [state] BackupRunInfo state
+                         * @property {string|null} [errorMessage] BackupRunInfo errorMessage
+                         * @property {google.cloud.databasecenter.v1beta.OperationErrorType|null} [operationErrorType] BackupRunInfo operationErrorType
+                         * @property {google.cloud.databasecenter.v1beta.ISubResource|null} [subResource] BackupRunInfo subResource
+                         */
+    
+                        /**
+                         * Constructs a new BackupRunInfo.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a BackupRunInfo.
+                         * @implements IBackupRunInfo
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IBackupRunInfo=} [properties] Properties to set
+                         */
+                        function BackupRunInfo(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * BackupRunInfo startTime.
+                         * @member {google.protobuf.ITimestamp|null|undefined} startTime
+                         * @memberof google.cloud.databasecenter.v1beta.BackupRunInfo
+                         * @instance
+                         */
+                        BackupRunInfo.prototype.startTime = null;
+    
+                        /**
+                         * BackupRunInfo endTime.
+                         * @member {google.protobuf.ITimestamp|null|undefined} endTime
+                         * @memberof google.cloud.databasecenter.v1beta.BackupRunInfo
+                         * @instance
+                         */
+                        BackupRunInfo.prototype.endTime = null;
+    
+                        /**
+                         * BackupRunInfo state.
+                         * @member {google.cloud.databasecenter.v1beta.BackupRunInfo.State} state
+                         * @memberof google.cloud.databasecenter.v1beta.BackupRunInfo
+                         * @instance
+                         */
+                        BackupRunInfo.prototype.state = 0;
+    
+                        /**
+                         * BackupRunInfo errorMessage.
+                         * @member {string} errorMessage
+                         * @memberof google.cloud.databasecenter.v1beta.BackupRunInfo
+                         * @instance
+                         */
+                        BackupRunInfo.prototype.errorMessage = "";
+    
+                        /**
+                         * BackupRunInfo operationErrorType.
+                         * @member {google.cloud.databasecenter.v1beta.OperationErrorType} operationErrorType
+                         * @memberof google.cloud.databasecenter.v1beta.BackupRunInfo
+                         * @instance
+                         */
+                        BackupRunInfo.prototype.operationErrorType = 0;
+    
+                        /**
+                         * BackupRunInfo subResource.
+                         * @member {google.cloud.databasecenter.v1beta.ISubResource|null|undefined} subResource
+                         * @memberof google.cloud.databasecenter.v1beta.BackupRunInfo
+                         * @instance
+                         */
+                        BackupRunInfo.prototype.subResource = null;
+    
+                        /**
+                         * Creates a new BackupRunInfo instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.BackupRunInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IBackupRunInfo=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.BackupRunInfo} BackupRunInfo instance
+                         */
+                        BackupRunInfo.create = function create(properties) {
+                            return new BackupRunInfo(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified BackupRunInfo message. Does not implicitly {@link google.cloud.databasecenter.v1beta.BackupRunInfo.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.BackupRunInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IBackupRunInfo} message BackupRunInfo message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        BackupRunInfo.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.startTime != null && Object.hasOwnProperty.call(message, "startTime"))
+                                $root.google.protobuf.Timestamp.encode(message.startTime, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                            if (message.state != null && Object.hasOwnProperty.call(message, "state"))
+                                writer.uint32(/* id 2, wireType 0 =*/16).int32(message.state);
+                            if (message.errorMessage != null && Object.hasOwnProperty.call(message, "errorMessage"))
+                                writer.uint32(/* id 3, wireType 2 =*/26).string(message.errorMessage);
+                            if (message.operationErrorType != null && Object.hasOwnProperty.call(message, "operationErrorType"))
+                                writer.uint32(/* id 4, wireType 0 =*/32).int32(message.operationErrorType);
+                            if (message.subResource != null && Object.hasOwnProperty.call(message, "subResource"))
+                                $root.google.cloud.databasecenter.v1beta.SubResource.encode(message.subResource, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
+                            if (message.endTime != null && Object.hasOwnProperty.call(message, "endTime"))
+                                $root.google.protobuf.Timestamp.encode(message.endTime, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified BackupRunInfo message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.BackupRunInfo.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.BackupRunInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IBackupRunInfo} message BackupRunInfo message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        BackupRunInfo.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a BackupRunInfo message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.BackupRunInfo
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.BackupRunInfo} BackupRunInfo
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        BackupRunInfo.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.BackupRunInfo();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 6: {
+                                        message.endTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                case 2: {
+                                        message.state = reader.int32();
+                                        break;
+                                    }
+                                case 3: {
+                                        message.errorMessage = reader.string();
+                                        break;
+                                    }
+                                case 4: {
+                                        message.operationErrorType = reader.int32();
+                                        break;
+                                    }
+                                case 5: {
+                                        message.subResource = $root.google.cloud.databasecenter.v1beta.SubResource.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a BackupRunInfo message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.BackupRunInfo
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.BackupRunInfo} BackupRunInfo
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        BackupRunInfo.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a BackupRunInfo message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.BackupRunInfo
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        BackupRunInfo.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.startTime != null && message.hasOwnProperty("startTime")) {
+                                var error = $root.google.protobuf.Timestamp.verify(message.startTime);
+                                if (error)
+                                    return "startTime." + error;
+                            }
+                            if (message.endTime != null && message.hasOwnProperty("endTime")) {
+                                var error = $root.google.protobuf.Timestamp.verify(message.endTime);
+                                if (error)
+                                    return "endTime." + error;
+                            }
+                            if (message.state != null && message.hasOwnProperty("state"))
+                                switch (message.state) {
+                                default:
+                                    return "state: enum value expected";
+                                case 0:
+                                case 1:
+                                case 2:
+                                    break;
+                                }
+                            if (message.errorMessage != null && message.hasOwnProperty("errorMessage"))
+                                if (!$util.isString(message.errorMessage))
+                                    return "errorMessage: string expected";
+                            if (message.operationErrorType != null && message.hasOwnProperty("operationErrorType"))
+                                switch (message.operationErrorType) {
+                                default:
+                                    return "operationErrorType: enum value expected";
+                                case 0:
+                                case 1:
+                                case 2:
+                                case 3:
+                                case 4:
+                                case 5:
+                                case 6:
+                                    break;
+                                }
+                            if (message.subResource != null && message.hasOwnProperty("subResource")) {
+                                var error = $root.google.cloud.databasecenter.v1beta.SubResource.verify(message.subResource);
+                                if (error)
+                                    return "subResource." + error;
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a BackupRunInfo message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.BackupRunInfo
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.BackupRunInfo} BackupRunInfo
+                         */
+                        BackupRunInfo.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.BackupRunInfo)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.BackupRunInfo();
+                            if (object.startTime != null) {
+                                if (typeof object.startTime !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.BackupRunInfo.startTime: object expected");
+                                message.startTime = $root.google.protobuf.Timestamp.fromObject(object.startTime);
+                            }
+                            if (object.endTime != null) {
+                                if (typeof object.endTime !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.BackupRunInfo.endTime: object expected");
+                                message.endTime = $root.google.protobuf.Timestamp.fromObject(object.endTime);
+                            }
+                            switch (object.state) {
+                            default:
+                                if (typeof object.state === "number") {
+                                    message.state = object.state;
+                                    break;
+                                }
+                                break;
+                            case "STATE_UNSPECIFIED":
+                            case 0:
+                                message.state = 0;
+                                break;
+                            case "SUCCEEDED":
+                            case 1:
+                                message.state = 1;
+                                break;
+                            case "FAILED":
+                            case 2:
+                                message.state = 2;
+                                break;
+                            }
+                            if (object.errorMessage != null)
+                                message.errorMessage = String(object.errorMessage);
+                            switch (object.operationErrorType) {
+                            default:
+                                if (typeof object.operationErrorType === "number") {
+                                    message.operationErrorType = object.operationErrorType;
+                                    break;
+                                }
+                                break;
+                            case "OPERATION_ERROR_TYPE_UNSPECIFIED":
+                            case 0:
+                                message.operationErrorType = 0;
+                                break;
+                            case "KMS_KEY_ERROR":
+                            case 1:
+                                message.operationErrorType = 1;
+                                break;
+                            case "DATABASE_ERROR":
+                            case 2:
+                                message.operationErrorType = 2;
+                                break;
+                            case "STOCKOUT_ERROR":
+                            case 3:
+                                message.operationErrorType = 3;
+                                break;
+                            case "CANCELLATION_ERROR":
+                            case 4:
+                                message.operationErrorType = 4;
+                                break;
+                            case "SQLSERVER_ERROR":
+                            case 5:
+                                message.operationErrorType = 5;
+                                break;
+                            case "INTERNAL_ERROR":
+                            case 6:
+                                message.operationErrorType = 6;
+                                break;
+                            }
+                            if (object.subResource != null) {
+                                if (typeof object.subResource !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.BackupRunInfo.subResource: object expected");
+                                message.subResource = $root.google.cloud.databasecenter.v1beta.SubResource.fromObject(object.subResource);
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a BackupRunInfo message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.BackupRunInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.BackupRunInfo} message BackupRunInfo
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        BackupRunInfo.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.defaults) {
+                                object.startTime = null;
+                                object.state = options.enums === String ? "STATE_UNSPECIFIED" : 0;
+                                object.errorMessage = "";
+                                object.operationErrorType = options.enums === String ? "OPERATION_ERROR_TYPE_UNSPECIFIED" : 0;
+                                object.subResource = null;
+                                object.endTime = null;
+                            }
+                            if (message.startTime != null && message.hasOwnProperty("startTime"))
+                                object.startTime = $root.google.protobuf.Timestamp.toObject(message.startTime, options);
+                            if (message.state != null && message.hasOwnProperty("state"))
+                                object.state = options.enums === String ? $root.google.cloud.databasecenter.v1beta.BackupRunInfo.State[message.state] === undefined ? message.state : $root.google.cloud.databasecenter.v1beta.BackupRunInfo.State[message.state] : message.state;
+                            if (message.errorMessage != null && message.hasOwnProperty("errorMessage"))
+                                object.errorMessage = message.errorMessage;
+                            if (message.operationErrorType != null && message.hasOwnProperty("operationErrorType"))
+                                object.operationErrorType = options.enums === String ? $root.google.cloud.databasecenter.v1beta.OperationErrorType[message.operationErrorType] === undefined ? message.operationErrorType : $root.google.cloud.databasecenter.v1beta.OperationErrorType[message.operationErrorType] : message.operationErrorType;
+                            if (message.subResource != null && message.hasOwnProperty("subResource"))
+                                object.subResource = $root.google.cloud.databasecenter.v1beta.SubResource.toObject(message.subResource, options);
+                            if (message.endTime != null && message.hasOwnProperty("endTime"))
+                                object.endTime = $root.google.protobuf.Timestamp.toObject(message.endTime, options);
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this BackupRunInfo to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.BackupRunInfo
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        BackupRunInfo.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for BackupRunInfo
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.BackupRunInfo
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        BackupRunInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.BackupRunInfo";
+                        };
+    
+                        /**
+                         * State enum.
+                         * @name google.cloud.databasecenter.v1beta.BackupRunInfo.State
+                         * @enum {number}
+                         * @property {number} STATE_UNSPECIFIED=0 STATE_UNSPECIFIED value
+                         * @property {number} SUCCEEDED=1 SUCCEEDED value
+                         * @property {number} FAILED=2 FAILED value
+                         */
+                        BackupRunInfo.State = (function() {
+                            var valuesById = {}, values = Object.create(valuesById);
+                            values[valuesById[0] = "STATE_UNSPECIFIED"] = 0;
+                            values[valuesById[1] = "SUCCEEDED"] = 1;
+                            values[valuesById[2] = "FAILED"] = 2;
+                            return values;
+                        })();
+    
+                        return BackupRunInfo;
+                    })();
+    
+                    v1beta.InefficientQueryInfo = (function() {
+    
+                        /**
+                         * Properties of an InefficientQueryInfo.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IInefficientQueryInfo
+                         * @property {string|null} [database] InefficientQueryInfo database
+                         * @property {string|null} [table] InefficientQueryInfo table
+                         * @property {string|null} [sqlIndexStatement] InefficientQueryInfo sqlIndexStatement
+                         * @property {number|Long|null} [storageCostBytes] InefficientQueryInfo storageCostBytes
+                         * @property {number|Long|null} [impactedQueriesCount] InefficientQueryInfo impactedQueriesCount
+                         */
+    
+                        /**
+                         * Constructs a new InefficientQueryInfo.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents an InefficientQueryInfo.
+                         * @implements IInefficientQueryInfo
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IInefficientQueryInfo=} [properties] Properties to set
+                         */
+                        function InefficientQueryInfo(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * InefficientQueryInfo database.
+                         * @member {string} database
+                         * @memberof google.cloud.databasecenter.v1beta.InefficientQueryInfo
+                         * @instance
+                         */
+                        InefficientQueryInfo.prototype.database = "";
+    
+                        /**
+                         * InefficientQueryInfo table.
+                         * @member {string} table
+                         * @memberof google.cloud.databasecenter.v1beta.InefficientQueryInfo
+                         * @instance
+                         */
+                        InefficientQueryInfo.prototype.table = "";
+    
+                        /**
+                         * InefficientQueryInfo sqlIndexStatement.
+                         * @member {string} sqlIndexStatement
+                         * @memberof google.cloud.databasecenter.v1beta.InefficientQueryInfo
+                         * @instance
+                         */
+                        InefficientQueryInfo.prototype.sqlIndexStatement = "";
+    
+                        /**
+                         * InefficientQueryInfo storageCostBytes.
+                         * @member {number|Long} storageCostBytes
+                         * @memberof google.cloud.databasecenter.v1beta.InefficientQueryInfo
+                         * @instance
+                         */
+                        InefficientQueryInfo.prototype.storageCostBytes = $util.Long ? $util.Long.fromBits(0,0,false) : 0;
+    
+                        /**
+                         * InefficientQueryInfo impactedQueriesCount.
+                         * @member {number|Long} impactedQueriesCount
+                         * @memberof google.cloud.databasecenter.v1beta.InefficientQueryInfo
+                         * @instance
+                         */
+                        InefficientQueryInfo.prototype.impactedQueriesCount = $util.Long ? $util.Long.fromBits(0,0,false) : 0;
+    
+                        /**
+                         * Creates a new InefficientQueryInfo instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.InefficientQueryInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IInefficientQueryInfo=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.InefficientQueryInfo} InefficientQueryInfo instance
+                         */
+                        InefficientQueryInfo.create = function create(properties) {
+                            return new InefficientQueryInfo(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified InefficientQueryInfo message. Does not implicitly {@link google.cloud.databasecenter.v1beta.InefficientQueryInfo.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.InefficientQueryInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IInefficientQueryInfo} message InefficientQueryInfo message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        InefficientQueryInfo.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.database != null && Object.hasOwnProperty.call(message, "database"))
+                                writer.uint32(/* id 1, wireType 2 =*/10).string(message.database);
+                            if (message.table != null && Object.hasOwnProperty.call(message, "table"))
+                                writer.uint32(/* id 2, wireType 2 =*/18).string(message.table);
+                            if (message.sqlIndexStatement != null && Object.hasOwnProperty.call(message, "sqlIndexStatement"))
+                                writer.uint32(/* id 3, wireType 2 =*/26).string(message.sqlIndexStatement);
+                            if (message.storageCostBytes != null && Object.hasOwnProperty.call(message, "storageCostBytes"))
+                                writer.uint32(/* id 4, wireType 0 =*/32).int64(message.storageCostBytes);
+                            if (message.impactedQueriesCount != null && Object.hasOwnProperty.call(message, "impactedQueriesCount"))
+                                writer.uint32(/* id 5, wireType 0 =*/40).int64(message.impactedQueriesCount);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified InefficientQueryInfo message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.InefficientQueryInfo.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.InefficientQueryInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IInefficientQueryInfo} message InefficientQueryInfo message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        InefficientQueryInfo.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes an InefficientQueryInfo message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.InefficientQueryInfo
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.InefficientQueryInfo} InefficientQueryInfo
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        InefficientQueryInfo.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.InefficientQueryInfo();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.database = reader.string();
+                                        break;
+                                    }
+                                case 2: {
+                                        message.table = reader.string();
+                                        break;
+                                    }
+                                case 3: {
+                                        message.sqlIndexStatement = reader.string();
+                                        break;
+                                    }
+                                case 4: {
+                                        message.storageCostBytes = reader.int64();
+                                        break;
+                                    }
+                                case 5: {
+                                        message.impactedQueriesCount = reader.int64();
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes an InefficientQueryInfo message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.InefficientQueryInfo
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.InefficientQueryInfo} InefficientQueryInfo
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        InefficientQueryInfo.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies an InefficientQueryInfo message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.InefficientQueryInfo
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        InefficientQueryInfo.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.database != null && message.hasOwnProperty("database"))
+                                if (!$util.isString(message.database))
+                                    return "database: string expected";
+                            if (message.table != null && message.hasOwnProperty("table"))
+                                if (!$util.isString(message.table))
+                                    return "table: string expected";
+                            if (message.sqlIndexStatement != null && message.hasOwnProperty("sqlIndexStatement"))
+                                if (!$util.isString(message.sqlIndexStatement))
+                                    return "sqlIndexStatement: string expected";
+                            if (message.storageCostBytes != null && message.hasOwnProperty("storageCostBytes"))
+                                if (!$util.isInteger(message.storageCostBytes) && !(message.storageCostBytes && $util.isInteger(message.storageCostBytes.low) && $util.isInteger(message.storageCostBytes.high)))
+                                    return "storageCostBytes: integer|Long expected";
+                            if (message.impactedQueriesCount != null && message.hasOwnProperty("impactedQueriesCount"))
+                                if (!$util.isInteger(message.impactedQueriesCount) && !(message.impactedQueriesCount && $util.isInteger(message.impactedQueriesCount.low) && $util.isInteger(message.impactedQueriesCount.high)))
+                                    return "impactedQueriesCount: integer|Long expected";
+                            return null;
+                        };
+    
+                        /**
+                         * Creates an InefficientQueryInfo message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.InefficientQueryInfo
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.InefficientQueryInfo} InefficientQueryInfo
+                         */
+                        InefficientQueryInfo.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.InefficientQueryInfo)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.InefficientQueryInfo();
+                            if (object.database != null)
+                                message.database = String(object.database);
+                            if (object.table != null)
+                                message.table = String(object.table);
+                            if (object.sqlIndexStatement != null)
+                                message.sqlIndexStatement = String(object.sqlIndexStatement);
+                            if (object.storageCostBytes != null)
+                                if ($util.Long)
+                                    (message.storageCostBytes = $util.Long.fromValue(object.storageCostBytes)).unsigned = false;
+                                else if (typeof object.storageCostBytes === "string")
+                                    message.storageCostBytes = parseInt(object.storageCostBytes, 10);
+                                else if (typeof object.storageCostBytes === "number")
+                                    message.storageCostBytes = object.storageCostBytes;
+                                else if (typeof object.storageCostBytes === "object")
+                                    message.storageCostBytes = new $util.LongBits(object.storageCostBytes.low >>> 0, object.storageCostBytes.high >>> 0).toNumber();
+                            if (object.impactedQueriesCount != null)
+                                if ($util.Long)
+                                    (message.impactedQueriesCount = $util.Long.fromValue(object.impactedQueriesCount)).unsigned = false;
+                                else if (typeof object.impactedQueriesCount === "string")
+                                    message.impactedQueriesCount = parseInt(object.impactedQueriesCount, 10);
+                                else if (typeof object.impactedQueriesCount === "number")
+                                    message.impactedQueriesCount = object.impactedQueriesCount;
+                                else if (typeof object.impactedQueriesCount === "object")
+                                    message.impactedQueriesCount = new $util.LongBits(object.impactedQueriesCount.low >>> 0, object.impactedQueriesCount.high >>> 0).toNumber();
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from an InefficientQueryInfo message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.InefficientQueryInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.InefficientQueryInfo} message InefficientQueryInfo
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        InefficientQueryInfo.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.defaults) {
+                                object.database = "";
+                                object.table = "";
+                                object.sqlIndexStatement = "";
+                                if ($util.Long) {
+                                    var long = new $util.Long(0, 0, false);
+                                    object.storageCostBytes = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
+                                } else
+                                    object.storageCostBytes = options.longs === String ? "0" : 0;
+                                if ($util.Long) {
+                                    var long = new $util.Long(0, 0, false);
+                                    object.impactedQueriesCount = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
+                                } else
+                                    object.impactedQueriesCount = options.longs === String ? "0" : 0;
+                            }
+                            if (message.database != null && message.hasOwnProperty("database"))
+                                object.database = message.database;
+                            if (message.table != null && message.hasOwnProperty("table"))
+                                object.table = message.table;
+                            if (message.sqlIndexStatement != null && message.hasOwnProperty("sqlIndexStatement"))
+                                object.sqlIndexStatement = message.sqlIndexStatement;
+                            if (message.storageCostBytes != null && message.hasOwnProperty("storageCostBytes"))
+                                if (typeof message.storageCostBytes === "number")
+                                    object.storageCostBytes = options.longs === String ? String(message.storageCostBytes) : message.storageCostBytes;
+                                else
+                                    object.storageCostBytes = options.longs === String ? $util.Long.prototype.toString.call(message.storageCostBytes) : options.longs === Number ? new $util.LongBits(message.storageCostBytes.low >>> 0, message.storageCostBytes.high >>> 0).toNumber() : message.storageCostBytes;
+                            if (message.impactedQueriesCount != null && message.hasOwnProperty("impactedQueriesCount"))
+                                if (typeof message.impactedQueriesCount === "number")
+                                    object.impactedQueriesCount = options.longs === String ? String(message.impactedQueriesCount) : message.impactedQueriesCount;
+                                else
+                                    object.impactedQueriesCount = options.longs === String ? $util.Long.prototype.toString.call(message.impactedQueriesCount) : options.longs === Number ? new $util.LongBits(message.impactedQueriesCount.low >>> 0, message.impactedQueriesCount.high >>> 0).toNumber() : message.impactedQueriesCount;
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this InefficientQueryInfo to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.InefficientQueryInfo
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        InefficientQueryInfo.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for InefficientQueryInfo
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.InefficientQueryInfo
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        InefficientQueryInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.InefficientQueryInfo";
+                        };
+    
+                        return InefficientQueryInfo;
+                    })();
+    
+                    v1beta.SCCInfo = (function() {
+    
+                        /**
+                         * Properties of a SCCInfo.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface ISCCInfo
+                         * @property {string|null} [signal] SCCInfo signal
+                         * @property {string|null} [category] SCCInfo category
+                         * @property {Array.<google.cloud.databasecenter.v1beta.IRegulatoryStandard>|null} [regulatoryStandards] SCCInfo regulatoryStandards
+                         * @property {string|null} [externalUri] SCCInfo externalUri
+                         */
+    
+                        /**
+                         * Constructs a new SCCInfo.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a SCCInfo.
+                         * @implements ISCCInfo
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.ISCCInfo=} [properties] Properties to set
+                         */
+                        function SCCInfo(properties) {
+                            this.regulatoryStandards = [];
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * SCCInfo signal.
+                         * @member {string} signal
+                         * @memberof google.cloud.databasecenter.v1beta.SCCInfo
+                         * @instance
+                         */
+                        SCCInfo.prototype.signal = "";
+    
+                        /**
+                         * SCCInfo category.
+                         * @member {string} category
+                         * @memberof google.cloud.databasecenter.v1beta.SCCInfo
+                         * @instance
+                         */
+                        SCCInfo.prototype.category = "";
+    
+                        /**
+                         * SCCInfo regulatoryStandards.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.IRegulatoryStandard>} regulatoryStandards
+                         * @memberof google.cloud.databasecenter.v1beta.SCCInfo
+                         * @instance
+                         */
+                        SCCInfo.prototype.regulatoryStandards = $util.emptyArray;
+    
+                        /**
+                         * SCCInfo externalUri.
+                         * @member {string} externalUri
+                         * @memberof google.cloud.databasecenter.v1beta.SCCInfo
+                         * @instance
+                         */
+                        SCCInfo.prototype.externalUri = "";
+    
+                        /**
+                         * Creates a new SCCInfo instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.SCCInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ISCCInfo=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.SCCInfo} SCCInfo instance
+                         */
+                        SCCInfo.create = function create(properties) {
+                            return new SCCInfo(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified SCCInfo message. Does not implicitly {@link google.cloud.databasecenter.v1beta.SCCInfo.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.SCCInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ISCCInfo} message SCCInfo message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        SCCInfo.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.signal != null && Object.hasOwnProperty.call(message, "signal"))
+                                writer.uint32(/* id 1, wireType 2 =*/10).string(message.signal);
+                            if (message.category != null && Object.hasOwnProperty.call(message, "category"))
+                                writer.uint32(/* id 2, wireType 2 =*/18).string(message.category);
+                            if (message.regulatoryStandards != null && message.regulatoryStandards.length)
+                                for (var i = 0; i < message.regulatoryStandards.length; ++i)
+                                    $root.google.cloud.databasecenter.v1beta.RegulatoryStandard.encode(message.regulatoryStandards[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+                            if (message.externalUri != null && Object.hasOwnProperty.call(message, "externalUri"))
+                                writer.uint32(/* id 4, wireType 2 =*/34).string(message.externalUri);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified SCCInfo message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.SCCInfo.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.SCCInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ISCCInfo} message SCCInfo message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        SCCInfo.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a SCCInfo message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.SCCInfo
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.SCCInfo} SCCInfo
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        SCCInfo.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.SCCInfo();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.signal = reader.string();
+                                        break;
+                                    }
+                                case 2: {
+                                        message.category = reader.string();
+                                        break;
+                                    }
+                                case 3: {
+                                        if (!(message.regulatoryStandards && message.regulatoryStandards.length))
+                                            message.regulatoryStandards = [];
+                                        message.regulatoryStandards.push($root.google.cloud.databasecenter.v1beta.RegulatoryStandard.decode(reader, reader.uint32()));
+                                        break;
+                                    }
+                                case 4: {
+                                        message.externalUri = reader.string();
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a SCCInfo message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.SCCInfo
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.SCCInfo} SCCInfo
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        SCCInfo.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a SCCInfo message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.SCCInfo
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        SCCInfo.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.signal != null && message.hasOwnProperty("signal"))
+                                if (!$util.isString(message.signal))
+                                    return "signal: string expected";
+                            if (message.category != null && message.hasOwnProperty("category"))
+                                if (!$util.isString(message.category))
+                                    return "category: string expected";
+                            if (message.regulatoryStandards != null && message.hasOwnProperty("regulatoryStandards")) {
+                                if (!Array.isArray(message.regulatoryStandards))
+                                    return "regulatoryStandards: array expected";
+                                for (var i = 0; i < message.regulatoryStandards.length; ++i) {
+                                    var error = $root.google.cloud.databasecenter.v1beta.RegulatoryStandard.verify(message.regulatoryStandards[i]);
+                                    if (error)
+                                        return "regulatoryStandards." + error;
+                                }
+                            }
+                            if (message.externalUri != null && message.hasOwnProperty("externalUri"))
+                                if (!$util.isString(message.externalUri))
+                                    return "externalUri: string expected";
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a SCCInfo message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.SCCInfo
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.SCCInfo} SCCInfo
+                         */
+                        SCCInfo.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.SCCInfo)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.SCCInfo();
+                            if (object.signal != null)
+                                message.signal = String(object.signal);
+                            if (object.category != null)
+                                message.category = String(object.category);
+                            if (object.regulatoryStandards) {
+                                if (!Array.isArray(object.regulatoryStandards))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.SCCInfo.regulatoryStandards: array expected");
+                                message.regulatoryStandards = [];
+                                for (var i = 0; i < object.regulatoryStandards.length; ++i) {
+                                    if (typeof object.regulatoryStandards[i] !== "object")
+                                        throw TypeError(".google.cloud.databasecenter.v1beta.SCCInfo.regulatoryStandards: object expected");
+                                    message.regulatoryStandards[i] = $root.google.cloud.databasecenter.v1beta.RegulatoryStandard.fromObject(object.regulatoryStandards[i]);
+                                }
+                            }
+                            if (object.externalUri != null)
+                                message.externalUri = String(object.externalUri);
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a SCCInfo message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.SCCInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.SCCInfo} message SCCInfo
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        SCCInfo.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.arrays || options.defaults)
+                                object.regulatoryStandards = [];
+                            if (options.defaults) {
+                                object.signal = "";
+                                object.category = "";
+                                object.externalUri = "";
+                            }
+                            if (message.signal != null && message.hasOwnProperty("signal"))
+                                object.signal = message.signal;
+                            if (message.category != null && message.hasOwnProperty("category"))
+                                object.category = message.category;
+                            if (message.regulatoryStandards && message.regulatoryStandards.length) {
+                                object.regulatoryStandards = [];
+                                for (var j = 0; j < message.regulatoryStandards.length; ++j)
+                                    object.regulatoryStandards[j] = $root.google.cloud.databasecenter.v1beta.RegulatoryStandard.toObject(message.regulatoryStandards[j], options);
+                            }
+                            if (message.externalUri != null && message.hasOwnProperty("externalUri"))
+                                object.externalUri = message.externalUri;
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this SCCInfo to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.SCCInfo
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        SCCInfo.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for SCCInfo
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.SCCInfo
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        SCCInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.SCCInfo";
+                        };
+    
+                        return SCCInfo;
+                    })();
+    
+                    v1beta.RecommendationInfo = (function() {
+    
+                        /**
+                         * Properties of a RecommendationInfo.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IRecommendationInfo
+                         * @property {string|null} [recommender] RecommendationInfo recommender
+                         * @property {string|null} [recommenderId] RecommendationInfo recommenderId
+                         * @property {string|null} [recommenderSubtype] RecommendationInfo recommenderSubtype
+                         */
+    
+                        /**
+                         * Constructs a new RecommendationInfo.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a RecommendationInfo.
+                         * @implements IRecommendationInfo
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IRecommendationInfo=} [properties] Properties to set
+                         */
+                        function RecommendationInfo(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * RecommendationInfo recommender.
+                         * @member {string} recommender
+                         * @memberof google.cloud.databasecenter.v1beta.RecommendationInfo
+                         * @instance
+                         */
+                        RecommendationInfo.prototype.recommender = "";
+    
+                        /**
+                         * RecommendationInfo recommenderId.
+                         * @member {string} recommenderId
+                         * @memberof google.cloud.databasecenter.v1beta.RecommendationInfo
+                         * @instance
+                         */
+                        RecommendationInfo.prototype.recommenderId = "";
+    
+                        /**
+                         * RecommendationInfo recommenderSubtype.
+                         * @member {string} recommenderSubtype
+                         * @memberof google.cloud.databasecenter.v1beta.RecommendationInfo
+                         * @instance
+                         */
+                        RecommendationInfo.prototype.recommenderSubtype = "";
+    
+                        /**
+                         * Creates a new RecommendationInfo instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.RecommendationInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IRecommendationInfo=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.RecommendationInfo} RecommendationInfo instance
+                         */
+                        RecommendationInfo.create = function create(properties) {
+                            return new RecommendationInfo(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified RecommendationInfo message. Does not implicitly {@link google.cloud.databasecenter.v1beta.RecommendationInfo.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.RecommendationInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IRecommendationInfo} message RecommendationInfo message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        RecommendationInfo.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.recommender != null && Object.hasOwnProperty.call(message, "recommender"))
+                                writer.uint32(/* id 1, wireType 2 =*/10).string(message.recommender);
+                            if (message.recommenderId != null && Object.hasOwnProperty.call(message, "recommenderId"))
+                                writer.uint32(/* id 2, wireType 2 =*/18).string(message.recommenderId);
+                            if (message.recommenderSubtype != null && Object.hasOwnProperty.call(message, "recommenderSubtype"))
+                                writer.uint32(/* id 3, wireType 2 =*/26).string(message.recommenderSubtype);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified RecommendationInfo message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.RecommendationInfo.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.RecommendationInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IRecommendationInfo} message RecommendationInfo message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        RecommendationInfo.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a RecommendationInfo message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.RecommendationInfo
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.RecommendationInfo} RecommendationInfo
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        RecommendationInfo.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.RecommendationInfo();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.recommender = reader.string();
+                                        break;
+                                    }
+                                case 2: {
+                                        message.recommenderId = reader.string();
+                                        break;
+                                    }
+                                case 3: {
+                                        message.recommenderSubtype = reader.string();
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a RecommendationInfo message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.RecommendationInfo
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.RecommendationInfo} RecommendationInfo
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        RecommendationInfo.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a RecommendationInfo message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.RecommendationInfo
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        RecommendationInfo.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.recommender != null && message.hasOwnProperty("recommender"))
+                                if (!$util.isString(message.recommender))
+                                    return "recommender: string expected";
+                            if (message.recommenderId != null && message.hasOwnProperty("recommenderId"))
+                                if (!$util.isString(message.recommenderId))
+                                    return "recommenderId: string expected";
+                            if (message.recommenderSubtype != null && message.hasOwnProperty("recommenderSubtype"))
+                                if (!$util.isString(message.recommenderSubtype))
+                                    return "recommenderSubtype: string expected";
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a RecommendationInfo message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.RecommendationInfo
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.RecommendationInfo} RecommendationInfo
+                         */
+                        RecommendationInfo.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.RecommendationInfo)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.RecommendationInfo();
+                            if (object.recommender != null)
+                                message.recommender = String(object.recommender);
+                            if (object.recommenderId != null)
+                                message.recommenderId = String(object.recommenderId);
+                            if (object.recommenderSubtype != null)
+                                message.recommenderSubtype = String(object.recommenderSubtype);
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a RecommendationInfo message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.RecommendationInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.RecommendationInfo} message RecommendationInfo
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        RecommendationInfo.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.defaults) {
+                                object.recommender = "";
+                                object.recommenderId = "";
+                                object.recommenderSubtype = "";
+                            }
+                            if (message.recommender != null && message.hasOwnProperty("recommender"))
+                                object.recommender = message.recommender;
+                            if (message.recommenderId != null && message.hasOwnProperty("recommenderId"))
+                                object.recommenderId = message.recommenderId;
+                            if (message.recommenderSubtype != null && message.hasOwnProperty("recommenderSubtype"))
+                                object.recommenderSubtype = message.recommenderSubtype;
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this RecommendationInfo to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.RecommendationInfo
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        RecommendationInfo.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for RecommendationInfo
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.RecommendationInfo
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        RecommendationInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.RecommendationInfo";
+                        };
+    
+                        return RecommendationInfo;
+                    })();
+    
+                    v1beta.RegulatoryStandard = (function() {
+    
+                        /**
+                         * Properties of a RegulatoryStandard.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IRegulatoryStandard
+                         * @property {string|null} [standard] RegulatoryStandard standard
+                         * @property {string|null} [version] RegulatoryStandard version
+                         */
+    
+                        /**
+                         * Constructs a new RegulatoryStandard.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a RegulatoryStandard.
+                         * @implements IRegulatoryStandard
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IRegulatoryStandard=} [properties] Properties to set
+                         */
+                        function RegulatoryStandard(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * RegulatoryStandard standard.
+                         * @member {string} standard
+                         * @memberof google.cloud.databasecenter.v1beta.RegulatoryStandard
+                         * @instance
+                         */
+                        RegulatoryStandard.prototype.standard = "";
+    
+                        /**
+                         * RegulatoryStandard version.
+                         * @member {string} version
+                         * @memberof google.cloud.databasecenter.v1beta.RegulatoryStandard
+                         * @instance
+                         */
+                        RegulatoryStandard.prototype.version = "";
+    
+                        /**
+                         * Creates a new RegulatoryStandard instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.RegulatoryStandard
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IRegulatoryStandard=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.RegulatoryStandard} RegulatoryStandard instance
+                         */
+                        RegulatoryStandard.create = function create(properties) {
+                            return new RegulatoryStandard(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified RegulatoryStandard message. Does not implicitly {@link google.cloud.databasecenter.v1beta.RegulatoryStandard.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.RegulatoryStandard
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IRegulatoryStandard} message RegulatoryStandard message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        RegulatoryStandard.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.standard != null && Object.hasOwnProperty.call(message, "standard"))
+                                writer.uint32(/* id 1, wireType 2 =*/10).string(message.standard);
+                            if (message.version != null && Object.hasOwnProperty.call(message, "version"))
+                                writer.uint32(/* id 2, wireType 2 =*/18).string(message.version);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified RegulatoryStandard message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.RegulatoryStandard.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.RegulatoryStandard
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IRegulatoryStandard} message RegulatoryStandard message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        RegulatoryStandard.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a RegulatoryStandard message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.RegulatoryStandard
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.RegulatoryStandard} RegulatoryStandard
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        RegulatoryStandard.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.RegulatoryStandard();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.standard = reader.string();
+                                        break;
+                                    }
+                                case 2: {
+                                        message.version = reader.string();
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a RegulatoryStandard message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.RegulatoryStandard
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.RegulatoryStandard} RegulatoryStandard
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        RegulatoryStandard.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a RegulatoryStandard message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.RegulatoryStandard
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        RegulatoryStandard.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.standard != null && message.hasOwnProperty("standard"))
+                                if (!$util.isString(message.standard))
+                                    return "standard: string expected";
+                            if (message.version != null && message.hasOwnProperty("version"))
+                                if (!$util.isString(message.version))
+                                    return "version: string expected";
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a RegulatoryStandard message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.RegulatoryStandard
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.RegulatoryStandard} RegulatoryStandard
+                         */
+                        RegulatoryStandard.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.RegulatoryStandard)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.RegulatoryStandard();
+                            if (object.standard != null)
+                                message.standard = String(object.standard);
+                            if (object.version != null)
+                                message.version = String(object.version);
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a RegulatoryStandard message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.RegulatoryStandard
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.RegulatoryStandard} message RegulatoryStandard
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        RegulatoryStandard.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.defaults) {
+                                object.standard = "";
+                                object.version = "";
+                            }
+                            if (message.standard != null && message.hasOwnProperty("standard"))
+                                object.standard = message.standard;
+                            if (message.version != null && message.hasOwnProperty("version"))
+                                object.version = message.version;
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this RegulatoryStandard to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.RegulatoryStandard
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        RegulatoryStandard.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for RegulatoryStandard
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.RegulatoryStandard
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        RegulatoryStandard.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.RegulatoryStandard";
+                        };
+    
+                        return RegulatoryStandard;
+                    })();
+    
+                    v1beta.OutdatedMinorVersionInfo = (function() {
+    
+                        /**
+                         * Properties of an OutdatedMinorVersionInfo.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IOutdatedMinorVersionInfo
+                         * @property {string|null} [recommendedMinorVersion] OutdatedMinorVersionInfo recommendedMinorVersion
+                         */
+    
+                        /**
+                         * Constructs a new OutdatedMinorVersionInfo.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents an OutdatedMinorVersionInfo.
+                         * @implements IOutdatedMinorVersionInfo
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IOutdatedMinorVersionInfo=} [properties] Properties to set
+                         */
+                        function OutdatedMinorVersionInfo(properties) {
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * OutdatedMinorVersionInfo recommendedMinorVersion.
+                         * @member {string} recommendedMinorVersion
+                         * @memberof google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo
+                         * @instance
+                         */
+                        OutdatedMinorVersionInfo.prototype.recommendedMinorVersion = "";
+    
+                        /**
+                         * Creates a new OutdatedMinorVersionInfo instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IOutdatedMinorVersionInfo=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo} OutdatedMinorVersionInfo instance
+                         */
+                        OutdatedMinorVersionInfo.create = function create(properties) {
+                            return new OutdatedMinorVersionInfo(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified OutdatedMinorVersionInfo message. Does not implicitly {@link google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IOutdatedMinorVersionInfo} message OutdatedMinorVersionInfo message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        OutdatedMinorVersionInfo.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.recommendedMinorVersion != null && Object.hasOwnProperty.call(message, "recommendedMinorVersion"))
+                                writer.uint32(/* id 1, wireType 2 =*/10).string(message.recommendedMinorVersion);
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified OutdatedMinorVersionInfo message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IOutdatedMinorVersionInfo} message OutdatedMinorVersionInfo message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        OutdatedMinorVersionInfo.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes an OutdatedMinorVersionInfo message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo} OutdatedMinorVersionInfo
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        OutdatedMinorVersionInfo.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.recommendedMinorVersion = reader.string();
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes an OutdatedMinorVersionInfo message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo} OutdatedMinorVersionInfo
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        OutdatedMinorVersionInfo.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies an OutdatedMinorVersionInfo message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        OutdatedMinorVersionInfo.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.recommendedMinorVersion != null && message.hasOwnProperty("recommendedMinorVersion"))
+                                if (!$util.isString(message.recommendedMinorVersion))
+                                    return "recommendedMinorVersion: string expected";
+                            return null;
+                        };
+    
+                        /**
+                         * Creates an OutdatedMinorVersionInfo message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo} OutdatedMinorVersionInfo
+                         */
+                        OutdatedMinorVersionInfo.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo();
+                            if (object.recommendedMinorVersion != null)
+                                message.recommendedMinorVersion = String(object.recommendedMinorVersion);
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from an OutdatedMinorVersionInfo message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo} message OutdatedMinorVersionInfo
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        OutdatedMinorVersionInfo.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.defaults)
+                                object.recommendedMinorVersion = "";
+                            if (message.recommendedMinorVersion != null && message.hasOwnProperty("recommendedMinorVersion"))
+                                object.recommendedMinorVersion = message.recommendedMinorVersion;
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this OutdatedMinorVersionInfo to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        OutdatedMinorVersionInfo.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for OutdatedMinorVersionInfo
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        OutdatedMinorVersionInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.OutdatedMinorVersionInfo";
+                        };
+    
+                        return OutdatedMinorVersionInfo;
+                    })();
+    
+                    v1beta.MaintenanceRecommendationInfo = (function() {
+    
+                        /**
+                         * Properties of a MaintenanceRecommendationInfo.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface IMaintenanceRecommendationInfo
+                         * @property {Array.<google.cloud.databasecenter.v1beta.IResourceMaintenanceSchedule>|null} [resourceMaintenanceSchedules] MaintenanceRecommendationInfo resourceMaintenanceSchedules
+                         */
+    
+                        /**
+                         * Constructs a new MaintenanceRecommendationInfo.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a MaintenanceRecommendationInfo.
+                         * @implements IMaintenanceRecommendationInfo
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.IMaintenanceRecommendationInfo=} [properties] Properties to set
+                         */
+                        function MaintenanceRecommendationInfo(properties) {
+                            this.resourceMaintenanceSchedules = [];
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * MaintenanceRecommendationInfo resourceMaintenanceSchedules.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.IResourceMaintenanceSchedule>} resourceMaintenanceSchedules
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo
+                         * @instance
+                         */
+                        MaintenanceRecommendationInfo.prototype.resourceMaintenanceSchedules = $util.emptyArray;
+    
+                        /**
+                         * Creates a new MaintenanceRecommendationInfo instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IMaintenanceRecommendationInfo=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo} MaintenanceRecommendationInfo instance
+                         */
+                        MaintenanceRecommendationInfo.create = function create(properties) {
+                            return new MaintenanceRecommendationInfo(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified MaintenanceRecommendationInfo message. Does not implicitly {@link google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IMaintenanceRecommendationInfo} message MaintenanceRecommendationInfo message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        MaintenanceRecommendationInfo.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.resourceMaintenanceSchedules != null && message.resourceMaintenanceSchedules.length)
+                                for (var i = 0; i < message.resourceMaintenanceSchedules.length; ++i)
+                                    $root.google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule.encode(message.resourceMaintenanceSchedules[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified MaintenanceRecommendationInfo message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.IMaintenanceRecommendationInfo} message MaintenanceRecommendationInfo message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        MaintenanceRecommendationInfo.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a MaintenanceRecommendationInfo message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo} MaintenanceRecommendationInfo
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        MaintenanceRecommendationInfo.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        if (!(message.resourceMaintenanceSchedules && message.resourceMaintenanceSchedules.length))
+                                            message.resourceMaintenanceSchedules = [];
+                                        message.resourceMaintenanceSchedules.push($root.google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule.decode(reader, reader.uint32()));
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a MaintenanceRecommendationInfo message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo} MaintenanceRecommendationInfo
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        MaintenanceRecommendationInfo.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a MaintenanceRecommendationInfo message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        MaintenanceRecommendationInfo.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.resourceMaintenanceSchedules != null && message.hasOwnProperty("resourceMaintenanceSchedules")) {
+                                if (!Array.isArray(message.resourceMaintenanceSchedules))
+                                    return "resourceMaintenanceSchedules: array expected";
+                                for (var i = 0; i < message.resourceMaintenanceSchedules.length; ++i) {
+                                    var error = $root.google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule.verify(message.resourceMaintenanceSchedules[i]);
+                                    if (error)
+                                        return "resourceMaintenanceSchedules." + error;
+                                }
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a MaintenanceRecommendationInfo message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo} MaintenanceRecommendationInfo
+                         */
+                        MaintenanceRecommendationInfo.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo();
+                            if (object.resourceMaintenanceSchedules) {
+                                if (!Array.isArray(object.resourceMaintenanceSchedules))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo.resourceMaintenanceSchedules: array expected");
+                                message.resourceMaintenanceSchedules = [];
+                                for (var i = 0; i < object.resourceMaintenanceSchedules.length; ++i) {
+                                    if (typeof object.resourceMaintenanceSchedules[i] !== "object")
+                                        throw TypeError(".google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo.resourceMaintenanceSchedules: object expected");
+                                    message.resourceMaintenanceSchedules[i] = $root.google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule.fromObject(object.resourceMaintenanceSchedules[i]);
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a MaintenanceRecommendationInfo message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo} message MaintenanceRecommendationInfo
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        MaintenanceRecommendationInfo.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.arrays || options.defaults)
+                                object.resourceMaintenanceSchedules = [];
+                            if (message.resourceMaintenanceSchedules && message.resourceMaintenanceSchedules.length) {
+                                object.resourceMaintenanceSchedules = [];
+                                for (var j = 0; j < message.resourceMaintenanceSchedules.length; ++j)
+                                    object.resourceMaintenanceSchedules[j] = $root.google.cloud.databasecenter.v1beta.ResourceMaintenanceSchedule.toObject(message.resourceMaintenanceSchedules[j], options);
+                            }
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this MaintenanceRecommendationInfo to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        MaintenanceRecommendationInfo.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for MaintenanceRecommendationInfo
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        MaintenanceRecommendationInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.MaintenanceRecommendationInfo";
+                        };
+    
+                        return MaintenanceRecommendationInfo;
+                    })();
+    
+                    v1beta.Signal = (function() {
+    
+                        /**
+                         * Properties of a Signal.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @interface ISignal
+                         * @property {google.cloud.databasecenter.v1beta.SignalType|null} [signalType] Signal signalType
+                         * @property {google.cloud.databasecenter.v1beta.SignalStatus|null} [signalStatus] Signal signalStatus
+                         * @property {Array.<google.cloud.databasecenter.v1beta.IAdditionalDetail>|null} [additionalDetails] Signal additionalDetails
+                         * @property {google.cloud.databasecenter.v1beta.IssueSeverity|null} [issueSeverity] Signal issueSeverity
+                         * @property {google.protobuf.ITimestamp|null} [issueCreateTime] Signal issueCreateTime
+                         */
+    
+                        /**
+                         * Constructs a new Signal.
+                         * @memberof google.cloud.databasecenter.v1beta
+                         * @classdesc Represents a Signal.
+                         * @implements ISignal
+                         * @constructor
+                         * @param {google.cloud.databasecenter.v1beta.ISignal=} [properties] Properties to set
+                         */
+                        function Signal(properties) {
+                            this.additionalDetails = [];
+                            if (properties)
+                                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                    if (properties[keys[i]] != null)
+                                        this[keys[i]] = properties[keys[i]];
+                        }
+    
+                        /**
+                         * Signal signalType.
+                         * @member {google.cloud.databasecenter.v1beta.SignalType} signalType
+                         * @memberof google.cloud.databasecenter.v1beta.Signal
+                         * @instance
+                         */
+                        Signal.prototype.signalType = 0;
+    
+                        /**
+                         * Signal signalStatus.
+                         * @member {google.cloud.databasecenter.v1beta.SignalStatus} signalStatus
+                         * @memberof google.cloud.databasecenter.v1beta.Signal
+                         * @instance
+                         */
+                        Signal.prototype.signalStatus = 0;
+    
+                        /**
+                         * Signal additionalDetails.
+                         * @member {Array.<google.cloud.databasecenter.v1beta.IAdditionalDetail>} additionalDetails
+                         * @memberof google.cloud.databasecenter.v1beta.Signal
+                         * @instance
+                         */
+                        Signal.prototype.additionalDetails = $util.emptyArray;
+    
+                        /**
+                         * Signal issueSeverity.
+                         * @member {google.cloud.databasecenter.v1beta.IssueSeverity} issueSeverity
+                         * @memberof google.cloud.databasecenter.v1beta.Signal
+                         * @instance
+                         */
+                        Signal.prototype.issueSeverity = 0;
+    
+                        /**
+                         * Signal issueCreateTime.
+                         * @member {google.protobuf.ITimestamp|null|undefined} issueCreateTime
+                         * @memberof google.cloud.databasecenter.v1beta.Signal
+                         * @instance
+                         */
+                        Signal.prototype.issueCreateTime = null;
+    
+                        /**
+                         * Creates a new Signal instance using the specified properties.
+                         * @function create
+                         * @memberof google.cloud.databasecenter.v1beta.Signal
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ISignal=} [properties] Properties to set
+                         * @returns {google.cloud.databasecenter.v1beta.Signal} Signal instance
+                         */
+                        Signal.create = function create(properties) {
+                            return new Signal(properties);
+                        };
+    
+                        /**
+                         * Encodes the specified Signal message. Does not implicitly {@link google.cloud.databasecenter.v1beta.Signal.verify|verify} messages.
+                         * @function encode
+                         * @memberof google.cloud.databasecenter.v1beta.Signal
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ISignal} message Signal message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        Signal.encode = function encode(message, writer) {
+                            if (!writer)
+                                writer = $Writer.create();
+                            if (message.signalType != null && Object.hasOwnProperty.call(message, "signalType"))
+                                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.signalType);
+                            if (message.signalStatus != null && Object.hasOwnProperty.call(message, "signalStatus"))
+                                writer.uint32(/* id 2, wireType 0 =*/16).int32(message.signalStatus);
+                            if (message.additionalDetails != null && message.additionalDetails.length)
+                                for (var i = 0; i < message.additionalDetails.length; ++i)
+                                    $root.google.cloud.databasecenter.v1beta.AdditionalDetail.encode(message.additionalDetails[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+                            if (message.issueSeverity != null && Object.hasOwnProperty.call(message, "issueSeverity"))
+                                writer.uint32(/* id 4, wireType 0 =*/32).int32(message.issueSeverity);
+                            if (message.issueCreateTime != null && Object.hasOwnProperty.call(message, "issueCreateTime"))
+                                $root.google.protobuf.Timestamp.encode(message.issueCreateTime, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
+                            return writer;
+                        };
+    
+                        /**
+                         * Encodes the specified Signal message, length delimited. Does not implicitly {@link google.cloud.databasecenter.v1beta.Signal.verify|verify} messages.
+                         * @function encodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.Signal
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.ISignal} message Signal message or plain object to encode
+                         * @param {$protobuf.Writer} [writer] Writer to encode to
+                         * @returns {$protobuf.Writer} Writer
+                         */
+                        Signal.encodeDelimited = function encodeDelimited(message, writer) {
+                            return this.encode(message, writer).ldelim();
+                        };
+    
+                        /**
+                         * Decodes a Signal message from the specified reader or buffer.
+                         * @function decode
+                         * @memberof google.cloud.databasecenter.v1beta.Signal
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @param {number} [length] Message length if known beforehand
+                         * @returns {google.cloud.databasecenter.v1beta.Signal} Signal
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        Signal.decode = function decode(reader, length, error) {
+                            if (!(reader instanceof $Reader))
+                                reader = $Reader.create(reader);
+                            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.databasecenter.v1beta.Signal();
+                            while (reader.pos < end) {
+                                var tag = reader.uint32();
+                                if (tag === error)
+                                    break;
+                                switch (tag >>> 3) {
+                                case 1: {
+                                        message.signalType = reader.int32();
+                                        break;
+                                    }
+                                case 2: {
+                                        message.signalStatus = reader.int32();
+                                        break;
+                                    }
+                                case 3: {
+                                        if (!(message.additionalDetails && message.additionalDetails.length))
+                                            message.additionalDetails = [];
+                                        message.additionalDetails.push($root.google.cloud.databasecenter.v1beta.AdditionalDetail.decode(reader, reader.uint32()));
+                                        break;
+                                    }
+                                case 4: {
+                                        message.issueSeverity = reader.int32();
+                                        break;
+                                    }
+                                case 5: {
+                                        message.issueCreateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        break;
+                                    }
+                                default:
+                                    reader.skipType(tag & 7);
+                                    break;
+                                }
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Decodes a Signal message from the specified reader or buffer, length delimited.
+                         * @function decodeDelimited
+                         * @memberof google.cloud.databasecenter.v1beta.Signal
+                         * @static
+                         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                         * @returns {google.cloud.databasecenter.v1beta.Signal} Signal
+                         * @throws {Error} If the payload is not a reader or valid buffer
+                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                         */
+                        Signal.decodeDelimited = function decodeDelimited(reader) {
+                            if (!(reader instanceof $Reader))
+                                reader = new $Reader(reader);
+                            return this.decode(reader, reader.uint32());
+                        };
+    
+                        /**
+                         * Verifies a Signal message.
+                         * @function verify
+                         * @memberof google.cloud.databasecenter.v1beta.Signal
+                         * @static
+                         * @param {Object.<string,*>} message Plain object to verify
+                         * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                         */
+                        Signal.verify = function verify(message) {
+                            if (typeof message !== "object" || message === null)
+                                return "object expected";
+                            if (message.signalType != null && message.hasOwnProperty("signalType"))
+                                switch (message.signalType) {
+                                default:
+                                    return "signalType: enum value expected";
+                                case 0:
+                                case 1:
+                                case 2:
+                                case 4:
+                                case 5:
+                                case 6:
+                                case 7:
+                                case 8:
+                                case 9:
+                                case 10:
+                                case 11:
+                                case 12:
+                                case 76:
+                                case 13:
+                                case 69:
+                                case 72:
+                                case 14:
+                                case 70:
+                                case 15:
+                                case 71:
+                                case 73:
+                                case 74:
+                                case 75:
+                                case 16:
+                                case 17:
+                                case 18:
+                                case 19:
+                                case 20:
+                                case 21:
+                                case 22:
+                                case 23:
+                                case 24:
+                                case 25:
+                                case 26:
+                                case 27:
+                                case 28:
+                                case 29:
+                                case 30:
+                                case 31:
+                                case 32:
+                                case 33:
+                                case 34:
+                                case 35:
+                                case 36:
+                                case 37:
+                                case 39:
+                                case 40:
+                                case 41:
+                                case 42:
+                                case 43:
+                                case 44:
+                                case 45:
+                                case 46:
+                                case 47:
+                                case 48:
+                                case 49:
+                                case 50:
+                                case 51:
+                                case 52:
+                                case 53:
+                                case 54:
+                                case 55:
+                                case 56:
+                                case 57:
+                                case 58:
+                                case 59:
+                                case 60:
+                                case 61:
+                                case 62:
+                                case 63:
+                                case 64:
+                                case 65:
+                                case 66:
+                                case 67:
+                                case 68:
+                                case 77:
+                                case 78:
+                                case 79:
+                                case 80:
+                                case 81:
+                                case 82:
+                                case 83:
+                                case 84:
+                                case 85:
+                                case 86:
+                                case 87:
+                                case 88:
+                                case 89:
+                                case 90:
+                                case 91:
+                                case 92:
+                                case 93:
+                                case 94:
+                                case 95:
+                                case 97:
+                                case 99:
+                                case 100:
+                                case 101:
+                                case 102:
+                                case 104:
+                                    break;
+                                }
+                            if (message.signalStatus != null && message.hasOwnProperty("signalStatus"))
+                                switch (message.signalStatus) {
+                                default:
+                                    return "signalStatus: enum value expected";
+                                case 0:
+                                case 1:
+                                case 2:
+                                case 3:
+                                case 4:
+                                    break;
+                                }
+                            if (message.additionalDetails != null && message.hasOwnProperty("additionalDetails")) {
+                                if (!Array.isArray(message.additionalDetails))
+                                    return "additionalDetails: array expected";
+                                for (var i = 0; i < message.additionalDetails.length; ++i) {
+                                    var error = $root.google.cloud.databasecenter.v1beta.AdditionalDetail.verify(message.additionalDetails[i]);
+                                    if (error)
+                                        return "additionalDetails." + error;
+                                }
+                            }
+                            if (message.issueSeverity != null && message.hasOwnProperty("issueSeverity"))
+                                switch (message.issueSeverity) {
+                                default:
+                                    return "issueSeverity: enum value expected";
+                                case 0:
+                                case 1:
+                                case 2:
+                                case 3:
+                                case 4:
+                                case 5:
+                                    break;
+                                }
+                            if (message.issueCreateTime != null && message.hasOwnProperty("issueCreateTime")) {
+                                var error = $root.google.protobuf.Timestamp.verify(message.issueCreateTime);
+                                if (error)
+                                    return "issueCreateTime." + error;
+                            }
+                            return null;
+                        };
+    
+                        /**
+                         * Creates a Signal message from a plain object. Also converts values to their respective internal types.
+                         * @function fromObject
+                         * @memberof google.cloud.databasecenter.v1beta.Signal
+                         * @static
+                         * @param {Object.<string,*>} object Plain object
+                         * @returns {google.cloud.databasecenter.v1beta.Signal} Signal
+                         */
+                        Signal.fromObject = function fromObject(object) {
+                            if (object instanceof $root.google.cloud.databasecenter.v1beta.Signal)
+                                return object;
+                            var message = new $root.google.cloud.databasecenter.v1beta.Signal();
+                            switch (object.signalType) {
+                            default:
+                                if (typeof object.signalType === "number") {
+                                    message.signalType = object.signalType;
+                                    break;
+                                }
+                                break;
+                            case "SIGNAL_TYPE_UNSPECIFIED":
+                            case 0:
+                                message.signalType = 0;
+                                break;
+                            case "SIGNAL_TYPE_RESOURCE_FAILOVER_PROTECTED":
+                            case 1:
+                                message.signalType = 1;
+                                break;
+                            case "SIGNAL_TYPE_GROUP_MULTIREGIONAL":
+                            case 2:
+                                message.signalType = 2;
+                                break;
+                            case "SIGNAL_TYPE_NO_AUTOMATED_BACKUP_POLICY":
+                            case 4:
+                                message.signalType = 4;
+                                break;
+                            case "SIGNAL_TYPE_SHORT_BACKUP_RETENTION":
+                            case 5:
+                                message.signalType = 5;
+                                break;
+                            case "SIGNAL_TYPE_LAST_BACKUP_FAILED":
+                            case 6:
+                                message.signalType = 6;
+                                break;
+                            case "SIGNAL_TYPE_LAST_BACKUP_OLD":
+                            case 7:
+                                message.signalType = 7;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_2_0":
+                            case 8:
+                                message.signalType = 8;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_3":
+                            case 9:
+                                message.signalType = 9;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_2":
+                            case 10:
+                                message.signalType = 10;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_1":
+                            case 11:
+                                message.signalType = 11;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_0":
+                            case 12:
+                                message.signalType = 12;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CIS_CONTROLS_V8_0":
+                            case 76:
+                                message.signalType = 76;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_NIST_800_53":
+                            case 13:
+                                message.signalType = 13;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_NIST_800_53_R5":
+                            case 69:
+                                message.signalType = 69;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_NIST_CYBERSECURITY_FRAMEWORK_V1_0":
+                            case 72:
+                                message.signalType = 72;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_ISO_27001":
+                            case 14:
+                                message.signalType = 14;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_ISO_27001_V2022":
+                            case 70:
+                                message.signalType = 70;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_PCI_DSS_V3_2_1":
+                            case 15:
+                                message.signalType = 15;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_PCI_DSS_V4_0":
+                            case 71:
+                                message.signalType = 71;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_CLOUD_CONTROLS_MATRIX_V4":
+                            case 73:
+                                message.signalType = 73;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_HIPAA":
+                            case 74:
+                                message.signalType = 74;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATES_SOC2_V2017":
+                            case 75:
+                                message.signalType = 75;
+                                break;
+                            case "SIGNAL_TYPE_LOGS_NOT_OPTIMIZED_FOR_TROUBLESHOOTING":
+                            case 16:
+                                message.signalType = 16;
+                                break;
+                            case "SIGNAL_TYPE_QUERY_DURATIONS_NOT_LOGGED":
+                            case 17:
+                                message.signalType = 17;
+                                break;
+                            case "SIGNAL_TYPE_VERBOSE_ERROR_LOGGING":
+                            case 18:
+                                message.signalType = 18;
+                                break;
+                            case "SIGNAL_TYPE_QUERY_LOCK_WAITS_NOT_LOGGED":
+                            case 19:
+                                message.signalType = 19;
+                                break;
+                            case "SIGNAL_TYPE_LOGGING_MOST_ERRORS":
+                            case 20:
+                                message.signalType = 20;
+                                break;
+                            case "SIGNAL_TYPE_LOGGING_ONLY_CRITICAL_ERRORS":
+                            case 21:
+                                message.signalType = 21;
+                                break;
+                            case "SIGNAL_TYPE_MINIMAL_ERROR_LOGGING":
+                            case 22:
+                                message.signalType = 22;
+                                break;
+                            case "SIGNAL_TYPE_QUERY_STATS_LOGGED":
+                            case 23:
+                                message.signalType = 23;
+                                break;
+                            case "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_CLIENT_HOSTNAME":
+                            case 24:
+                                message.signalType = 24;
+                                break;
+                            case "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PARSER_STATS":
+                            case 25:
+                                message.signalType = 25;
+                                break;
+                            case "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PLANNER_STATS":
+                            case 26:
+                                message.signalType = 26;
+                                break;
+                            case "SIGNAL_TYPE_NOT_LOGGING_ONLY_DDL_STATEMENTS":
+                            case 27:
+                                message.signalType = 27;
+                                break;
+                            case "SIGNAL_TYPE_LOGGING_QUERY_STATS":
+                            case 28:
+                                message.signalType = 28;
+                                break;
+                            case "SIGNAL_TYPE_NOT_LOGGING_TEMPORARY_FILES":
+                            case 29:
+                                message.signalType = 29;
+                                break;
+                            case "SIGNAL_TYPE_CONNECTION_MAX_NOT_CONFIGURED":
+                            case 30:
+                                message.signalType = 30;
+                                break;
+                            case "SIGNAL_TYPE_USER_OPTIONS_CONFIGURED":
+                            case 31:
+                                message.signalType = 31;
+                                break;
+                            case "SIGNAL_TYPE_EXPOSED_TO_PUBLIC_ACCESS":
+                            case 32:
+                                message.signalType = 32;
+                                break;
+                            case "SIGNAL_TYPE_UNENCRYPTED_CONNECTIONS":
+                            case 33:
+                                message.signalType = 33;
+                                break;
+                            case "SIGNAL_TYPE_NO_ROOT_PASSWORD":
+                            case 34:
+                                message.signalType = 34;
+                                break;
+                            case "SIGNAL_TYPE_WEAK_ROOT_PASSWORD":
+                            case 35:
+                                message.signalType = 35;
+                                break;
+                            case "SIGNAL_TYPE_ENCRYPTION_KEY_NOT_CUSTOMER_MANAGED":
+                            case 36:
+                                message.signalType = 36;
+                                break;
+                            case "SIGNAL_TYPE_SERVER_AUTHENTICATION_NOT_REQUIRED":
+                            case 37:
+                                message.signalType = 37;
+                                break;
+                            case "SIGNAL_TYPE_EXPOSED_TO_EXTERNAL_SCRIPTS":
+                            case 39:
+                                message.signalType = 39;
+                                break;
+                            case "SIGNAL_TYPE_EXPOSED_TO_LOCAL_DATA_LOADS":
+                            case 40:
+                                message.signalType = 40;
+                                break;
+                            case "SIGNAL_TYPE_CONNECTION_ATTEMPTS_NOT_LOGGED":
+                            case 41:
+                                message.signalType = 41;
+                                break;
+                            case "SIGNAL_TYPE_DISCONNECTIONS_NOT_LOGGED":
+                            case 42:
+                                message.signalType = 42;
+                                break;
+                            case "SIGNAL_TYPE_LOGGING_EXCESSIVE_STATEMENT_INFO":
+                            case 43:
+                                message.signalType = 43;
+                                break;
+                            case "SIGNAL_TYPE_EXPOSED_TO_REMOTE_ACCESS":
+                            case 44:
+                                message.signalType = 44;
+                                break;
+                            case "SIGNAL_TYPE_DATABASE_NAMES_EXPOSED":
+                            case 45:
+                                message.signalType = 45;
+                                break;
+                            case "SIGNAL_TYPE_SENSITIVE_TRACE_INFO_NOT_MASKED":
+                            case 46:
+                                message.signalType = 46;
+                                break;
+                            case "SIGNAL_TYPE_PUBLIC_IP_ENABLED":
+                            case 47:
+                                message.signalType = 47;
+                                break;
+                            case "SIGNAL_TYPE_IDLE":
+                            case 48:
+                                message.signalType = 48;
+                                break;
+                            case "SIGNAL_TYPE_OVERPROVISIONED":
+                            case 49:
+                                message.signalType = 49;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_NUMBER_OF_OPEN_TABLES":
+                            case 50:
+                                message.signalType = 50;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_NUMBER_OF_TABLES":
+                            case 51:
+                                message.signalType = 51;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_TRANSACTION_ID_UTILIZATION":
+                            case 52:
+                                message.signalType = 52;
+                                break;
+                            case "SIGNAL_TYPE_UNDERPROVISIONED":
+                            case 53:
+                                message.signalType = 53;
+                                break;
+                            case "SIGNAL_TYPE_OUT_OF_DISK":
+                            case 54:
+                                message.signalType = 54;
+                                break;
+                            case "SIGNAL_TYPE_SERVER_CERTIFICATE_NEAR_EXPIRY":
+                            case 55:
+                                message.signalType = 55;
+                                break;
+                            case "SIGNAL_TYPE_DATABASE_AUDITING_DISABLED":
+                            case 56:
+                                message.signalType = 56;
+                                break;
+                            case "SIGNAL_TYPE_RESTRICT_AUTHORIZED_NETWORKS":
+                            case 57:
+                                message.signalType = 57;
+                                break;
+                            case "SIGNAL_TYPE_VIOLATE_POLICY_RESTRICT_PUBLIC_IP":
+                            case 58:
+                                message.signalType = 58;
+                                break;
+                            case "SIGNAL_TYPE_QUOTA_LIMIT":
+                            case 59:
+                                message.signalType = 59;
+                                break;
+                            case "SIGNAL_TYPE_NO_PASSWORD_POLICY":
+                            case 60:
+                                message.signalType = 60;
+                                break;
+                            case "SIGNAL_TYPE_CONNECTIONS_PERFORMANCE_IMPACT":
+                            case 61:
+                                message.signalType = 61;
+                                break;
+                            case "SIGNAL_TYPE_TMP_TABLES_PERFORMANCE_IMPACT":
+                            case 62:
+                                message.signalType = 62;
+                                break;
+                            case "SIGNAL_TYPE_TRANS_LOGS_PERFORMANCE_IMPACT":
+                            case 63:
+                                message.signalType = 63;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_JOINS_WITHOUT_INDEXES":
+                            case 64:
+                                message.signalType = 64;
+                                break;
+                            case "SIGNAL_TYPE_SUPERUSER_WRITING_TO_USER_TABLES":
+                            case 65:
+                                message.signalType = 65;
+                                break;
+                            case "SIGNAL_TYPE_USER_GRANTED_ALL_PERMISSIONS":
+                            case 66:
+                                message.signalType = 66;
+                                break;
+                            case "SIGNAL_TYPE_DATA_EXPORT_TO_EXTERNAL_CLOUD_STORAGE_BUCKET":
+                            case 67:
+                                message.signalType = 67;
+                                break;
+                            case "SIGNAL_TYPE_DATA_EXPORT_TO_PUBLIC_CLOUD_STORAGE_BUCKET":
+                            case 68:
+                                message.signalType = 68;
+                                break;
+                            case "SIGNAL_TYPE_WEAK_PASSWORD_HASH_ALGORITHM":
+                            case 77:
+                                message.signalType = 77;
+                                break;
+                            case "SIGNAL_TYPE_NO_USER_PASSWORD_POLICY":
+                            case 78:
+                                message.signalType = 78;
+                                break;
+                            case "SIGNAL_TYPE_HOT_NODE":
+                            case 79:
+                                message.signalType = 79;
+                                break;
+                            case "SIGNAL_TYPE_NO_DELETION_PROTECTION":
+                            case 80:
+                                message.signalType = 80;
+                                break;
+                            case "SIGNAL_TYPE_NO_POINT_IN_TIME_RECOVERY":
+                            case 81:
+                                message.signalType = 81;
+                                break;
+                            case "SIGNAL_TYPE_RESOURCE_SUSPENDED":
+                            case 82:
+                                message.signalType = 82;
+                                break;
+                            case "SIGNAL_TYPE_EXPENSIVE_COMMANDS":
+                            case 83:
+                                message.signalType = 83;
+                                break;
+                            case "SIGNAL_TYPE_NO_MAINTENANCE_POLICY_CONFIGURED":
+                            case 84:
+                                message.signalType = 84;
+                                break;
+                            case "SIGNAL_TYPE_INEFFICIENT_QUERY":
+                            case 85:
+                                message.signalType = 85;
+                                break;
+                            case "SIGNAL_TYPE_READ_INTENSIVE_WORKLOAD":
+                            case 86:
+                                message.signalType = 86;
+                                break;
+                            case "SIGNAL_TYPE_MEMORY_LIMIT":
+                            case 87:
+                                message.signalType = 87;
+                                break;
+                            case "SIGNAL_TYPE_MAX_SERVER_MEMORY":
+                            case 88:
+                                message.signalType = 88;
+                                break;
+                            case "SIGNAL_TYPE_LARGE_ROWS":
+                            case 89:
+                                message.signalType = 89;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_WRITE_PRESSURE":
+                            case 90:
+                                message.signalType = 90;
+                                break;
+                            case "SIGNAL_TYPE_HIGH_READ_PRESSURE":
+                            case 91:
+                                message.signalType = 91;
+                                break;
+                            case "SIGNAL_TYPE_ENCRYPTION_ORG_POLICY_NOT_SATISFIED":
+                            case 92:
+                                message.signalType = 92;
+                                break;
+                            case "SIGNAL_TYPE_LOCATION_ORG_POLICY_NOT_SATISFIED":
+                            case 93:
+                                message.signalType = 93;
+                                break;
+                            case "SIGNAL_TYPE_OUTDATED_MINOR_VERSION":
+                            case 94:
+                                message.signalType = 94;
+                                break;
+                            case "SIGNAL_TYPE_SCHEMA_NOT_OPTIMIZED":
+                            case 95:
+                                message.signalType = 95;
+                                break;
+                            case "SIGNAL_TYPE_REPLICATION_LAG":
+                            case 97:
+                                message.signalType = 97;
+                                break;
+                            case "SIGNAL_TYPE_OUTDATED_CLIENT":
+                            case 99:
+                                message.signalType = 99;
+                                break;
+                            case "SIGNAL_TYPE_DATABOOST_DISABLED":
+                            case 100:
+                                message.signalType = 100;
+                                break;
+                            case "SIGNAL_TYPE_RECOMMENDED_MAINTENANCE_POLICIES":
+                            case 101:
+                                message.signalType = 101;
+                                break;
+                            case "SIGNAL_TYPE_EXTENDED_SUPPORT":
+                            case 102:
+                                message.signalType = 102;
+                                break;
+                            case "SIGNAL_TYPE_VERSION_NEARING_END_OF_LIFE":
+                            case 104:
+                                message.signalType = 104;
+                                break;
+                            }
+                            switch (object.signalStatus) {
+                            default:
+                                if (typeof object.signalStatus === "number") {
+                                    message.signalStatus = object.signalStatus;
+                                    break;
+                                }
+                                break;
+                            case "SIGNAL_STATUS_UNSPECIFIED":
+                            case 0:
+                                message.signalStatus = 0;
+                                break;
+                            case "SIGNAL_STATUS_NOT_APPLICABLE":
+                            case 1:
+                                message.signalStatus = 1;
+                                break;
+                            case "SIGNAL_STATUS_OK":
+                            case 2:
+                                message.signalStatus = 2;
+                                break;
+                            case "SIGNAL_STATUS_ISSUE":
+                            case 3:
+                                message.signalStatus = 3;
+                                break;
+                            case "SIGNAL_STATUS_NOT_ENABLED":
+                            case 4:
+                                message.signalStatus = 4;
+                                break;
+                            }
+                            if (object.additionalDetails) {
+                                if (!Array.isArray(object.additionalDetails))
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.Signal.additionalDetails: array expected");
+                                message.additionalDetails = [];
+                                for (var i = 0; i < object.additionalDetails.length; ++i) {
+                                    if (typeof object.additionalDetails[i] !== "object")
+                                        throw TypeError(".google.cloud.databasecenter.v1beta.Signal.additionalDetails: object expected");
+                                    message.additionalDetails[i] = $root.google.cloud.databasecenter.v1beta.AdditionalDetail.fromObject(object.additionalDetails[i]);
+                                }
+                            }
+                            switch (object.issueSeverity) {
+                            default:
+                                if (typeof object.issueSeverity === "number") {
+                                    message.issueSeverity = object.issueSeverity;
+                                    break;
+                                }
+                                break;
+                            case "ISSUE_SEVERITY_UNSPECIFIED":
+                            case 0:
+                                message.issueSeverity = 0;
+                                break;
+                            case "ISSUE_SEVERITY_LOW":
+                            case 1:
+                                message.issueSeverity = 1;
+                                break;
+                            case "ISSUE_SEVERITY_MEDIUM":
+                            case 2:
+                                message.issueSeverity = 2;
+                                break;
+                            case "ISSUE_SEVERITY_HIGH":
+                            case 3:
+                                message.issueSeverity = 3;
+                                break;
+                            case "ISSUE_SEVERITY_CRITICAL":
+                            case 4:
+                                message.issueSeverity = 4;
+                                break;
+                            case "ISSUE_SEVERITY_IRRELEVANT":
+                            case 5:
+                                message.issueSeverity = 5;
+                                break;
+                            }
+                            if (object.issueCreateTime != null) {
+                                if (typeof object.issueCreateTime !== "object")
+                                    throw TypeError(".google.cloud.databasecenter.v1beta.Signal.issueCreateTime: object expected");
+                                message.issueCreateTime = $root.google.protobuf.Timestamp.fromObject(object.issueCreateTime);
+                            }
+                            return message;
+                        };
+    
+                        /**
+                         * Creates a plain object from a Signal message. Also converts values to other types if specified.
+                         * @function toObject
+                         * @memberof google.cloud.databasecenter.v1beta.Signal
+                         * @static
+                         * @param {google.cloud.databasecenter.v1beta.Signal} message Signal
+                         * @param {$protobuf.IConversionOptions} [options] Conversion options
+                         * @returns {Object.<string,*>} Plain object
+                         */
+                        Signal.toObject = function toObject(message, options) {
+                            if (!options)
+                                options = {};
+                            var object = {};
+                            if (options.arrays || options.defaults)
+                                object.additionalDetails = [];
+                            if (options.defaults) {
+                                object.signalType = options.enums === String ? "SIGNAL_TYPE_UNSPECIFIED" : 0;
+                                object.signalStatus = options.enums === String ? "SIGNAL_STATUS_UNSPECIFIED" : 0;
+                                object.issueSeverity = options.enums === String ? "ISSUE_SEVERITY_UNSPECIFIED" : 0;
+                                object.issueCreateTime = null;
+                            }
+                            if (message.signalType != null && message.hasOwnProperty("signalType"))
+                                object.signalType = options.enums === String ? $root.google.cloud.databasecenter.v1beta.SignalType[message.signalType] === undefined ? message.signalType : $root.google.cloud.databasecenter.v1beta.SignalType[message.signalType] : message.signalType;
+                            if (message.signalStatus != null && message.hasOwnProperty("signalStatus"))
+                                object.signalStatus = options.enums === String ? $root.google.cloud.databasecenter.v1beta.SignalStatus[message.signalStatus] === undefined ? message.signalStatus : $root.google.cloud.databasecenter.v1beta.SignalStatus[message.signalStatus] : message.signalStatus;
+                            if (message.additionalDetails && message.additionalDetails.length) {
+                                object.additionalDetails = [];
+                                for (var j = 0; j < message.additionalDetails.length; ++j)
+                                    object.additionalDetails[j] = $root.google.cloud.databasecenter.v1beta.AdditionalDetail.toObject(message.additionalDetails[j], options);
+                            }
+                            if (message.issueSeverity != null && message.hasOwnProperty("issueSeverity"))
+                                object.issueSeverity = options.enums === String ? $root.google.cloud.databasecenter.v1beta.IssueSeverity[message.issueSeverity] === undefined ? message.issueSeverity : $root.google.cloud.databasecenter.v1beta.IssueSeverity[message.issueSeverity] : message.issueSeverity;
+                            if (message.issueCreateTime != null && message.hasOwnProperty("issueCreateTime"))
+                                object.issueCreateTime = $root.google.protobuf.Timestamp.toObject(message.issueCreateTime, options);
+                            return object;
+                        };
+    
+                        /**
+                         * Converts this Signal to JSON.
+                         * @function toJSON
+                         * @memberof google.cloud.databasecenter.v1beta.Signal
+                         * @instance
+                         * @returns {Object.<string,*>} JSON object
+                         */
+                        Signal.prototype.toJSON = function toJSON() {
+                            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                        };
+    
+                        /**
+                         * Gets the default type url for Signal
+                         * @function getTypeUrl
+                         * @memberof google.cloud.databasecenter.v1beta.Signal
+                         * @static
+                         * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                         * @returns {string} The default type url
+                         */
+                        Signal.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                            if (typeUrlPrefix === undefined) {
+                                typeUrlPrefix = "type.googleapis.com";
+                            }
+                            return typeUrlPrefix + "/google.cloud.databasecenter.v1beta.Signal";
+                        };
+    
+                        return Signal;
+                    })();
+    
+                    /**
+                     * SuspensionReason enum.
+                     * @name google.cloud.databasecenter.v1beta.SuspensionReason
+                     * @enum {number}
+                     * @property {number} SUSPENSION_REASON_UNSPECIFIED=0 SUSPENSION_REASON_UNSPECIFIED value
+                     * @property {number} WIPEOUT_HIDE_EVENT=1 WIPEOUT_HIDE_EVENT value
+                     * @property {number} WIPEOUT_PURGE_EVENT=2 WIPEOUT_PURGE_EVENT value
+                     * @property {number} BILLING_DISABLED=3 BILLING_DISABLED value
+                     * @property {number} ABUSER_DETECTED=4 ABUSER_DETECTED value
+                     * @property {number} ENCRYPTION_KEY_INACCESSIBLE=5 ENCRYPTION_KEY_INACCESSIBLE value
+                     * @property {number} REPLICATED_CLUSTER_ENCRYPTION_KEY_INACCESSIBLE=6 REPLICATED_CLUSTER_ENCRYPTION_KEY_INACCESSIBLE value
+                     */
+                    v1beta.SuspensionReason = (function() {
+                        var valuesById = {}, values = Object.create(valuesById);
+                        values[valuesById[0] = "SUSPENSION_REASON_UNSPECIFIED"] = 0;
+                        values[valuesById[1] = "WIPEOUT_HIDE_EVENT"] = 1;
+                        values[valuesById[2] = "WIPEOUT_PURGE_EVENT"] = 2;
+                        values[valuesById[3] = "BILLING_DISABLED"] = 3;
+                        values[valuesById[4] = "ABUSER_DETECTED"] = 4;
+                        values[valuesById[5] = "ENCRYPTION_KEY_INACCESSIBLE"] = 5;
+                        values[valuesById[6] = "REPLICATED_CLUSTER_ENCRYPTION_KEY_INACCESSIBLE"] = 6;
+                        return values;
+                    })();
+    
+                    return v1beta;
+                })();
+    
+                return databasecenter;
+            })();
+    
+            return cloud;
+        })();
+    
+        google.api = (function() {
+    
+            /**
+             * Namespace api.
+             * @memberof google
+             * @namespace
+             */
+            var api = {};
+    
+            /**
+             * FieldBehavior enum.
+             * @name google.api.FieldBehavior
+             * @enum {number}
+             * @property {number} FIELD_BEHAVIOR_UNSPECIFIED=0 FIELD_BEHAVIOR_UNSPECIFIED value
+             * @property {number} OPTIONAL=1 OPTIONAL value
+             * @property {number} REQUIRED=2 REQUIRED value
+             * @property {number} OUTPUT_ONLY=3 OUTPUT_ONLY value
+             * @property {number} INPUT_ONLY=4 INPUT_ONLY value
+             * @property {number} IMMUTABLE=5 IMMUTABLE value
+             * @property {number} UNORDERED_LIST=6 UNORDERED_LIST value
+             * @property {number} NON_EMPTY_DEFAULT=7 NON_EMPTY_DEFAULT value
+             * @property {number} IDENTIFIER=8 IDENTIFIER value
+             */
+            api.FieldBehavior = (function() {
+                var valuesById = {}, values = Object.create(valuesById);
+                values[valuesById[0] = "FIELD_BEHAVIOR_UNSPECIFIED"] = 0;
+                values[valuesById[1] = "OPTIONAL"] = 1;
+                values[valuesById[2] = "REQUIRED"] = 2;
+                values[valuesById[3] = "OUTPUT_ONLY"] = 3;
+                values[valuesById[4] = "INPUT_ONLY"] = 4;
+                values[valuesById[5] = "IMMUTABLE"] = 5;
+                values[valuesById[6] = "UNORDERED_LIST"] = 6;
+                values[valuesById[7] = "NON_EMPTY_DEFAULT"] = 7;
+                values[valuesById[8] = "IDENTIFIER"] = 8;
+                return values;
+            })();
+    
+            api.Http = (function() {
+    
+                /**
+                 * Properties of a Http.
+                 * @memberof google.api
+                 * @interface IHttp
+                 * @property {Array.<google.api.IHttpRule>|null} [rules] Http rules
+                 * @property {boolean|null} [fullyDecodeReservedExpansion] Http fullyDecodeReservedExpansion
+                 */
+    
+                /**
+                 * Constructs a new Http.
+                 * @memberof google.api
+                 * @classdesc Represents a Http.
+                 * @implements IHttp
+                 * @constructor
+                 * @param {google.api.IHttp=} [properties] Properties to set
+                 */
+                function Http(properties) {
+                    this.rules = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * Http rules.
+                 * @member {Array.<google.api.IHttpRule>} rules
+                 * @memberof google.api.Http
+                 * @instance
+                 */
+                Http.prototype.rules = $util.emptyArray;
+    
+                /**
+                 * Http fullyDecodeReservedExpansion.
+                 * @member {boolean} fullyDecodeReservedExpansion
+                 * @memberof google.api.Http
+                 * @instance
+                 */
+                Http.prototype.fullyDecodeReservedExpansion = false;
+    
+                /**
+                 * Creates a new Http instance using the specified properties.
+                 * @function create
+                 * @memberof google.api.Http
+                 * @static
+                 * @param {google.api.IHttp=} [properties] Properties to set
+                 * @returns {google.api.Http} Http instance
+                 */
+                Http.create = function create(properties) {
+                    return new Http(properties);
+                };
+    
+                /**
+                 * Encodes the specified Http message. Does not implicitly {@link google.api.Http.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.api.Http
+                 * @static
+                 * @param {google.api.IHttp} message Http message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                Http.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.rules != null && message.rules.length)
+                        for (var i = 0; i < message.rules.length; ++i)
+                            $root.google.api.HttpRule.encode(message.rules[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                    if (message.fullyDecodeReservedExpansion != null && Object.hasOwnProperty.call(message, "fullyDecodeReservedExpansion"))
+                        writer.uint32(/* id 2, wireType 0 =*/16).bool(message.fullyDecodeReservedExpansion);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified Http message, length delimited. Does not implicitly {@link google.api.Http.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.api.Http
+                 * @static
+                 * @param {google.api.IHttp} message Http message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                Http.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a Http message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.api.Http
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.api.Http} Http
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                Http.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.Http();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                if (!(message.rules && message.rules.length))
+                                    message.rules = [];
+                                message.rules.push($root.google.api.HttpRule.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        case 2: {
+                                message.fullyDecodeReservedExpansion = reader.bool();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a Http message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.api.Http
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.api.Http} Http
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                Http.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a Http message.
+                 * @function verify
+                 * @memberof google.api.Http
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                Http.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.rules != null && message.hasOwnProperty("rules")) {
+                        if (!Array.isArray(message.rules))
+                            return "rules: array expected";
+                        for (var i = 0; i < message.rules.length; ++i) {
+                            var error = $root.google.api.HttpRule.verify(message.rules[i]);
+                            if (error)
+                                return "rules." + error;
+                        }
+                    }
+                    if (message.fullyDecodeReservedExpansion != null && message.hasOwnProperty("fullyDecodeReservedExpansion"))
+                        if (typeof message.fullyDecodeReservedExpansion !== "boolean")
+                            return "fullyDecodeReservedExpansion: boolean expected";
+                    return null;
+                };
+    
+                /**
+                 * Creates a Http message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.api.Http
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.api.Http} Http
+                 */
+                Http.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.api.Http)
+                        return object;
+                    var message = new $root.google.api.Http();
+                    if (object.rules) {
+                        if (!Array.isArray(object.rules))
+                            throw TypeError(".google.api.Http.rules: array expected");
+                        message.rules = [];
+                        for (var i = 0; i < object.rules.length; ++i) {
+                            if (typeof object.rules[i] !== "object")
+                                throw TypeError(".google.api.Http.rules: object expected");
+                            message.rules[i] = $root.google.api.HttpRule.fromObject(object.rules[i]);
+                        }
+                    }
+                    if (object.fullyDecodeReservedExpansion != null)
+                        message.fullyDecodeReservedExpansion = Boolean(object.fullyDecodeReservedExpansion);
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a Http message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.api.Http
+                 * @static
+                 * @param {google.api.Http} message Http
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                Http.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults)
+                        object.rules = [];
+                    if (options.defaults)
+                        object.fullyDecodeReservedExpansion = false;
+                    if (message.rules && message.rules.length) {
+                        object.rules = [];
+                        for (var j = 0; j < message.rules.length; ++j)
+                            object.rules[j] = $root.google.api.HttpRule.toObject(message.rules[j], options);
+                    }
+                    if (message.fullyDecodeReservedExpansion != null && message.hasOwnProperty("fullyDecodeReservedExpansion"))
+                        object.fullyDecodeReservedExpansion = message.fullyDecodeReservedExpansion;
+                    return object;
+                };
+    
+                /**
+                 * Converts this Http to JSON.
+                 * @function toJSON
+                 * @memberof google.api.Http
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                Http.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for Http
+                 * @function getTypeUrl
+                 * @memberof google.api.Http
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                Http.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.api.Http";
+                };
+    
+                return Http;
+            })();
+    
+            api.HttpRule = (function() {
+    
+                /**
+                 * Properties of a HttpRule.
+                 * @memberof google.api
+                 * @interface IHttpRule
+                 * @property {string|null} [selector] HttpRule selector
+                 * @property {string|null} [get] HttpRule get
+                 * @property {string|null} [put] HttpRule put
+                 * @property {string|null} [post] HttpRule post
+                 * @property {string|null} ["delete"] HttpRule delete
+                 * @property {string|null} [patch] HttpRule patch
+                 * @property {google.api.ICustomHttpPattern|null} [custom] HttpRule custom
+                 * @property {string|null} [body] HttpRule body
+                 * @property {string|null} [responseBody] HttpRule responseBody
+                 * @property {Array.<google.api.IHttpRule>|null} [additionalBindings] HttpRule additionalBindings
+                 */
+    
+                /**
+                 * Constructs a new HttpRule.
+                 * @memberof google.api
+                 * @classdesc Represents a HttpRule.
+                 * @implements IHttpRule
+                 * @constructor
+                 * @param {google.api.IHttpRule=} [properties] Properties to set
+                 */
+                function HttpRule(properties) {
+                    this.additionalBindings = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * HttpRule selector.
+                 * @member {string} selector
+                 * @memberof google.api.HttpRule
+                 * @instance
+                 */
+                HttpRule.prototype.selector = "";
+    
+                /**
+                 * HttpRule get.
+                 * @member {string|null|undefined} get
+                 * @memberof google.api.HttpRule
+                 * @instance
+                 */
+                HttpRule.prototype.get = null;
+    
+                /**
+                 * HttpRule put.
+                 * @member {string|null|undefined} put
+                 * @memberof google.api.HttpRule
+                 * @instance
+                 */
+                HttpRule.prototype.put = null;
+    
+                /**
+                 * HttpRule post.
+                 * @member {string|null|undefined} post
+                 * @memberof google.api.HttpRule
+                 * @instance
+                 */
+                HttpRule.prototype.post = null;
+    
+                /**
+                 * HttpRule delete.
+                 * @member {string|null|undefined} delete
+                 * @memberof google.api.HttpRule
+                 * @instance
+                 */
+                HttpRule.prototype["delete"] = null;
+    
+                /**
+                 * HttpRule patch.
+                 * @member {string|null|undefined} patch
+                 * @memberof google.api.HttpRule
+                 * @instance
+                 */
+                HttpRule.prototype.patch = null;
+    
+                /**
+                 * HttpRule custom.
+                 * @member {google.api.ICustomHttpPattern|null|undefined} custom
+                 * @memberof google.api.HttpRule
+                 * @instance
+                 */
+                HttpRule.prototype.custom = null;
+    
+                /**
+                 * HttpRule body.
+                 * @member {string} body
+                 * @memberof google.api.HttpRule
+                 * @instance
+                 */
+                HttpRule.prototype.body = "";
+    
+                /**
+                 * HttpRule responseBody.
+                 * @member {string} responseBody
+                 * @memberof google.api.HttpRule
+                 * @instance
+                 */
+                HttpRule.prototype.responseBody = "";
+    
+                /**
+                 * HttpRule additionalBindings.
+                 * @member {Array.<google.api.IHttpRule>} additionalBindings
+                 * @memberof google.api.HttpRule
+                 * @instance
+                 */
+                HttpRule.prototype.additionalBindings = $util.emptyArray;
+    
+                // OneOf field names bound to virtual getters and setters
+                var $oneOfFields;
+    
+                /**
+                 * HttpRule pattern.
+                 * @member {"get"|"put"|"post"|"delete"|"patch"|"custom"|undefined} pattern
+                 * @memberof google.api.HttpRule
+                 * @instance
+                 */
+                Object.defineProperty(HttpRule.prototype, "pattern", {
+                    get: $util.oneOfGetter($oneOfFields = ["get", "put", "post", "delete", "patch", "custom"]),
+                    set: $util.oneOfSetter($oneOfFields)
+                });
+    
+                /**
+                 * Creates a new HttpRule instance using the specified properties.
+                 * @function create
+                 * @memberof google.api.HttpRule
+                 * @static
+                 * @param {google.api.IHttpRule=} [properties] Properties to set
+                 * @returns {google.api.HttpRule} HttpRule instance
+                 */
+                HttpRule.create = function create(properties) {
+                    return new HttpRule(properties);
+                };
+    
+                /**
+                 * Encodes the specified HttpRule message. Does not implicitly {@link google.api.HttpRule.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.api.HttpRule
+                 * @static
+                 * @param {google.api.IHttpRule} message HttpRule message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                HttpRule.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.selector != null && Object.hasOwnProperty.call(message, "selector"))
+                        writer.uint32(/* id 1, wireType 2 =*/10).string(message.selector);
+                    if (message.get != null && Object.hasOwnProperty.call(message, "get"))
+                        writer.uint32(/* id 2, wireType 2 =*/18).string(message.get);
+                    if (message.put != null && Object.hasOwnProperty.call(message, "put"))
+                        writer.uint32(/* id 3, wireType 2 =*/26).string(message.put);
+                    if (message.post != null && Object.hasOwnProperty.call(message, "post"))
+                        writer.uint32(/* id 4, wireType 2 =*/34).string(message.post);
+                    if (message["delete"] != null && Object.hasOwnProperty.call(message, "delete"))
+                        writer.uint32(/* id 5, wireType 2 =*/42).string(message["delete"]);
+                    if (message.patch != null && Object.hasOwnProperty.call(message, "patch"))
+                        writer.uint32(/* id 6, wireType 2 =*/50).string(message.patch);
+                    if (message.body != null && Object.hasOwnProperty.call(message, "body"))
+                        writer.uint32(/* id 7, wireType 2 =*/58).string(message.body);
+                    if (message.custom != null && Object.hasOwnProperty.call(message, "custom"))
+                        $root.google.api.CustomHttpPattern.encode(message.custom, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();
+                    if (message.additionalBindings != null && message.additionalBindings.length)
+                        for (var i = 0; i < message.additionalBindings.length; ++i)
+                            $root.google.api.HttpRule.encode(message.additionalBindings[i], writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();
+                    if (message.responseBody != null && Object.hasOwnProperty.call(message, "responseBody"))
+                        writer.uint32(/* id 12, wireType 2 =*/98).string(message.responseBody);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified HttpRule message, length delimited. Does not implicitly {@link google.api.HttpRule.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.api.HttpRule
+                 * @static
+                 * @param {google.api.IHttpRule} message HttpRule message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                HttpRule.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a HttpRule message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.api.HttpRule
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.api.HttpRule} HttpRule
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                HttpRule.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.HttpRule();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.selector = reader.string();
+                                break;
+                            }
+                        case 2: {
+                                message.get = reader.string();
+                                break;
+                            }
+                        case 3: {
+                                message.put = reader.string();
+                                break;
+                            }
+                        case 4: {
+                                message.post = reader.string();
+                                break;
+                            }
+                        case 5: {
+                                message["delete"] = reader.string();
+                                break;
+                            }
+                        case 6: {
+                                message.patch = reader.string();
+                                break;
+                            }
+                        case 8: {
+                                message.custom = $root.google.api.CustomHttpPattern.decode(reader, reader.uint32());
+                                break;
+                            }
+                        case 7: {
+                                message.body = reader.string();
+                                break;
+                            }
+                        case 12: {
+                                message.responseBody = reader.string();
+                                break;
+                            }
+                        case 11: {
+                                if (!(message.additionalBindings && message.additionalBindings.length))
+                                    message.additionalBindings = [];
+                                message.additionalBindings.push($root.google.api.HttpRule.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a HttpRule message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.api.HttpRule
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.api.HttpRule} HttpRule
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                HttpRule.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a HttpRule message.
+                 * @function verify
+                 * @memberof google.api.HttpRule
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                HttpRule.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    var properties = {};
+                    if (message.selector != null && message.hasOwnProperty("selector"))
+                        if (!$util.isString(message.selector))
+                            return "selector: string expected";
+                    if (message.get != null && message.hasOwnProperty("get")) {
+                        properties.pattern = 1;
+                        if (!$util.isString(message.get))
+                            return "get: string expected";
+                    }
+                    if (message.put != null && message.hasOwnProperty("put")) {
+                        if (properties.pattern === 1)
+                            return "pattern: multiple values";
+                        properties.pattern = 1;
+                        if (!$util.isString(message.put))
+                            return "put: string expected";
+                    }
+                    if (message.post != null && message.hasOwnProperty("post")) {
+                        if (properties.pattern === 1)
+                            return "pattern: multiple values";
+                        properties.pattern = 1;
+                        if (!$util.isString(message.post))
+                            return "post: string expected";
+                    }
+                    if (message["delete"] != null && message.hasOwnProperty("delete")) {
+                        if (properties.pattern === 1)
+                            return "pattern: multiple values";
+                        properties.pattern = 1;
+                        if (!$util.isString(message["delete"]))
+                            return "delete: string expected";
+                    }
+                    if (message.patch != null && message.hasOwnProperty("patch")) {
+                        if (properties.pattern === 1)
+                            return "pattern: multiple values";
+                        properties.pattern = 1;
+                        if (!$util.isString(message.patch))
+                            return "patch: string expected";
+                    }
+                    if (message.custom != null && message.hasOwnProperty("custom")) {
+                        if (properties.pattern === 1)
+                            return "pattern: multiple values";
+                        properties.pattern = 1;
+                        {
+                            var error = $root.google.api.CustomHttpPattern.verify(message.custom);
+                            if (error)
+                                return "custom." + error;
+                        }
+                    }
+                    if (message.body != null && message.hasOwnProperty("body"))
+                        if (!$util.isString(message.body))
+                            return "body: string expected";
+                    if (message.responseBody != null && message.hasOwnProperty("responseBody"))
+                        if (!$util.isString(message.responseBody))
+                            return "responseBody: string expected";
+                    if (message.additionalBindings != null && message.hasOwnProperty("additionalBindings")) {
+                        if (!Array.isArray(message.additionalBindings))
+                            return "additionalBindings: array expected";
+                        for (var i = 0; i < message.additionalBindings.length; ++i) {
+                            var error = $root.google.api.HttpRule.verify(message.additionalBindings[i]);
+                            if (error)
+                                return "additionalBindings." + error;
+                        }
+                    }
+                    return null;
+                };
+    
+                /**
+                 * Creates a HttpRule message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.api.HttpRule
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.api.HttpRule} HttpRule
+                 */
+                HttpRule.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.api.HttpRule)
+                        return object;
+                    var message = new $root.google.api.HttpRule();
+                    if (object.selector != null)
+                        message.selector = String(object.selector);
+                    if (object.get != null)
+                        message.get = String(object.get);
+                    if (object.put != null)
+                        message.put = String(object.put);
+                    if (object.post != null)
+                        message.post = String(object.post);
+                    if (object["delete"] != null)
+                        message["delete"] = String(object["delete"]);
+                    if (object.patch != null)
+                        message.patch = String(object.patch);
+                    if (object.custom != null) {
+                        if (typeof object.custom !== "object")
+                            throw TypeError(".google.api.HttpRule.custom: object expected");
+                        message.custom = $root.google.api.CustomHttpPattern.fromObject(object.custom);
+                    }
+                    if (object.body != null)
+                        message.body = String(object.body);
+                    if (object.responseBody != null)
+                        message.responseBody = String(object.responseBody);
+                    if (object.additionalBindings) {
+                        if (!Array.isArray(object.additionalBindings))
+                            throw TypeError(".google.api.HttpRule.additionalBindings: array expected");
+                        message.additionalBindings = [];
+                        for (var i = 0; i < object.additionalBindings.length; ++i) {
+                            if (typeof object.additionalBindings[i] !== "object")
+                                throw TypeError(".google.api.HttpRule.additionalBindings: object expected");
+                            message.additionalBindings[i] = $root.google.api.HttpRule.fromObject(object.additionalBindings[i]);
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a HttpRule message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.api.HttpRule
+                 * @static
+                 * @param {google.api.HttpRule} message HttpRule
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                HttpRule.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults)
+                        object.additionalBindings = [];
+                    if (options.defaults) {
+                        object.selector = "";
+                        object.body = "";
+                        object.responseBody = "";
+                    }
+                    if (message.selector != null && message.hasOwnProperty("selector"))
+                        object.selector = message.selector;
+                    if (message.get != null && message.hasOwnProperty("get")) {
+                        object.get = message.get;
+                        if (options.oneofs)
+                            object.pattern = "get";
+                    }
+                    if (message.put != null && message.hasOwnProperty("put")) {
+                        object.put = message.put;
+                        if (options.oneofs)
+                            object.pattern = "put";
+                    }
+                    if (message.post != null && message.hasOwnProperty("post")) {
+                        object.post = message.post;
+                        if (options.oneofs)
+                            object.pattern = "post";
+                    }
+                    if (message["delete"] != null && message.hasOwnProperty("delete")) {
+                        object["delete"] = message["delete"];
+                        if (options.oneofs)
+                            object.pattern = "delete";
+                    }
+                    if (message.patch != null && message.hasOwnProperty("patch")) {
+                        object.patch = message.patch;
+                        if (options.oneofs)
+                            object.pattern = "patch";
+                    }
+                    if (message.body != null && message.hasOwnProperty("body"))
+                        object.body = message.body;
+                    if (message.custom != null && message.hasOwnProperty("custom")) {
+                        object.custom = $root.google.api.CustomHttpPattern.toObject(message.custom, options);
+                        if (options.oneofs)
+                            object.pattern = "custom";
+                    }
+                    if (message.additionalBindings && message.additionalBindings.length) {
+                        object.additionalBindings = [];
+                        for (var j = 0; j < message.additionalBindings.length; ++j)
+                            object.additionalBindings[j] = $root.google.api.HttpRule.toObject(message.additionalBindings[j], options);
+                    }
+                    if (message.responseBody != null && message.hasOwnProperty("responseBody"))
+                        object.responseBody = message.responseBody;
+                    return object;
+                };
+    
+                /**
+                 * Converts this HttpRule to JSON.
+                 * @function toJSON
+                 * @memberof google.api.HttpRule
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                HttpRule.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for HttpRule
+                 * @function getTypeUrl
+                 * @memberof google.api.HttpRule
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                HttpRule.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.api.HttpRule";
+                };
+    
+                return HttpRule;
+            })();
+    
+            api.CustomHttpPattern = (function() {
+    
+                /**
+                 * Properties of a CustomHttpPattern.
+                 * @memberof google.api
+                 * @interface ICustomHttpPattern
+                 * @property {string|null} [kind] CustomHttpPattern kind
+                 * @property {string|null} [path] CustomHttpPattern path
+                 */
+    
+                /**
+                 * Constructs a new CustomHttpPattern.
+                 * @memberof google.api
+                 * @classdesc Represents a CustomHttpPattern.
+                 * @implements ICustomHttpPattern
+                 * @constructor
+                 * @param {google.api.ICustomHttpPattern=} [properties] Properties to set
+                 */
+                function CustomHttpPattern(properties) {
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * CustomHttpPattern kind.
+                 * @member {string} kind
+                 * @memberof google.api.CustomHttpPattern
+                 * @instance
+                 */
+                CustomHttpPattern.prototype.kind = "";
+    
+                /**
+                 * CustomHttpPattern path.
+                 * @member {string} path
+                 * @memberof google.api.CustomHttpPattern
+                 * @instance
+                 */
+                CustomHttpPattern.prototype.path = "";
+    
+                /**
+                 * Creates a new CustomHttpPattern instance using the specified properties.
+                 * @function create
+                 * @memberof google.api.CustomHttpPattern
+                 * @static
+                 * @param {google.api.ICustomHttpPattern=} [properties] Properties to set
+                 * @returns {google.api.CustomHttpPattern} CustomHttpPattern instance
+                 */
+                CustomHttpPattern.create = function create(properties) {
+                    return new CustomHttpPattern(properties);
+                };
+    
+                /**
+                 * Encodes the specified CustomHttpPattern message. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.api.CustomHttpPattern
+                 * @static
+                 * @param {google.api.ICustomHttpPattern} message CustomHttpPattern message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                CustomHttpPattern.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.kind != null && Object.hasOwnProperty.call(message, "kind"))
+                        writer.uint32(/* id 1, wireType 2 =*/10).string(message.kind);
+                    if (message.path != null && Object.hasOwnProperty.call(message, "path"))
+                        writer.uint32(/* id 2, wireType 2 =*/18).string(message.path);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified CustomHttpPattern message, length delimited. Does not implicitly {@link google.api.CustomHttpPattern.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.api.CustomHttpPattern
+                 * @static
+                 * @param {google.api.ICustomHttpPattern} message CustomHttpPattern message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                CustomHttpPattern.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a CustomHttpPattern message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.api.CustomHttpPattern
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.api.CustomHttpPattern} CustomHttpPattern
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                CustomHttpPattern.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.CustomHttpPattern();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.kind = reader.string();
+                                break;
+                            }
+                        case 2: {
+                                message.path = reader.string();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a CustomHttpPattern message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.api.CustomHttpPattern
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.api.CustomHttpPattern} CustomHttpPattern
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                CustomHttpPattern.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a CustomHttpPattern message.
+                 * @function verify
+                 * @memberof google.api.CustomHttpPattern
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                CustomHttpPattern.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.kind != null && message.hasOwnProperty("kind"))
+                        if (!$util.isString(message.kind))
+                            return "kind: string expected";
+                    if (message.path != null && message.hasOwnProperty("path"))
+                        if (!$util.isString(message.path))
+                            return "path: string expected";
+                    return null;
+                };
+    
+                /**
+                 * Creates a CustomHttpPattern message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.api.CustomHttpPattern
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.api.CustomHttpPattern} CustomHttpPattern
+                 */
+                CustomHttpPattern.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.api.CustomHttpPattern)
+                        return object;
+                    var message = new $root.google.api.CustomHttpPattern();
+                    if (object.kind != null)
+                        message.kind = String(object.kind);
+                    if (object.path != null)
+                        message.path = String(object.path);
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a CustomHttpPattern message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.api.CustomHttpPattern
+                 * @static
+                 * @param {google.api.CustomHttpPattern} message CustomHttpPattern
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                CustomHttpPattern.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.defaults) {
+                        object.kind = "";
+                        object.path = "";
+                    }
+                    if (message.kind != null && message.hasOwnProperty("kind"))
+                        object.kind = message.kind;
+                    if (message.path != null && message.hasOwnProperty("path"))
+                        object.path = message.path;
+                    return object;
+                };
+    
+                /**
+                 * Converts this CustomHttpPattern to JSON.
+                 * @function toJSON
+                 * @memberof google.api.CustomHttpPattern
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                CustomHttpPattern.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for CustomHttpPattern
+                 * @function getTypeUrl
+                 * @memberof google.api.CustomHttpPattern
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                CustomHttpPattern.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.api.CustomHttpPattern";
+                };
+    
+                return CustomHttpPattern;
+            })();
+    
+            api.CommonLanguageSettings = (function() {
+    
+                /**
+                 * Properties of a CommonLanguageSettings.
+                 * @memberof google.api
+                 * @interface ICommonLanguageSettings
+                 * @property {string|null} [referenceDocsUri] CommonLanguageSettings referenceDocsUri
+                 * @property {Array.<google.api.ClientLibraryDestination>|null} [destinations] CommonLanguageSettings destinations
+                 */
+    
+                /**
+                 * Constructs a new CommonLanguageSettings.
+                 * @memberof google.api
+                 * @classdesc Represents a CommonLanguageSettings.
+                 * @implements ICommonLanguageSettings
+                 * @constructor
+                 * @param {google.api.ICommonLanguageSettings=} [properties] Properties to set
+                 */
+                function CommonLanguageSettings(properties) {
+                    this.destinations = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * CommonLanguageSettings referenceDocsUri.
+                 * @member {string} referenceDocsUri
+                 * @memberof google.api.CommonLanguageSettings
+                 * @instance
+                 */
+                CommonLanguageSettings.prototype.referenceDocsUri = "";
+    
+                /**
+                 * CommonLanguageSettings destinations.
+                 * @member {Array.<google.api.ClientLibraryDestination>} destinations
+                 * @memberof google.api.CommonLanguageSettings
+                 * @instance
+                 */
+                CommonLanguageSettings.prototype.destinations = $util.emptyArray;
+    
+                /**
+                 * Creates a new CommonLanguageSettings instance using the specified properties.
+                 * @function create
+                 * @memberof google.api.CommonLanguageSettings
+                 * @static
+                 * @param {google.api.ICommonLanguageSettings=} [properties] Properties to set
+                 * @returns {google.api.CommonLanguageSettings} CommonLanguageSettings instance
+                 */
+                CommonLanguageSettings.create = function create(properties) {
+                    return new CommonLanguageSettings(properties);
+                };
+    
+                /**
+                 * Encodes the specified CommonLanguageSettings message. Does not implicitly {@link google.api.CommonLanguageSettings.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.api.CommonLanguageSettings
+                 * @static
+                 * @param {google.api.ICommonLanguageSettings} message CommonLanguageSettings message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                CommonLanguageSettings.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.referenceDocsUri != null && Object.hasOwnProperty.call(message, "referenceDocsUri"))
+                        writer.uint32(/* id 1, wireType 2 =*/10).string(message.referenceDocsUri);
+                    if (message.destinations != null && message.destinations.length) {
+                        writer.uint32(/* id 2, wireType 2 =*/18).fork();
+                        for (var i = 0; i < message.destinations.length; ++i)
+                            writer.int32(message.destinations[i]);
+                        writer.ldelim();
+                    }
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified CommonLanguageSettings message, length delimited. Does not implicitly {@link google.api.CommonLanguageSettings.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.api.CommonLanguageSettings
+                 * @static
+                 * @param {google.api.ICommonLanguageSettings} message CommonLanguageSettings message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                CommonLanguageSettings.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a CommonLanguageSettings message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.api.CommonLanguageSettings
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.api.CommonLanguageSettings} CommonLanguageSettings
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                CommonLanguageSettings.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.CommonLanguageSettings();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.referenceDocsUri = reader.string();
+                                break;
+                            }
+                        case 2: {
+                                if (!(message.destinations && message.destinations.length))
+                                    message.destinations = [];
+                                if ((tag & 7) === 2) {
+                                    var end2 = reader.uint32() + reader.pos;
+                                    while (reader.pos < end2)
+                                        message.destinations.push(reader.int32());
+                                } else
+                                    message.destinations.push(reader.int32());
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a CommonLanguageSettings message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.api.CommonLanguageSettings
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.api.CommonLanguageSettings} CommonLanguageSettings
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                CommonLanguageSettings.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a CommonLanguageSettings message.
+                 * @function verify
+                 * @memberof google.api.CommonLanguageSettings
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                CommonLanguageSettings.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.referenceDocsUri != null && message.hasOwnProperty("referenceDocsUri"))
+                        if (!$util.isString(message.referenceDocsUri))
+                            return "referenceDocsUri: string expected";
+                    if (message.destinations != null && message.hasOwnProperty("destinations")) {
+                        if (!Array.isArray(message.destinations))
+                            return "destinations: array expected";
+                        for (var i = 0; i < message.destinations.length; ++i)
+                            switch (message.destinations[i]) {
+                            default:
+                                return "destinations: enum value[] expected";
+                            case 0:
+                            case 10:
+                            case 20:
+                                break;
+                            }
+                    }
+                    return null;
+                };
+    
+                /**
+                 * Creates a CommonLanguageSettings message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.api.CommonLanguageSettings
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.api.CommonLanguageSettings} CommonLanguageSettings
+                 */
+                CommonLanguageSettings.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.api.CommonLanguageSettings)
+                        return object;
+                    var message = new $root.google.api.CommonLanguageSettings();
+                    if (object.referenceDocsUri != null)
+                        message.referenceDocsUri = String(object.referenceDocsUri);
+                    if (object.destinations) {
+                        if (!Array.isArray(object.destinations))
+                            throw TypeError(".google.api.CommonLanguageSettings.destinations: array expected");
+                        message.destinations = [];
+                        for (var i = 0; i < object.destinations.length; ++i)
+                            switch (object.destinations[i]) {
+                            default:
+                                if (typeof object.destinations[i] === "number") {
+                                    message.destinations[i] = object.destinations[i];
+                                    break;
+                                }
+                            case "CLIENT_LIBRARY_DESTINATION_UNSPECIFIED":
+                            case 0:
+                                message.destinations[i] = 0;
+                                break;
+                            case "GITHUB":
+                            case 10:
+                                message.destinations[i] = 10;
+                                break;
+                            case "PACKAGE_MANAGER":
+                            case 20:
+                                message.destinations[i] = 20;
+                                break;
+                            }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a CommonLanguageSettings message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.api.CommonLanguageSettings
+                 * @static
+                 * @param {google.api.CommonLanguageSettings} message CommonLanguageSettings
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                CommonLanguageSettings.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults)
+                        object.destinations = [];
+                    if (options.defaults)
+                        object.referenceDocsUri = "";
+                    if (message.referenceDocsUri != null && message.hasOwnProperty("referenceDocsUri"))
+                        object.referenceDocsUri = message.referenceDocsUri;
+                    if (message.destinations && message.destinations.length) {
+                        object.destinations = [];
+                        for (var j = 0; j < message.destinations.length; ++j)
+                            object.destinations[j] = options.enums === String ? $root.google.api.ClientLibraryDestination[message.destinations[j]] === undefined ? message.destinations[j] : $root.google.api.ClientLibraryDestination[message.destinations[j]] : message.destinations[j];
+                    }
+                    return object;
+                };
+    
+                /**
+                 * Converts this CommonLanguageSettings to JSON.
+                 * @function toJSON
+                 * @memberof google.api.CommonLanguageSettings
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                CommonLanguageSettings.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for CommonLanguageSettings
+                 * @function getTypeUrl
+                 * @memberof google.api.CommonLanguageSettings
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                CommonLanguageSettings.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.api.CommonLanguageSettings";
+                };
+    
+                return CommonLanguageSettings;
+            })();
+    
+            api.ClientLibrarySettings = (function() {
+    
+                /**
+                 * Properties of a ClientLibrarySettings.
+                 * @memberof google.api
+                 * @interface IClientLibrarySettings
+                 * @property {string|null} [version] ClientLibrarySettings version
+                 * @property {google.api.LaunchStage|null} [launchStage] ClientLibrarySettings launchStage
+                 * @property {boolean|null} [restNumericEnums] ClientLibrarySettings restNumericEnums
+                 * @property {google.api.IJavaSettings|null} [javaSettings] ClientLibrarySettings javaSettings
+                 * @property {google.api.ICppSettings|null} [cppSettings] ClientLibrarySettings cppSettings
+                 * @property {google.api.IPhpSettings|null} [phpSettings] ClientLibrarySettings phpSettings
+                 * @property {google.api.IPythonSettings|null} [pythonSettings] ClientLibrarySettings pythonSettings
+                 * @property {google.api.INodeSettings|null} [nodeSettings] ClientLibrarySettings nodeSettings
+                 * @property {google.api.IDotnetSettings|null} [dotnetSettings] ClientLibrarySettings dotnetSettings
+                 * @property {google.api.IRubySettings|null} [rubySettings] ClientLibrarySettings rubySettings
+                 * @property {google.api.IGoSettings|null} [goSettings] ClientLibrarySettings goSettings
+                 */
+    
+                /**
+                 * Constructs a new ClientLibrarySettings.
+                 * @memberof google.api
+                 * @classdesc Represents a ClientLibrarySettings.
+                 * @implements IClientLibrarySettings
+                 * @constructor
+                 * @param {google.api.IClientLibrarySettings=} [properties] Properties to set
+                 */
+                function ClientLibrarySettings(properties) {
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * ClientLibrarySettings version.
+                 * @member {string} version
+                 * @memberof google.api.ClientLibrarySettings
+                 * @instance
+                 */
+                ClientLibrarySettings.prototype.version = "";
+    
+                /**
+                 * ClientLibrarySettings launchStage.
+                 * @member {google.api.LaunchStage} launchStage
+                 * @memberof google.api.ClientLibrarySettings
+                 * @instance
+                 */
+                ClientLibrarySettings.prototype.launchStage = 0;
+    
+                /**
+                 * ClientLibrarySettings restNumericEnums.
+                 * @member {boolean} restNumericEnums
+                 * @memberof google.api.ClientLibrarySettings
+                 * @instance
+                 */
+                ClientLibrarySettings.prototype.restNumericEnums = false;
+    
+                /**
+                 * ClientLibrarySettings javaSettings.
+                 * @member {google.api.IJavaSettings|null|undefined} javaSettings
+                 * @memberof google.api.ClientLibrarySettings
+                 * @instance
+                 */
+                ClientLibrarySettings.prototype.javaSettings = null;
+    
+                /**
+                 * ClientLibrarySettings cppSettings.
+                 * @member {google.api.ICppSettings|null|undefined} cppSettings
+                 * @memberof google.api.ClientLibrarySettings
+                 * @instance
+                 */
+                ClientLibrarySettings.prototype.cppSettings = null;
+    
+                /**
+                 * ClientLibrarySettings phpSettings.
+                 * @member {google.api.IPhpSettings|null|undefined} phpSettings
+                 * @memberof google.api.ClientLibrarySettings
+                 * @instance
+                 */
+                ClientLibrarySettings.prototype.phpSettings = null;
+    
+                /**
+                 * ClientLibrarySettings pythonSettings.
+                 * @member {google.api.IPythonSettings|null|undefined} pythonSettings
+                 * @memberof google.api.ClientLibrarySettings
+                 * @instance
+                 */
+                ClientLibrarySettings.prototype.pythonSettings = null;
+    
+                /**
+                 * ClientLibrarySettings nodeSettings.
+                 * @member {google.api.INodeSettings|null|undefined} nodeSettings
+                 * @memberof google.api.ClientLibrarySettings
+                 * @instance
+                 */
+                ClientLibrarySettings.prototype.nodeSettings = null;
+    
+                /**
+                 * ClientLibrarySettings dotnetSettings.
+                 * @member {google.api.IDotnetSettings|null|undefined} dotnetSettings
+                 * @memberof google.api.ClientLibrarySettings
+                 * @instance
+                 */
+                ClientLibrarySettings.prototype.dotnetSettings = null;
+    
+                /**
+                 * ClientLibrarySettings rubySettings.
+                 * @member {google.api.IRubySettings|null|undefined} rubySettings
+                 * @memberof google.api.ClientLibrarySettings
+                 * @instance
+                 */
+                ClientLibrarySettings.prototype.rubySettings = null;
+    
+                /**
+                 * ClientLibrarySettings goSettings.
+                 * @member {google.api.IGoSettings|null|undefined} goSettings
+                 * @memberof google.api.ClientLibrarySettings
+                 * @instance
+                 */
+                ClientLibrarySettings.prototype.goSettings = null;
+    
+                /**
+                 * Creates a new ClientLibrarySettings instance using the specified properties.
+                 * @function create
+                 * @memberof google.api.ClientLibrarySettings
+                 * @static
+                 * @param {google.api.IClientLibrarySettings=} [properties] Properties to set
+                 * @returns {google.api.ClientLibrarySettings} ClientLibrarySettings instance
+                 */
+                ClientLibrarySettings.create = function create(properties) {
+                    return new ClientLibrarySettings(properties);
+                };
+    
+                /**
+                 * Encodes the specified ClientLibrarySettings message. Does not implicitly {@link google.api.ClientLibrarySettings.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.api.ClientLibrarySettings
+                 * @static
+                 * @param {google.api.IClientLibrarySettings} message ClientLibrarySettings message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                ClientLibrarySettings.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.version != null && Object.hasOwnProperty.call(message, "version"))
+                        writer.uint32(/* id 1, wireType 2 =*/10).string(message.version);
+                    if (message.launchStage != null && Object.hasOwnProperty.call(message, "launchStage"))
+                        writer.uint32(/* id 2, wireType 0 =*/16).int32(message.launchStage);
+                    if (message.restNumericEnums != null && Object.hasOwnProperty.call(message, "restNumericEnums"))
+                        writer.uint32(/* id 3, wireType 0 =*/24).bool(message.restNumericEnums);
+                    if (message.javaSettings != null && Object.hasOwnProperty.call(message, "javaSettings"))
+                        $root.google.api.JavaSettings.encode(message.javaSettings, writer.uint32(/* id 21, wireType 2 =*/170).fork()).ldelim();
+                    if (message.cppSettings != null && Object.hasOwnProperty.call(message, "cppSettings"))
+                        $root.google.api.CppSettings.encode(message.cppSettings, writer.uint32(/* id 22, wireType 2 =*/178).fork()).ldelim();
+                    if (message.phpSettings != null && Object.hasOwnProperty.call(message, "phpSettings"))
+                        $root.google.api.PhpSettings.encode(message.phpSettings, writer.uint32(/* id 23, wireType 2 =*/186).fork()).ldelim();
+                    if (message.pythonSettings != null && Object.hasOwnProperty.call(message, "pythonSettings"))
+                        $root.google.api.PythonSettings.encode(message.pythonSettings, writer.uint32(/* id 24, wireType 2 =*/194).fork()).ldelim();
+                    if (message.nodeSettings != null && Object.hasOwnProperty.call(message, "nodeSettings"))
+                        $root.google.api.NodeSettings.encode(message.nodeSettings, writer.uint32(/* id 25, wireType 2 =*/202).fork()).ldelim();
+                    if (message.dotnetSettings != null && Object.hasOwnProperty.call(message, "dotnetSettings"))
+                        $root.google.api.DotnetSettings.encode(message.dotnetSettings, writer.uint32(/* id 26, wireType 2 =*/210).fork()).ldelim();
+                    if (message.rubySettings != null && Object.hasOwnProperty.call(message, "rubySettings"))
+                        $root.google.api.RubySettings.encode(message.rubySettings, writer.uint32(/* id 27, wireType 2 =*/218).fork()).ldelim();
+                    if (message.goSettings != null && Object.hasOwnProperty.call(message, "goSettings"))
+                        $root.google.api.GoSettings.encode(message.goSettings, writer.uint32(/* id 28, wireType 2 =*/226).fork()).ldelim();
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified ClientLibrarySettings message, length delimited. Does not implicitly {@link google.api.ClientLibrarySettings.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.api.ClientLibrarySettings
+                 * @static
+                 * @param {google.api.IClientLibrarySettings} message ClientLibrarySettings message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                ClientLibrarySettings.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a ClientLibrarySettings message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.api.ClientLibrarySettings
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.api.ClientLibrarySettings} ClientLibrarySettings
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                ClientLibrarySettings.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.ClientLibrarySettings();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.version = reader.string();
+                                break;
+                            }
+                        case 2: {
+                                message.launchStage = reader.int32();
+                                break;
+                            }
+                        case 3: {
+                                message.restNumericEnums = reader.bool();
+                                break;
+                            }
+                        case 21: {
+                                message.javaSettings = $root.google.api.JavaSettings.decode(reader, reader.uint32());
+                                break;
+                            }
+                        case 22: {
+                                message.cppSettings = $root.google.api.CppSettings.decode(reader, reader.uint32());
+                                break;
+                            }
+                        case 23: {
+                                message.phpSettings = $root.google.api.PhpSettings.decode(reader, reader.uint32());
+                                break;
+                            }
+                        case 24: {
+                                message.pythonSettings = $root.google.api.PythonSettings.decode(reader, reader.uint32());
+                                break;
+                            }
+                        case 25: {
+                                message.nodeSettings = $root.google.api.NodeSettings.decode(reader, reader.uint32());
+                                break;
+                            }
+                        case 26: {
+                                message.dotnetSettings = $root.google.api.DotnetSettings.decode(reader, reader.uint32());
+                                break;
+                            }
+                        case 27: {
+                                message.rubySettings = $root.google.api.RubySettings.decode(reader, reader.uint32());
+                                break;
+                            }
+                        case 28: {
+                                message.goSettings = $root.google.api.GoSettings.decode(reader, reader.uint32());
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a ClientLibrarySettings message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.api.ClientLibrarySettings
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.api.ClientLibrarySettings} ClientLibrarySettings
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                ClientLibrarySettings.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a ClientLibrarySettings message.
+                 * @function verify
+                 * @memberof google.api.ClientLibrarySettings
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                ClientLibrarySettings.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.version != null && message.hasOwnProperty("version"))
+                        if (!$util.isString(message.version))
+                            return "version: string expected";
+                    if (message.launchStage != null && message.hasOwnProperty("launchStage"))
+                        switch (message.launchStage) {
+                        default:
+                            return "launchStage: enum value expected";
+                        case 0:
+                        case 6:
+                        case 7:
+                        case 1:
+                        case 2:
+                        case 3:
+                        case 4:
+                        case 5:
+                            break;
+                        }
+                    if (message.restNumericEnums != null && message.hasOwnProperty("restNumericEnums"))
+                        if (typeof message.restNumericEnums !== "boolean")
+                            return "restNumericEnums: boolean expected";
+                    if (message.javaSettings != null && message.hasOwnProperty("javaSettings")) {
+                        var error = $root.google.api.JavaSettings.verify(message.javaSettings);
+                        if (error)
+                            return "javaSettings." + error;
+                    }
+                    if (message.cppSettings != null && message.hasOwnProperty("cppSettings")) {
+                        var error = $root.google.api.CppSettings.verify(message.cppSettings);
+                        if (error)
+                            return "cppSettings." + error;
+                    }
+                    if (message.phpSettings != null && message.hasOwnProperty("phpSettings")) {
+                        var error = $root.google.api.PhpSettings.verify(message.phpSettings);
+                        if (error)
+                            return "phpSettings." + error;
+                    }
+                    if (message.pythonSettings != null && message.hasOwnProperty("pythonSettings")) {
+                        var error = $root.google.api.PythonSettings.verify(message.pythonSettings);
+                        if (error)
+                            return "pythonSettings." + error;
+                    }
+                    if (message.nodeSettings != null && message.hasOwnProperty("nodeSettings")) {
+                        var error = $root.google.api.NodeSettings.verify(message.nodeSettings);
+                        if (error)
+                            return "nodeSettings." + error;
+                    }
+                    if (message.dotnetSettings != null && message.hasOwnProperty("dotnetSettings")) {
+                        var error = $root.google.api.DotnetSettings.verify(message.dotnetSettings);
+                        if (error)
+                            return "dotnetSettings." + error;
+                    }
+                    if (message.rubySettings != null && message.hasOwnProperty("rubySettings")) {
+                        var error = $root.google.api.RubySettings.verify(message.rubySettings);
+                        if (error)
+                            return "rubySettings." + error;
+                    }
+                    if (message.goSettings != null && message.hasOwnProperty("goSettings")) {
+                        var error = $root.google.api.GoSettings.verify(message.goSettings);
+                        if (error)
+                            return "goSettings." + error;
+                    }
+                    return null;
+                };
+    
+                /**
+                 * Creates a ClientLibrarySettings message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.api.ClientLibrarySettings
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.api.ClientLibrarySettings} ClientLibrarySettings
+                 */
+                ClientLibrarySettings.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.api.ClientLibrarySettings)
+                        return object;
+                    var message = new $root.google.api.ClientLibrarySettings();
+                    if (object.version != null)
+                        message.version = String(object.version);
+                    switch (object.launchStage) {
+                    default:
+                        if (typeof object.launchStage === "number") {
+                            message.launchStage = object.launchStage;
+                            break;
+                        }
+                        break;
+                    case "LAUNCH_STAGE_UNSPECIFIED":
+                    case 0:
+                        message.launchStage = 0;
+                        break;
+                    case "UNIMPLEMENTED":
+                    case 6:
+                        message.launchStage = 6;
+                        break;
+                    case "PRELAUNCH":
+                    case 7:
+                        message.launchStage = 7;
+                        break;
+                    case "EARLY_ACCESS":
+                    case 1:
+                        message.launchStage = 1;
+                        break;
+                    case "ALPHA":
+                    case 2:
+                        message.launchStage = 2;
+                        break;
+                    case "BETA":
+                    case 3:
+                        message.launchStage = 3;
+                        break;
+                    case "GA":
+                    case 4:
+                        message.launchStage = 4;
+                        break;
+                    case "DEPRECATED":
+                    case 5:
+                        message.launchStage = 5;
+                        break;
+                    }
+                    if (object.restNumericEnums != null)
+                        message.restNumericEnums = Boolean(object.restNumericEnums);
+                    if (object.javaSettings != null) {
+                        if (typeof object.javaSettings !== "object")
+                            throw TypeError(".google.api.ClientLibrarySettings.javaSettings: object expected");
+                        message.javaSettings = $root.google.api.JavaSettings.fromObject(object.javaSettings);
+                    }
+                    if (object.cppSettings != null) {
+                        if (typeof object.cppSettings !== "object")
+                            throw TypeError(".google.api.ClientLibrarySettings.cppSettings: object expected");
+                        message.cppSettings = $root.google.api.CppSettings.fromObject(object.cppSettings);
+                    }
+                    if (object.phpSettings != null) {
+                        if (typeof object.phpSettings !== "object")
+                            throw TypeError(".google.api.ClientLibrarySettings.phpSettings: object expected");
+                        message.phpSettings = $root.google.api.PhpSettings.fromObject(object.phpSettings);
+                    }
+                    if (object.pythonSettings != null) {
+                        if (typeof object.pythonSettings !== "object")
+                            throw TypeError(".google.api.ClientLibrarySettings.pythonSettings: object expected");
+                        message.pythonSettings = $root.google.api.PythonSettings.fromObject(object.pythonSettings);
+                    }
+                    if (object.nodeSettings != null) {
+                        if (typeof object.nodeSettings !== "object")
+                            throw TypeError(".google.api.ClientLibrarySettings.nodeSettings: object expected");
+                        message.nodeSettings = $root.google.api.NodeSettings.fromObject(object.nodeSettings);
+                    }
+                    if (object.dotnetSettings != null) {
+                        if (typeof object.dotnetSettings !== "object")
+                            throw TypeError(".google.api.ClientLibrarySettings.dotnetSettings: object expected");
+                        message.dotnetSettings = $root.google.api.DotnetSettings.fromObject(object.dotnetSettings);
+                    }
+                    if (object.rubySettings != null) {
+                        if (typeof object.rubySettings !== "object")
+                            throw TypeError(".google.api.ClientLibrarySettings.rubySettings: object expected");
+                        message.rubySettings = $root.google.api.RubySettings.fromObject(object.rubySettings);
+                    }
+                    if (object.goSettings != null) {
+                        if (typeof object.goSettings !== "object")
+                            throw TypeError(".google.api.ClientLibrarySettings.goSettings: object expected");
+                        message.goSettings = $root.google.api.GoSettings.fromObject(object.goSettings);
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a ClientLibrarySettings message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.api.ClientLibrarySettings
+                 * @static
+                 * @param {google.api.ClientLibrarySettings} message ClientLibrarySettings
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                ClientLibrarySettings.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.defaults) {
+                        object.version = "";
+                        object.launchStage = options.enums === String ? "LAUNCH_STAGE_UNSPECIFIED" : 0;
+                        object.restNumericEnums = false;
+                        object.javaSettings = null;
+                        object.cppSettings = null;
+                        object.phpSettings = null;
+                        object.pythonSettings = null;
+                        object.nodeSettings = null;
+                        object.dotnetSettings = null;
+                        object.rubySettings = null;
+                        object.goSettings = null;
+                    }
+                    if (message.version != null && message.hasOwnProperty("version"))
+                        object.version = message.version;
+                    if (message.launchStage != null && message.hasOwnProperty("launchStage"))
+                        object.launchStage = options.enums === String ? $root.google.api.LaunchStage[message.launchStage] === undefined ? message.launchStage : $root.google.api.LaunchStage[message.launchStage] : message.launchStage;
+                    if (message.restNumericEnums != null && message.hasOwnProperty("restNumericEnums"))
+                        object.restNumericEnums = message.restNumericEnums;
+                    if (message.javaSettings != null && message.hasOwnProperty("javaSettings"))
+                        object.javaSettings = $root.google.api.JavaSettings.toObject(message.javaSettings, options);
+                    if (message.cppSettings != null && message.hasOwnProperty("cppSettings"))
+                        object.cppSettings = $root.google.api.CppSettings.toObject(message.cppSettings, options);
+                    if (message.phpSettings != null && message.hasOwnProperty("phpSettings"))
+                        object.phpSettings = $root.google.api.PhpSettings.toObject(message.phpSettings, options);
+                    if (message.pythonSettings != null && message.hasOwnProperty("pythonSettings"))
+                        object.pythonSettings = $root.google.api.PythonSettings.toObject(message.pythonSettings, options);
+                    if (message.nodeSettings != null && message.hasOwnProperty("nodeSettings"))
+                        object.nodeSettings = $root.google.api.NodeSettings.toObject(message.nodeSettings, options);
+                    if (message.dotnetSettings != null && message.hasOwnProperty("dotnetSettings"))
+                        object.dotnetSettings = $root.google.api.DotnetSettings.toObject(message.dotnetSettings, options);
+                    if (message.rubySettings != null && message.hasOwnProperty("rubySettings"))
+                        object.rubySettings = $root.google.api.RubySettings.toObject(message.rubySettings, options);
+                    if (message.goSettings != null && message.hasOwnProperty("goSettings"))
+                        object.goSettings = $root.google.api.GoSettings.toObject(message.goSettings, options);
+                    return object;
+                };
+    
+                /**
+                 * Converts this ClientLibrarySettings to JSON.
+                 * @function toJSON
+                 * @memberof google.api.ClientLibrarySettings
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                ClientLibrarySettings.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for ClientLibrarySettings
+                 * @function getTypeUrl
+                 * @memberof google.api.ClientLibrarySettings
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                ClientLibrarySettings.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.api.ClientLibrarySettings";
+                };
+    
+                return ClientLibrarySettings;
+            })();
+    
+            api.Publishing = (function() {
+    
+                /**
+                 * Properties of a Publishing.
+                 * @memberof google.api
+                 * @interface IPublishing
+                 * @property {Array.<google.api.IMethodSettings>|null} [methodSettings] Publishing methodSettings
+                 * @property {string|null} [newIssueUri] Publishing newIssueUri
+                 * @property {string|null} [documentationUri] Publishing documentationUri
+                 * @property {string|null} [apiShortName] Publishing apiShortName
+                 * @property {string|null} [githubLabel] Publishing githubLabel
+                 * @property {Array.<string>|null} [codeownerGithubTeams] Publishing codeownerGithubTeams
+                 * @property {string|null} [docTagPrefix] Publishing docTagPrefix
+                 * @property {google.api.ClientLibraryOrganization|null} [organization] Publishing organization
+                 * @property {Array.<google.api.IClientLibrarySettings>|null} [librarySettings] Publishing librarySettings
+                 * @property {string|null} [protoReferenceDocumentationUri] Publishing protoReferenceDocumentationUri
+                 * @property {string|null} [restReferenceDocumentationUri] Publishing restReferenceDocumentationUri
+                 */
+    
+                /**
+                 * Constructs a new Publishing.
+                 * @memberof google.api
+                 * @classdesc Represents a Publishing.
+                 * @implements IPublishing
+                 * @constructor
+                 * @param {google.api.IPublishing=} [properties] Properties to set
+                 */
+                function Publishing(properties) {
+                    this.methodSettings = [];
+                    this.codeownerGithubTeams = [];
+                    this.librarySettings = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * Publishing methodSettings.
+                 * @member {Array.<google.api.IMethodSettings>} methodSettings
+                 * @memberof google.api.Publishing
+                 * @instance
+                 */
+                Publishing.prototype.methodSettings = $util.emptyArray;
+    
+                /**
+                 * Publishing newIssueUri.
+                 * @member {string} newIssueUri
+                 * @memberof google.api.Publishing
+                 * @instance
+                 */
+                Publishing.prototype.newIssueUri = "";
+    
+                /**
+                 * Publishing documentationUri.
+                 * @member {string} documentationUri
+                 * @memberof google.api.Publishing
+                 * @instance
+                 */
+                Publishing.prototype.documentationUri = "";
+    
+                /**
+                 * Publishing apiShortName.
+                 * @member {string} apiShortName
+                 * @memberof google.api.Publishing
+                 * @instance
+                 */
+                Publishing.prototype.apiShortName = "";
+    
+                /**
+                 * Publishing githubLabel.
+                 * @member {string} githubLabel
+                 * @memberof google.api.Publishing
+                 * @instance
+                 */
+                Publishing.prototype.githubLabel = "";
+    
+                /**
+                 * Publishing codeownerGithubTeams.
+                 * @member {Array.<string>} codeownerGithubTeams
+                 * @memberof google.api.Publishing
+                 * @instance
+                 */
+                Publishing.prototype.codeownerGithubTeams = $util.emptyArray;
+    
+                /**
+                 * Publishing docTagPrefix.
+                 * @member {string} docTagPrefix
+                 * @memberof google.api.Publishing
+                 * @instance
+                 */
+                Publishing.prototype.docTagPrefix = "";
+    
+                /**
+                 * Publishing organization.
+                 * @member {google.api.ClientLibraryOrganization} organization
+                 * @memberof google.api.Publishing
+                 * @instance
+                 */
+                Publishing.prototype.organization = 0;
+    
+                /**
+                 * Publishing librarySettings.
+                 * @member {Array.<google.api.IClientLibrarySettings>} librarySettings
+                 * @memberof google.api.Publishing
+                 * @instance
+                 */
+                Publishing.prototype.librarySettings = $util.emptyArray;
+    
+                /**
+                 * Publishing protoReferenceDocumentationUri.
+                 * @member {string} protoReferenceDocumentationUri
+                 * @memberof google.api.Publishing
+                 * @instance
+                 */
+                Publishing.prototype.protoReferenceDocumentationUri = "";
+    
+                /**
+                 * Publishing restReferenceDocumentationUri.
+                 * @member {string} restReferenceDocumentationUri
+                 * @memberof google.api.Publishing
+                 * @instance
+                 */
+                Publishing.prototype.restReferenceDocumentationUri = "";
+    
+                /**
+                 * Creates a new Publishing instance using the specified properties.
+                 * @function create
+                 * @memberof google.api.Publishing
+                 * @static
+                 * @param {google.api.IPublishing=} [properties] Properties to set
+                 * @returns {google.api.Publishing} Publishing instance
+                 */
+                Publishing.create = function create(properties) {
+                    return new Publishing(properties);
+                };
+    
+                /**
+                 * Encodes the specified Publishing message. Does not implicitly {@link google.api.Publishing.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.api.Publishing
+                 * @static
+                 * @param {google.api.IPublishing} message Publishing message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                Publishing.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.methodSettings != null && message.methodSettings.length)
+                        for (var i = 0; i < message.methodSettings.length; ++i)
+                            $root.google.api.MethodSettings.encode(message.methodSettings[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+                    if (message.newIssueUri != null && Object.hasOwnProperty.call(message, "newIssueUri"))
+                        writer.uint32(/* id 101, wireType 2 =*/810).string(message.newIssueUri);
+                    if (message.documentationUri != null && Object.hasOwnProperty.call(message, "documentationUri"))
+                        writer.uint32(/* id 102, wireType 2 =*/818).string(message.documentationUri);
+                    if (message.apiShortName != null && Object.hasOwnProperty.call(message, "apiShortName"))
+                        writer.uint32(/* id 103, wireType 2 =*/826).string(message.apiShortName);
+                    if (message.githubLabel != null && Object.hasOwnProperty.call(message, "githubLabel"))
+                        writer.uint32(/* id 104, wireType 2 =*/834).string(message.githubLabel);
+                    if (message.codeownerGithubTeams != null && message.codeownerGithubTeams.length)
+                        for (var i = 0; i < message.codeownerGithubTeams.length; ++i)
+                            writer.uint32(/* id 105, wireType 2 =*/842).string(message.codeownerGithubTeams[i]);
+                    if (message.docTagPrefix != null && Object.hasOwnProperty.call(message, "docTagPrefix"))
+                        writer.uint32(/* id 106, wireType 2 =*/850).string(message.docTagPrefix);
+                    if (message.organization != null && Object.hasOwnProperty.call(message, "organization"))
+                        writer.uint32(/* id 107, wireType 0 =*/856).int32(message.organization);
+                    if (message.librarySettings != null && message.librarySettings.length)
+                        for (var i = 0; i < message.librarySettings.length; ++i)
+                            $root.google.api.ClientLibrarySettings.encode(message.librarySettings[i], writer.uint32(/* id 109, wireType 2 =*/874).fork()).ldelim();
+                    if (message.protoReferenceDocumentationUri != null && Object.hasOwnProperty.call(message, "protoReferenceDocumentationUri"))
+                        writer.uint32(/* id 110, wireType 2 =*/882).string(message.protoReferenceDocumentationUri);
+                    if (message.restReferenceDocumentationUri != null && Object.hasOwnProperty.call(message, "restReferenceDocumentationUri"))
+                        writer.uint32(/* id 111, wireType 2 =*/890).string(message.restReferenceDocumentationUri);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified Publishing message, length delimited. Does not implicitly {@link google.api.Publishing.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.api.Publishing
+                 * @static
+                 * @param {google.api.IPublishing} message Publishing message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                Publishing.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a Publishing message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.api.Publishing
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.api.Publishing} Publishing
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                Publishing.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.Publishing();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 2: {
+                                if (!(message.methodSettings && message.methodSettings.length))
+                                    message.methodSettings = [];
+                                message.methodSettings.push($root.google.api.MethodSettings.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        case 101: {
+                                message.newIssueUri = reader.string();
+                                break;
+                            }
+                        case 102: {
+                                message.documentationUri = reader.string();
+                                break;
+                            }
+                        case 103: {
+                                message.apiShortName = reader.string();
+                                break;
+                            }
+                        case 104: {
+                                message.githubLabel = reader.string();
+                                break;
+                            }
+                        case 105: {
+                                if (!(message.codeownerGithubTeams && message.codeownerGithubTeams.length))
+                                    message.codeownerGithubTeams = [];
+                                message.codeownerGithubTeams.push(reader.string());
+                                break;
+                            }
+                        case 106: {
+                                message.docTagPrefix = reader.string();
+                                break;
+                            }
+                        case 107: {
+                                message.organization = reader.int32();
+                                break;
+                            }
+                        case 109: {
+                                if (!(message.librarySettings && message.librarySettings.length))
+                                    message.librarySettings = [];
+                                message.librarySettings.push($root.google.api.ClientLibrarySettings.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        case 110: {
+                                message.protoReferenceDocumentationUri = reader.string();
+                                break;
+                            }
+                        case 111: {
+                                message.restReferenceDocumentationUri = reader.string();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a Publishing message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.api.Publishing
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.api.Publishing} Publishing
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                Publishing.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a Publishing message.
+                 * @function verify
+                 * @memberof google.api.Publishing
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                Publishing.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.methodSettings != null && message.hasOwnProperty("methodSettings")) {
+                        if (!Array.isArray(message.methodSettings))
+                            return "methodSettings: array expected";
+                        for (var i = 0; i < message.methodSettings.length; ++i) {
+                            var error = $root.google.api.MethodSettings.verify(message.methodSettings[i]);
+                            if (error)
+                                return "methodSettings." + error;
+                        }
+                    }
+                    if (message.newIssueUri != null && message.hasOwnProperty("newIssueUri"))
+                        if (!$util.isString(message.newIssueUri))
+                            return "newIssueUri: string expected";
+                    if (message.documentationUri != null && message.hasOwnProperty("documentationUri"))
+                        if (!$util.isString(message.documentationUri))
+                            return "documentationUri: string expected";
+                    if (message.apiShortName != null && message.hasOwnProperty("apiShortName"))
+                        if (!$util.isString(message.apiShortName))
+                            return "apiShortName: string expected";
+                    if (message.githubLabel != null && message.hasOwnProperty("githubLabel"))
+                        if (!$util.isString(message.githubLabel))
+                            return "githubLabel: string expected";
+                    if (message.codeownerGithubTeams != null && message.hasOwnProperty("codeownerGithubTeams")) {
+                        if (!Array.isArray(message.codeownerGithubTeams))
+                            return "codeownerGithubTeams: array expected";
+                        for (var i = 0; i < message.codeownerGithubTeams.length; ++i)
+                            if (!$util.isString(message.codeownerGithubTeams[i]))
+                                return "codeownerGithubTeams: string[] expected";
+                    }
+                    if (message.docTagPrefix != null && message.hasOwnProperty("docTagPrefix"))
+                        if (!$util.isString(message.docTagPrefix))
+                            return "docTagPrefix: string expected";
+                    if (message.organization != null && message.hasOwnProperty("organization"))
+                        switch (message.organization) {
+                        default:
+                            return "organization: enum value expected";
+                        case 0:
+                        case 1:
+                        case 2:
+                        case 3:
+                        case 4:
+                        case 5:
+                        case 6:
+                        case 7:
+                            break;
+                        }
+                    if (message.librarySettings != null && message.hasOwnProperty("librarySettings")) {
+                        if (!Array.isArray(message.librarySettings))
+                            return "librarySettings: array expected";
+                        for (var i = 0; i < message.librarySettings.length; ++i) {
+                            var error = $root.google.api.ClientLibrarySettings.verify(message.librarySettings[i]);
+                            if (error)
+                                return "librarySettings." + error;
+                        }
+                    }
+                    if (message.protoReferenceDocumentationUri != null && message.hasOwnProperty("protoReferenceDocumentationUri"))
+                        if (!$util.isString(message.protoReferenceDocumentationUri))
+                            return "protoReferenceDocumentationUri: string expected";
+                    if (message.restReferenceDocumentationUri != null && message.hasOwnProperty("restReferenceDocumentationUri"))
+                        if (!$util.isString(message.restReferenceDocumentationUri))
+                            return "restReferenceDocumentationUri: string expected";
+                    return null;
+                };
+    
+                /**
+                 * Creates a Publishing message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.api.Publishing
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.api.Publishing} Publishing
+                 */
+                Publishing.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.api.Publishing)
+                        return object;
+                    var message = new $root.google.api.Publishing();
+                    if (object.methodSettings) {
+                        if (!Array.isArray(object.methodSettings))
+                            throw TypeError(".google.api.Publishing.methodSettings: array expected");
+                        message.methodSettings = [];
+                        for (var i = 0; i < object.methodSettings.length; ++i) {
+                            if (typeof object.methodSettings[i] !== "object")
+                                throw TypeError(".google.api.Publishing.methodSettings: object expected");
+                            message.methodSettings[i] = $root.google.api.MethodSettings.fromObject(object.methodSettings[i]);
+                        }
+                    }
+                    if (object.newIssueUri != null)
+                        message.newIssueUri = String(object.newIssueUri);
+                    if (object.documentationUri != null)
+                        message.documentationUri = String(object.documentationUri);
+                    if (object.apiShortName != null)
+                        message.apiShortName = String(object.apiShortName);
+                    if (object.githubLabel != null)
+                        message.githubLabel = String(object.githubLabel);
+                    if (object.codeownerGithubTeams) {
+                        if (!Array.isArray(object.codeownerGithubTeams))
+                            throw TypeError(".google.api.Publishing.codeownerGithubTeams: array expected");
+                        message.codeownerGithubTeams = [];
+                        for (var i = 0; i < object.codeownerGithubTeams.length; ++i)
+                            message.codeownerGithubTeams[i] = String(object.codeownerGithubTeams[i]);
+                    }
+                    if (object.docTagPrefix != null)
+                        message.docTagPrefix = String(object.docTagPrefix);
+                    switch (object.organization) {
+                    default:
+                        if (typeof object.organization === "number") {
+                            message.organization = object.organization;
+                            break;
+                        }
+                        break;
+                    case "CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED":
+                    case 0:
+                        message.organization = 0;
+                        break;
+                    case "CLOUD":
+                    case 1:
+                        message.organization = 1;
+                        break;
+                    case "ADS":
+                    case 2:
+                        message.organization = 2;
+                        break;
+                    case "PHOTOS":
+                    case 3:
+                        message.organization = 3;
+                        break;
+                    case "STREET_VIEW":
+                    case 4:
+                        message.organization = 4;
+                        break;
+                    case "SHOPPING":
+                    case 5:
+                        message.organization = 5;
+                        break;
+                    case "GEO":
+                    case 6:
+                        message.organization = 6;
+                        break;
+                    case "GENERATIVE_AI":
+                    case 7:
+                        message.organization = 7;
+                        break;
+                    }
+                    if (object.librarySettings) {
+                        if (!Array.isArray(object.librarySettings))
+                            throw TypeError(".google.api.Publishing.librarySettings: array expected");
+                        message.librarySettings = [];
+                        for (var i = 0; i < object.librarySettings.length; ++i) {
+                            if (typeof object.librarySettings[i] !== "object")
+                                throw TypeError(".google.api.Publishing.librarySettings: object expected");
+                            message.librarySettings[i] = $root.google.api.ClientLibrarySettings.fromObject(object.librarySettings[i]);
+                        }
+                    }
+                    if (object.protoReferenceDocumentationUri != null)
+                        message.protoReferenceDocumentationUri = String(object.protoReferenceDocumentationUri);
+                    if (object.restReferenceDocumentationUri != null)
+                        message.restReferenceDocumentationUri = String(object.restReferenceDocumentationUri);
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a Publishing message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.api.Publishing
+                 * @static
+                 * @param {google.api.Publishing} message Publishing
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                Publishing.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults) {
+                        object.methodSettings = [];
+                        object.codeownerGithubTeams = [];
+                        object.librarySettings = [];
+                    }
+                    if (options.defaults) {
+                        object.newIssueUri = "";
+                        object.documentationUri = "";
+                        object.apiShortName = "";
+                        object.githubLabel = "";
+                        object.docTagPrefix = "";
+                        object.organization = options.enums === String ? "CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED" : 0;
+                        object.protoReferenceDocumentationUri = "";
+                        object.restReferenceDocumentationUri = "";
+                    }
+                    if (message.methodSettings && message.methodSettings.length) {
+                        object.methodSettings = [];
+                        for (var j = 0; j < message.methodSettings.length; ++j)
+                            object.methodSettings[j] = $root.google.api.MethodSettings.toObject(message.methodSettings[j], options);
+                    }
+                    if (message.newIssueUri != null && message.hasOwnProperty("newIssueUri"))
+                        object.newIssueUri = message.newIssueUri;
+                    if (message.documentationUri != null && message.hasOwnProperty("documentationUri"))
+                        object.documentationUri = message.documentationUri;
+                    if (message.apiShortName != null && message.hasOwnProperty("apiShortName"))
+                        object.apiShortName = message.apiShortName;
+                    if (message.githubLabel != null && message.hasOwnProperty("githubLabel"))
+                        object.githubLabel = message.githubLabel;
+                    if (message.codeownerGithubTeams && message.codeownerGithubTeams.length) {
+                        object.codeownerGithubTeams = [];
+                        for (var j = 0; j < message.codeownerGithubTeams.length; ++j)
+                            object.codeownerGithubTeams[j] = message.codeownerGithubTeams[j];
+                    }
+                    if (message.docTagPrefix != null && message.hasOwnProperty("docTagPrefix"))
+                        object.docTagPrefix = message.docTagPrefix;
+                    if (message.organization != null && message.hasOwnProperty("organization"))
+                        object.organization = options.enums === String ? $root.google.api.ClientLibraryOrganization[message.organization] === undefined ? message.organization : $root.google.api.ClientLibraryOrganization[message.organization] : message.organization;
+                    if (message.librarySettings && message.librarySettings.length) {
+                        object.librarySettings = [];
+                        for (var j = 0; j < message.librarySettings.length; ++j)
+                            object.librarySettings[j] = $root.google.api.ClientLibrarySettings.toObject(message.librarySettings[j], options);
+                    }
+                    if (message.protoReferenceDocumentationUri != null && message.hasOwnProperty("protoReferenceDocumentationUri"))
+                        object.protoReferenceDocumentationUri = message.protoReferenceDocumentationUri;
+                    if (message.restReferenceDocumentationUri != null && message.hasOwnProperty("restReferenceDocumentationUri"))
+                        object.restReferenceDocumentationUri = message.restReferenceDocumentationUri;
+                    return object;
+                };
+    
+                /**
+                 * Converts this Publishing to JSON.
+                 * @function toJSON
+                 * @memberof google.api.Publishing
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                Publishing.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for Publishing
+                 * @function getTypeUrl
+                 * @memberof google.api.Publishing
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                Publishing.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.api.Publishing";
+                };
+    
+                return Publishing;
+            })();
+    
+            api.JavaSettings = (function() {
+    
+                /**
+                 * Properties of a JavaSettings.
+                 * @memberof google.api
+                 * @interface IJavaSettings
+                 * @property {string|null} [libraryPackage] JavaSettings libraryPackage
+                 * @property {Object.<string,string>|null} [serviceClassNames] JavaSettings serviceClassNames
+                 * @property {google.api.ICommonLanguageSettings|null} [common] JavaSettings common
+                 */
+    
+                /**
+                 * Constructs a new JavaSettings.
+                 * @memberof google.api
+                 * @classdesc Represents a JavaSettings.
+                 * @implements IJavaSettings
+                 * @constructor
+                 * @param {google.api.IJavaSettings=} [properties] Properties to set
+                 */
+                function JavaSettings(properties) {
+                    this.serviceClassNames = {};
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * JavaSettings libraryPackage.
+                 * @member {string} libraryPackage
+                 * @memberof google.api.JavaSettings
+                 * @instance
+                 */
+                JavaSettings.prototype.libraryPackage = "";
+    
+                /**
+                 * JavaSettings serviceClassNames.
+                 * @member {Object.<string,string>} serviceClassNames
+                 * @memberof google.api.JavaSettings
+                 * @instance
+                 */
+                JavaSettings.prototype.serviceClassNames = $util.emptyObject;
+    
+                /**
+                 * JavaSettings common.
+                 * @member {google.api.ICommonLanguageSettings|null|undefined} common
+                 * @memberof google.api.JavaSettings
+                 * @instance
+                 */
+                JavaSettings.prototype.common = null;
+    
+                /**
+                 * Creates a new JavaSettings instance using the specified properties.
+                 * @function create
+                 * @memberof google.api.JavaSettings
+                 * @static
+                 * @param {google.api.IJavaSettings=} [properties] Properties to set
+                 * @returns {google.api.JavaSettings} JavaSettings instance
+                 */
+                JavaSettings.create = function create(properties) {
+                    return new JavaSettings(properties);
+                };
+    
+                /**
+                 * Encodes the specified JavaSettings message. Does not implicitly {@link google.api.JavaSettings.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.api.JavaSettings
+                 * @static
+                 * @param {google.api.IJavaSettings} message JavaSettings message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                JavaSettings.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.libraryPackage != null && Object.hasOwnProperty.call(message, "libraryPackage"))
+                        writer.uint32(/* id 1, wireType 2 =*/10).string(message.libraryPackage);
+                    if (message.serviceClassNames != null && Object.hasOwnProperty.call(message, "serviceClassNames"))
+                        for (var keys = Object.keys(message.serviceClassNames), i = 0; i < keys.length; ++i)
+                            writer.uint32(/* id 2, wireType 2 =*/18).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.serviceClassNames[keys[i]]).ldelim();
+                    if (message.common != null && Object.hasOwnProperty.call(message, "common"))
+                        $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified JavaSettings message, length delimited. Does not implicitly {@link google.api.JavaSettings.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.api.JavaSettings
+                 * @static
+                 * @param {google.api.IJavaSettings} message JavaSettings message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                JavaSettings.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a JavaSettings message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.api.JavaSettings
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.api.JavaSettings} JavaSettings
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                JavaSettings.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.JavaSettings(), key, value;
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.libraryPackage = reader.string();
+                                break;
+                            }
+                        case 2: {
+                                if (message.serviceClassNames === $util.emptyObject)
+                                    message.serviceClassNames = {};
+                                var end2 = reader.uint32() + reader.pos;
+                                key = "";
+                                value = "";
+                                while (reader.pos < end2) {
+                                    var tag2 = reader.uint32();
+                                    switch (tag2 >>> 3) {
+                                    case 1:
+                                        key = reader.string();
+                                        break;
+                                    case 2:
+                                        value = reader.string();
+                                        break;
+                                    default:
+                                        reader.skipType(tag2 & 7);
+                                        break;
+                                    }
+                                }
+                                message.serviceClassNames[key] = value;
+                                break;
+                            }
+                        case 3: {
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a JavaSettings message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.api.JavaSettings
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.api.JavaSettings} JavaSettings
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                JavaSettings.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a JavaSettings message.
+                 * @function verify
+                 * @memberof google.api.JavaSettings
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                JavaSettings.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.libraryPackage != null && message.hasOwnProperty("libraryPackage"))
+                        if (!$util.isString(message.libraryPackage))
+                            return "libraryPackage: string expected";
+                    if (message.serviceClassNames != null && message.hasOwnProperty("serviceClassNames")) {
+                        if (!$util.isObject(message.serviceClassNames))
+                            return "serviceClassNames: object expected";
+                        var key = Object.keys(message.serviceClassNames);
+                        for (var i = 0; i < key.length; ++i)
+                            if (!$util.isString(message.serviceClassNames[key[i]]))
+                                return "serviceClassNames: string{k:string} expected";
+                    }
+                    if (message.common != null && message.hasOwnProperty("common")) {
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        if (error)
+                            return "common." + error;
+                    }
+                    return null;
+                };
+    
+                /**
+                 * Creates a JavaSettings message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.api.JavaSettings
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.api.JavaSettings} JavaSettings
+                 */
+                JavaSettings.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.api.JavaSettings)
+                        return object;
+                    var message = new $root.google.api.JavaSettings();
+                    if (object.libraryPackage != null)
+                        message.libraryPackage = String(object.libraryPackage);
+                    if (object.serviceClassNames) {
+                        if (typeof object.serviceClassNames !== "object")
+                            throw TypeError(".google.api.JavaSettings.serviceClassNames: object expected");
+                        message.serviceClassNames = {};
+                        for (var keys = Object.keys(object.serviceClassNames), i = 0; i < keys.length; ++i)
+                            message.serviceClassNames[keys[i]] = String(object.serviceClassNames[keys[i]]);
+                    }
+                    if (object.common != null) {
+                        if (typeof object.common !== "object")
+                            throw TypeError(".google.api.JavaSettings.common: object expected");
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a JavaSettings message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.api.JavaSettings
+                 * @static
+                 * @param {google.api.JavaSettings} message JavaSettings
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                JavaSettings.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.objects || options.defaults)
+                        object.serviceClassNames = {};
+                    if (options.defaults) {
+                        object.libraryPackage = "";
+                        object.common = null;
+                    }
+                    if (message.libraryPackage != null && message.hasOwnProperty("libraryPackage"))
+                        object.libraryPackage = message.libraryPackage;
+                    var keys2;
+                    if (message.serviceClassNames && (keys2 = Object.keys(message.serviceClassNames)).length) {
+                        object.serviceClassNames = {};
+                        for (var j = 0; j < keys2.length; ++j)
+                            object.serviceClassNames[keys2[j]] = message.serviceClassNames[keys2[j]];
+                    }
+                    if (message.common != null && message.hasOwnProperty("common"))
+                        object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options);
+                    return object;
+                };
+    
+                /**
+                 * Converts this JavaSettings to JSON.
+                 * @function toJSON
+                 * @memberof google.api.JavaSettings
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                JavaSettings.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for JavaSettings
+                 * @function getTypeUrl
+                 * @memberof google.api.JavaSettings
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                JavaSettings.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.api.JavaSettings";
+                };
+    
+                return JavaSettings;
+            })();
+    
+            api.CppSettings = (function() {
+    
+                /**
+                 * Properties of a CppSettings.
+                 * @memberof google.api
+                 * @interface ICppSettings
+                 * @property {google.api.ICommonLanguageSettings|null} [common] CppSettings common
+                 */
+    
+                /**
+                 * Constructs a new CppSettings.
+                 * @memberof google.api
+                 * @classdesc Represents a CppSettings.
+                 * @implements ICppSettings
+                 * @constructor
+                 * @param {google.api.ICppSettings=} [properties] Properties to set
+                 */
+                function CppSettings(properties) {
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * CppSettings common.
+                 * @member {google.api.ICommonLanguageSettings|null|undefined} common
+                 * @memberof google.api.CppSettings
+                 * @instance
+                 */
+                CppSettings.prototype.common = null;
+    
+                /**
+                 * Creates a new CppSettings instance using the specified properties.
+                 * @function create
+                 * @memberof google.api.CppSettings
+                 * @static
+                 * @param {google.api.ICppSettings=} [properties] Properties to set
+                 * @returns {google.api.CppSettings} CppSettings instance
+                 */
+                CppSettings.create = function create(properties) {
+                    return new CppSettings(properties);
+                };
+    
+                /**
+                 * Encodes the specified CppSettings message. Does not implicitly {@link google.api.CppSettings.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.api.CppSettings
+                 * @static
+                 * @param {google.api.ICppSettings} message CppSettings message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                CppSettings.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.common != null && Object.hasOwnProperty.call(message, "common"))
+                        $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified CppSettings message, length delimited. Does not implicitly {@link google.api.CppSettings.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.api.CppSettings
+                 * @static
+                 * @param {google.api.ICppSettings} message CppSettings message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                CppSettings.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a CppSettings message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.api.CppSettings
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.api.CppSettings} CppSettings
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                CppSettings.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.CppSettings();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a CppSettings message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.api.CppSettings
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.api.CppSettings} CppSettings
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                CppSettings.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a CppSettings message.
+                 * @function verify
+                 * @memberof google.api.CppSettings
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                CppSettings.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.common != null && message.hasOwnProperty("common")) {
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        if (error)
+                            return "common." + error;
+                    }
+                    return null;
+                };
+    
+                /**
+                 * Creates a CppSettings message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.api.CppSettings
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.api.CppSettings} CppSettings
+                 */
+                CppSettings.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.api.CppSettings)
+                        return object;
+                    var message = new $root.google.api.CppSettings();
+                    if (object.common != null) {
+                        if (typeof object.common !== "object")
+                            throw TypeError(".google.api.CppSettings.common: object expected");
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a CppSettings message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.api.CppSettings
+                 * @static
+                 * @param {google.api.CppSettings} message CppSettings
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                CppSettings.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.defaults)
+                        object.common = null;
+                    if (message.common != null && message.hasOwnProperty("common"))
+                        object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options);
+                    return object;
+                };
+    
+                /**
+                 * Converts this CppSettings to JSON.
+                 * @function toJSON
+                 * @memberof google.api.CppSettings
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                CppSettings.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for CppSettings
+                 * @function getTypeUrl
+                 * @memberof google.api.CppSettings
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                CppSettings.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.api.CppSettings";
+                };
+    
+                return CppSettings;
+            })();
+    
+            api.PhpSettings = (function() {
+    
+                /**
+                 * Properties of a PhpSettings.
+                 * @memberof google.api
+                 * @interface IPhpSettings
+                 * @property {google.api.ICommonLanguageSettings|null} [common] PhpSettings common
+                 */
+    
+                /**
+                 * Constructs a new PhpSettings.
+                 * @memberof google.api
+                 * @classdesc Represents a PhpSettings.
+                 * @implements IPhpSettings
+                 * @constructor
+                 * @param {google.api.IPhpSettings=} [properties] Properties to set
+                 */
+                function PhpSettings(properties) {
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * PhpSettings common.
+                 * @member {google.api.ICommonLanguageSettings|null|undefined} common
+                 * @memberof google.api.PhpSettings
+                 * @instance
+                 */
+                PhpSettings.prototype.common = null;
+    
+                /**
+                 * Creates a new PhpSettings instance using the specified properties.
+                 * @function create
+                 * @memberof google.api.PhpSettings
+                 * @static
+                 * @param {google.api.IPhpSettings=} [properties] Properties to set
+                 * @returns {google.api.PhpSettings} PhpSettings instance
+                 */
+                PhpSettings.create = function create(properties) {
+                    return new PhpSettings(properties);
+                };
+    
+                /**
+                 * Encodes the specified PhpSettings message. Does not implicitly {@link google.api.PhpSettings.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.api.PhpSettings
+                 * @static
+                 * @param {google.api.IPhpSettings} message PhpSettings message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                PhpSettings.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.common != null && Object.hasOwnProperty.call(message, "common"))
+                        $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified PhpSettings message, length delimited. Does not implicitly {@link google.api.PhpSettings.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.api.PhpSettings
+                 * @static
+                 * @param {google.api.IPhpSettings} message PhpSettings message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                PhpSettings.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a PhpSettings message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.api.PhpSettings
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.api.PhpSettings} PhpSettings
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                PhpSettings.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.PhpSettings();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a PhpSettings message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.api.PhpSettings
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.api.PhpSettings} PhpSettings
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                PhpSettings.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a PhpSettings message.
+                 * @function verify
+                 * @memberof google.api.PhpSettings
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                PhpSettings.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.common != null && message.hasOwnProperty("common")) {
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        if (error)
+                            return "common." + error;
+                    }
+                    return null;
+                };
+    
+                /**
+                 * Creates a PhpSettings message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.api.PhpSettings
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.api.PhpSettings} PhpSettings
+                 */
+                PhpSettings.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.api.PhpSettings)
+                        return object;
+                    var message = new $root.google.api.PhpSettings();
+                    if (object.common != null) {
+                        if (typeof object.common !== "object")
+                            throw TypeError(".google.api.PhpSettings.common: object expected");
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a PhpSettings message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.api.PhpSettings
+                 * @static
+                 * @param {google.api.PhpSettings} message PhpSettings
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                PhpSettings.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.defaults)
+                        object.common = null;
+                    if (message.common != null && message.hasOwnProperty("common"))
+                        object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options);
+                    return object;
+                };
+    
+                /**
+                 * Converts this PhpSettings to JSON.
+                 * @function toJSON
+                 * @memberof google.api.PhpSettings
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                PhpSettings.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for PhpSettings
+                 * @function getTypeUrl
+                 * @memberof google.api.PhpSettings
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                PhpSettings.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.api.PhpSettings";
+                };
+    
+                return PhpSettings;
+            })();
+    
+            api.PythonSettings = (function() {
+    
+                /**
+                 * Properties of a PythonSettings.
+                 * @memberof google.api
+                 * @interface IPythonSettings
+                 * @property {google.api.ICommonLanguageSettings|null} [common] PythonSettings common
+                 */
+    
+                /**
+                 * Constructs a new PythonSettings.
+                 * @memberof google.api
+                 * @classdesc Represents a PythonSettings.
+                 * @implements IPythonSettings
+                 * @constructor
+                 * @param {google.api.IPythonSettings=} [properties] Properties to set
+                 */
+                function PythonSettings(properties) {
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * PythonSettings common.
+                 * @member {google.api.ICommonLanguageSettings|null|undefined} common
+                 * @memberof google.api.PythonSettings
+                 * @instance
+                 */
+                PythonSettings.prototype.common = null;
+    
+                /**
+                 * Creates a new PythonSettings instance using the specified properties.
+                 * @function create
+                 * @memberof google.api.PythonSettings
+                 * @static
+                 * @param {google.api.IPythonSettings=} [properties] Properties to set
+                 * @returns {google.api.PythonSettings} PythonSettings instance
+                 */
+                PythonSettings.create = function create(properties) {
+                    return new PythonSettings(properties);
+                };
+    
+                /**
+                 * Encodes the specified PythonSettings message. Does not implicitly {@link google.api.PythonSettings.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.api.PythonSettings
+                 * @static
+                 * @param {google.api.IPythonSettings} message PythonSettings message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                PythonSettings.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.common != null && Object.hasOwnProperty.call(message, "common"))
+                        $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified PythonSettings message, length delimited. Does not implicitly {@link google.api.PythonSettings.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.api.PythonSettings
+                 * @static
+                 * @param {google.api.IPythonSettings} message PythonSettings message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                PythonSettings.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a PythonSettings message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.api.PythonSettings
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.api.PythonSettings} PythonSettings
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                PythonSettings.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.PythonSettings();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a PythonSettings message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.api.PythonSettings
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.api.PythonSettings} PythonSettings
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                PythonSettings.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a PythonSettings message.
+                 * @function verify
+                 * @memberof google.api.PythonSettings
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                PythonSettings.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.common != null && message.hasOwnProperty("common")) {
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        if (error)
+                            return "common." + error;
+                    }
+                    return null;
+                };
+    
+                /**
+                 * Creates a PythonSettings message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.api.PythonSettings
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.api.PythonSettings} PythonSettings
+                 */
+                PythonSettings.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.api.PythonSettings)
+                        return object;
+                    var message = new $root.google.api.PythonSettings();
+                    if (object.common != null) {
+                        if (typeof object.common !== "object")
+                            throw TypeError(".google.api.PythonSettings.common: object expected");
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a PythonSettings message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.api.PythonSettings
+                 * @static
+                 * @param {google.api.PythonSettings} message PythonSettings
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                PythonSettings.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.defaults)
+                        object.common = null;
+                    if (message.common != null && message.hasOwnProperty("common"))
+                        object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options);
+                    return object;
+                };
+    
+                /**
+                 * Converts this PythonSettings to JSON.
+                 * @function toJSON
+                 * @memberof google.api.PythonSettings
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                PythonSettings.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for PythonSettings
+                 * @function getTypeUrl
+                 * @memberof google.api.PythonSettings
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                PythonSettings.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.api.PythonSettings";
+                };
+    
+                return PythonSettings;
+            })();
+    
+            api.NodeSettings = (function() {
+    
+                /**
+                 * Properties of a NodeSettings.
+                 * @memberof google.api
+                 * @interface INodeSettings
+                 * @property {google.api.ICommonLanguageSettings|null} [common] NodeSettings common
+                 */
+    
+                /**
+                 * Constructs a new NodeSettings.
+                 * @memberof google.api
+                 * @classdesc Represents a NodeSettings.
+                 * @implements INodeSettings
+                 * @constructor
+                 * @param {google.api.INodeSettings=} [properties] Properties to set
+                 */
+                function NodeSettings(properties) {
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * NodeSettings common.
+                 * @member {google.api.ICommonLanguageSettings|null|undefined} common
+                 * @memberof google.api.NodeSettings
+                 * @instance
+                 */
+                NodeSettings.prototype.common = null;
+    
+                /**
+                 * Creates a new NodeSettings instance using the specified properties.
+                 * @function create
+                 * @memberof google.api.NodeSettings
+                 * @static
+                 * @param {google.api.INodeSettings=} [properties] Properties to set
+                 * @returns {google.api.NodeSettings} NodeSettings instance
+                 */
+                NodeSettings.create = function create(properties) {
+                    return new NodeSettings(properties);
+                };
+    
+                /**
+                 * Encodes the specified NodeSettings message. Does not implicitly {@link google.api.NodeSettings.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.api.NodeSettings
+                 * @static
+                 * @param {google.api.INodeSettings} message NodeSettings message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                NodeSettings.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.common != null && Object.hasOwnProperty.call(message, "common"))
+                        $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified NodeSettings message, length delimited. Does not implicitly {@link google.api.NodeSettings.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.api.NodeSettings
+                 * @static
+                 * @param {google.api.INodeSettings} message NodeSettings message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                NodeSettings.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a NodeSettings message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.api.NodeSettings
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.api.NodeSettings} NodeSettings
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                NodeSettings.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.NodeSettings();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a NodeSettings message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.api.NodeSettings
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.api.NodeSettings} NodeSettings
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                NodeSettings.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a NodeSettings message.
+                 * @function verify
+                 * @memberof google.api.NodeSettings
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                NodeSettings.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.common != null && message.hasOwnProperty("common")) {
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        if (error)
+                            return "common." + error;
+                    }
+                    return null;
+                };
+    
+                /**
+                 * Creates a NodeSettings message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.api.NodeSettings
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.api.NodeSettings} NodeSettings
+                 */
+                NodeSettings.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.api.NodeSettings)
+                        return object;
+                    var message = new $root.google.api.NodeSettings();
+                    if (object.common != null) {
+                        if (typeof object.common !== "object")
+                            throw TypeError(".google.api.NodeSettings.common: object expected");
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a NodeSettings message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.api.NodeSettings
+                 * @static
+                 * @param {google.api.NodeSettings} message NodeSettings
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                NodeSettings.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.defaults)
+                        object.common = null;
+                    if (message.common != null && message.hasOwnProperty("common"))
+                        object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options);
+                    return object;
+                };
+    
+                /**
+                 * Converts this NodeSettings to JSON.
+                 * @function toJSON
+                 * @memberof google.api.NodeSettings
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                NodeSettings.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for NodeSettings
+                 * @function getTypeUrl
+                 * @memberof google.api.NodeSettings
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                NodeSettings.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.api.NodeSettings";
+                };
+    
+                return NodeSettings;
+            })();
+    
+            api.DotnetSettings = (function() {
+    
+                /**
+                 * Properties of a DotnetSettings.
+                 * @memberof google.api
+                 * @interface IDotnetSettings
+                 * @property {google.api.ICommonLanguageSettings|null} [common] DotnetSettings common
+                 * @property {Object.<string,string>|null} [renamedServices] DotnetSettings renamedServices
+                 * @property {Object.<string,string>|null} [renamedResources] DotnetSettings renamedResources
+                 * @property {Array.<string>|null} [ignoredResources] DotnetSettings ignoredResources
+                 * @property {Array.<string>|null} [forcedNamespaceAliases] DotnetSettings forcedNamespaceAliases
+                 * @property {Array.<string>|null} [handwrittenSignatures] DotnetSettings handwrittenSignatures
+                 */
+    
+                /**
+                 * Constructs a new DotnetSettings.
+                 * @memberof google.api
+                 * @classdesc Represents a DotnetSettings.
+                 * @implements IDotnetSettings
+                 * @constructor
+                 * @param {google.api.IDotnetSettings=} [properties] Properties to set
+                 */
+                function DotnetSettings(properties) {
+                    this.renamedServices = {};
+                    this.renamedResources = {};
+                    this.ignoredResources = [];
+                    this.forcedNamespaceAliases = [];
+                    this.handwrittenSignatures = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * DotnetSettings common.
+                 * @member {google.api.ICommonLanguageSettings|null|undefined} common
+                 * @memberof google.api.DotnetSettings
+                 * @instance
+                 */
+                DotnetSettings.prototype.common = null;
+    
+                /**
+                 * DotnetSettings renamedServices.
+                 * @member {Object.<string,string>} renamedServices
+                 * @memberof google.api.DotnetSettings
+                 * @instance
+                 */
+                DotnetSettings.prototype.renamedServices = $util.emptyObject;
+    
+                /**
+                 * DotnetSettings renamedResources.
+                 * @member {Object.<string,string>} renamedResources
+                 * @memberof google.api.DotnetSettings
+                 * @instance
+                 */
+                DotnetSettings.prototype.renamedResources = $util.emptyObject;
+    
+                /**
+                 * DotnetSettings ignoredResources.
+                 * @member {Array.<string>} ignoredResources
+                 * @memberof google.api.DotnetSettings
+                 * @instance
+                 */
+                DotnetSettings.prototype.ignoredResources = $util.emptyArray;
+    
+                /**
+                 * DotnetSettings forcedNamespaceAliases.
+                 * @member {Array.<string>} forcedNamespaceAliases
+                 * @memberof google.api.DotnetSettings
+                 * @instance
+                 */
+                DotnetSettings.prototype.forcedNamespaceAliases = $util.emptyArray;
+    
+                /**
+                 * DotnetSettings handwrittenSignatures.
+                 * @member {Array.<string>} handwrittenSignatures
+                 * @memberof google.api.DotnetSettings
+                 * @instance
+                 */
+                DotnetSettings.prototype.handwrittenSignatures = $util.emptyArray;
+    
+                /**
+                 * Creates a new DotnetSettings instance using the specified properties.
+                 * @function create
+                 * @memberof google.api.DotnetSettings
+                 * @static
+                 * @param {google.api.IDotnetSettings=} [properties] Properties to set
+                 * @returns {google.api.DotnetSettings} DotnetSettings instance
+                 */
+                DotnetSettings.create = function create(properties) {
+                    return new DotnetSettings(properties);
+                };
+    
+                /**
+                 * Encodes the specified DotnetSettings message. Does not implicitly {@link google.api.DotnetSettings.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.api.DotnetSettings
+                 * @static
+                 * @param {google.api.IDotnetSettings} message DotnetSettings message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                DotnetSettings.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.common != null && Object.hasOwnProperty.call(message, "common"))
+                        $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                    if (message.renamedServices != null && Object.hasOwnProperty.call(message, "renamedServices"))
+                        for (var keys = Object.keys(message.renamedServices), i = 0; i < keys.length; ++i)
+                            writer.uint32(/* id 2, wireType 2 =*/18).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.renamedServices[keys[i]]).ldelim();
+                    if (message.renamedResources != null && Object.hasOwnProperty.call(message, "renamedResources"))
+                        for (var keys = Object.keys(message.renamedResources), i = 0; i < keys.length; ++i)
+                            writer.uint32(/* id 3, wireType 2 =*/26).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.renamedResources[keys[i]]).ldelim();
+                    if (message.ignoredResources != null && message.ignoredResources.length)
+                        for (var i = 0; i < message.ignoredResources.length; ++i)
+                            writer.uint32(/* id 4, wireType 2 =*/34).string(message.ignoredResources[i]);
+                    if (message.forcedNamespaceAliases != null && message.forcedNamespaceAliases.length)
+                        for (var i = 0; i < message.forcedNamespaceAliases.length; ++i)
+                            writer.uint32(/* id 5, wireType 2 =*/42).string(message.forcedNamespaceAliases[i]);
+                    if (message.handwrittenSignatures != null && message.handwrittenSignatures.length)
+                        for (var i = 0; i < message.handwrittenSignatures.length; ++i)
+                            writer.uint32(/* id 6, wireType 2 =*/50).string(message.handwrittenSignatures[i]);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified DotnetSettings message, length delimited. Does not implicitly {@link google.api.DotnetSettings.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.api.DotnetSettings
+                 * @static
+                 * @param {google.api.IDotnetSettings} message DotnetSettings message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                DotnetSettings.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a DotnetSettings message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.api.DotnetSettings
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.api.DotnetSettings} DotnetSettings
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                DotnetSettings.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.DotnetSettings(), key, value;
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                break;
+                            }
+                        case 2: {
+                                if (message.renamedServices === $util.emptyObject)
+                                    message.renamedServices = {};
+                                var end2 = reader.uint32() + reader.pos;
+                                key = "";
+                                value = "";
+                                while (reader.pos < end2) {
+                                    var tag2 = reader.uint32();
+                                    switch (tag2 >>> 3) {
+                                    case 1:
+                                        key = reader.string();
+                                        break;
+                                    case 2:
+                                        value = reader.string();
+                                        break;
+                                    default:
+                                        reader.skipType(tag2 & 7);
+                                        break;
+                                    }
+                                }
+                                message.renamedServices[key] = value;
+                                break;
+                            }
+                        case 3: {
+                                if (message.renamedResources === $util.emptyObject)
+                                    message.renamedResources = {};
+                                var end2 = reader.uint32() + reader.pos;
+                                key = "";
+                                value = "";
+                                while (reader.pos < end2) {
+                                    var tag2 = reader.uint32();
+                                    switch (tag2 >>> 3) {
+                                    case 1:
+                                        key = reader.string();
+                                        break;
+                                    case 2:
+                                        value = reader.string();
+                                        break;
+                                    default:
+                                        reader.skipType(tag2 & 7);
+                                        break;
+                                    }
+                                }
+                                message.renamedResources[key] = value;
+                                break;
+                            }
+                        case 4: {
+                                if (!(message.ignoredResources && message.ignoredResources.length))
+                                    message.ignoredResources = [];
+                                message.ignoredResources.push(reader.string());
+                                break;
+                            }
+                        case 5: {
+                                if (!(message.forcedNamespaceAliases && message.forcedNamespaceAliases.length))
+                                    message.forcedNamespaceAliases = [];
+                                message.forcedNamespaceAliases.push(reader.string());
+                                break;
+                            }
+                        case 6: {
+                                if (!(message.handwrittenSignatures && message.handwrittenSignatures.length))
+                                    message.handwrittenSignatures = [];
+                                message.handwrittenSignatures.push(reader.string());
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a DotnetSettings message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.api.DotnetSettings
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.api.DotnetSettings} DotnetSettings
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                DotnetSettings.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a DotnetSettings message.
+                 * @function verify
+                 * @memberof google.api.DotnetSettings
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                DotnetSettings.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.common != null && message.hasOwnProperty("common")) {
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        if (error)
+                            return "common." + error;
+                    }
+                    if (message.renamedServices != null && message.hasOwnProperty("renamedServices")) {
+                        if (!$util.isObject(message.renamedServices))
+                            return "renamedServices: object expected";
+                        var key = Object.keys(message.renamedServices);
+                        for (var i = 0; i < key.length; ++i)
+                            if (!$util.isString(message.renamedServices[key[i]]))
+                                return "renamedServices: string{k:string} expected";
+                    }
+                    if (message.renamedResources != null && message.hasOwnProperty("renamedResources")) {
+                        if (!$util.isObject(message.renamedResources))
+                            return "renamedResources: object expected";
+                        var key = Object.keys(message.renamedResources);
+                        for (var i = 0; i < key.length; ++i)
+                            if (!$util.isString(message.renamedResources[key[i]]))
+                                return "renamedResources: string{k:string} expected";
+                    }
+                    if (message.ignoredResources != null && message.hasOwnProperty("ignoredResources")) {
+                        if (!Array.isArray(message.ignoredResources))
+                            return "ignoredResources: array expected";
+                        for (var i = 0; i < message.ignoredResources.length; ++i)
+                            if (!$util.isString(message.ignoredResources[i]))
+                                return "ignoredResources: string[] expected";
+                    }
+                    if (message.forcedNamespaceAliases != null && message.hasOwnProperty("forcedNamespaceAliases")) {
+                        if (!Array.isArray(message.forcedNamespaceAliases))
+                            return "forcedNamespaceAliases: array expected";
+                        for (var i = 0; i < message.forcedNamespaceAliases.length; ++i)
+                            if (!$util.isString(message.forcedNamespaceAliases[i]))
+                                return "forcedNamespaceAliases: string[] expected";
+                    }
+                    if (message.handwrittenSignatures != null && message.hasOwnProperty("handwrittenSignatures")) {
+                        if (!Array.isArray(message.handwrittenSignatures))
+                            return "handwrittenSignatures: array expected";
+                        for (var i = 0; i < message.handwrittenSignatures.length; ++i)
+                            if (!$util.isString(message.handwrittenSignatures[i]))
+                                return "handwrittenSignatures: string[] expected";
+                    }
+                    return null;
+                };
+    
+                /**
+                 * Creates a DotnetSettings message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.api.DotnetSettings
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.api.DotnetSettings} DotnetSettings
+                 */
+                DotnetSettings.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.api.DotnetSettings)
+                        return object;
+                    var message = new $root.google.api.DotnetSettings();
+                    if (object.common != null) {
+                        if (typeof object.common !== "object")
+                            throw TypeError(".google.api.DotnetSettings.common: object expected");
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                    }
+                    if (object.renamedServices) {
+                        if (typeof object.renamedServices !== "object")
+                            throw TypeError(".google.api.DotnetSettings.renamedServices: object expected");
+                        message.renamedServices = {};
+                        for (var keys = Object.keys(object.renamedServices), i = 0; i < keys.length; ++i)
+                            message.renamedServices[keys[i]] = String(object.renamedServices[keys[i]]);
+                    }
+                    if (object.renamedResources) {
+                        if (typeof object.renamedResources !== "object")
+                            throw TypeError(".google.api.DotnetSettings.renamedResources: object expected");
+                        message.renamedResources = {};
+                        for (var keys = Object.keys(object.renamedResources), i = 0; i < keys.length; ++i)
+                            message.renamedResources[keys[i]] = String(object.renamedResources[keys[i]]);
+                    }
+                    if (object.ignoredResources) {
+                        if (!Array.isArray(object.ignoredResources))
+                            throw TypeError(".google.api.DotnetSettings.ignoredResources: array expected");
+                        message.ignoredResources = [];
+                        for (var i = 0; i < object.ignoredResources.length; ++i)
+                            message.ignoredResources[i] = String(object.ignoredResources[i]);
+                    }
+                    if (object.forcedNamespaceAliases) {
+                        if (!Array.isArray(object.forcedNamespaceAliases))
+                            throw TypeError(".google.api.DotnetSettings.forcedNamespaceAliases: array expected");
+                        message.forcedNamespaceAliases = [];
+                        for (var i = 0; i < object.forcedNamespaceAliases.length; ++i)
+                            message.forcedNamespaceAliases[i] = String(object.forcedNamespaceAliases[i]);
+                    }
+                    if (object.handwrittenSignatures) {
+                        if (!Array.isArray(object.handwrittenSignatures))
+                            throw TypeError(".google.api.DotnetSettings.handwrittenSignatures: array expected");
+                        message.handwrittenSignatures = [];
+                        for (var i = 0; i < object.handwrittenSignatures.length; ++i)
+                            message.handwrittenSignatures[i] = String(object.handwrittenSignatures[i]);
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a DotnetSettings message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.api.DotnetSettings
+                 * @static
+                 * @param {google.api.DotnetSettings} message DotnetSettings
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                DotnetSettings.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults) {
+                        object.ignoredResources = [];
+                        object.forcedNamespaceAliases = [];
+                        object.handwrittenSignatures = [];
+                    }
+                    if (options.objects || options.defaults) {
+                        object.renamedServices = {};
+                        object.renamedResources = {};
+                    }
+                    if (options.defaults)
+                        object.common = null;
+                    if (message.common != null && message.hasOwnProperty("common"))
+                        object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options);
+                    var keys2;
+                    if (message.renamedServices && (keys2 = Object.keys(message.renamedServices)).length) {
+                        object.renamedServices = {};
+                        for (var j = 0; j < keys2.length; ++j)
+                            object.renamedServices[keys2[j]] = message.renamedServices[keys2[j]];
+                    }
+                    if (message.renamedResources && (keys2 = Object.keys(message.renamedResources)).length) {
+                        object.renamedResources = {};
+                        for (var j = 0; j < keys2.length; ++j)
+                            object.renamedResources[keys2[j]] = message.renamedResources[keys2[j]];
+                    }
+                    if (message.ignoredResources && message.ignoredResources.length) {
+                        object.ignoredResources = [];
+                        for (var j = 0; j < message.ignoredResources.length; ++j)
+                            object.ignoredResources[j] = message.ignoredResources[j];
+                    }
+                    if (message.forcedNamespaceAliases && message.forcedNamespaceAliases.length) {
+                        object.forcedNamespaceAliases = [];
+                        for (var j = 0; j < message.forcedNamespaceAliases.length; ++j)
+                            object.forcedNamespaceAliases[j] = message.forcedNamespaceAliases[j];
+                    }
+                    if (message.handwrittenSignatures && message.handwrittenSignatures.length) {
+                        object.handwrittenSignatures = [];
+                        for (var j = 0; j < message.handwrittenSignatures.length; ++j)
+                            object.handwrittenSignatures[j] = message.handwrittenSignatures[j];
+                    }
+                    return object;
+                };
+    
+                /**
+                 * Converts this DotnetSettings to JSON.
+                 * @function toJSON
+                 * @memberof google.api.DotnetSettings
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                DotnetSettings.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for DotnetSettings
+                 * @function getTypeUrl
+                 * @memberof google.api.DotnetSettings
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                DotnetSettings.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.api.DotnetSettings";
+                };
+    
+                return DotnetSettings;
+            })();
+    
+            api.RubySettings = (function() {
+    
+                /**
+                 * Properties of a RubySettings.
+                 * @memberof google.api
+                 * @interface IRubySettings
+                 * @property {google.api.ICommonLanguageSettings|null} [common] RubySettings common
+                 */
+    
+                /**
+                 * Constructs a new RubySettings.
+                 * @memberof google.api
+                 * @classdesc Represents a RubySettings.
+                 * @implements IRubySettings
+                 * @constructor
+                 * @param {google.api.IRubySettings=} [properties] Properties to set
+                 */
+                function RubySettings(properties) {
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * RubySettings common.
+                 * @member {google.api.ICommonLanguageSettings|null|undefined} common
+                 * @memberof google.api.RubySettings
+                 * @instance
+                 */
+                RubySettings.prototype.common = null;
+    
+                /**
+                 * Creates a new RubySettings instance using the specified properties.
+                 * @function create
+                 * @memberof google.api.RubySettings
+                 * @static
+                 * @param {google.api.IRubySettings=} [properties] Properties to set
+                 * @returns {google.api.RubySettings} RubySettings instance
+                 */
+                RubySettings.create = function create(properties) {
+                    return new RubySettings(properties);
+                };
+    
+                /**
+                 * Encodes the specified RubySettings message. Does not implicitly {@link google.api.RubySettings.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.api.RubySettings
+                 * @static
+                 * @param {google.api.IRubySettings} message RubySettings message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                RubySettings.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.common != null && Object.hasOwnProperty.call(message, "common"))
+                        $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified RubySettings message, length delimited. Does not implicitly {@link google.api.RubySettings.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.api.RubySettings
+                 * @static
+                 * @param {google.api.IRubySettings} message RubySettings message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                RubySettings.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a RubySettings message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.api.RubySettings
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.api.RubySettings} RubySettings
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                RubySettings.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.RubySettings();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a RubySettings message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.api.RubySettings
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.api.RubySettings} RubySettings
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                RubySettings.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a RubySettings message.
+                 * @function verify
+                 * @memberof google.api.RubySettings
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                RubySettings.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.common != null && message.hasOwnProperty("common")) {
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        if (error)
+                            return "common." + error;
+                    }
+                    return null;
+                };
+    
+                /**
+                 * Creates a RubySettings message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.api.RubySettings
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.api.RubySettings} RubySettings
+                 */
+                RubySettings.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.api.RubySettings)
+                        return object;
+                    var message = new $root.google.api.RubySettings();
+                    if (object.common != null) {
+                        if (typeof object.common !== "object")
+                            throw TypeError(".google.api.RubySettings.common: object expected");
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a RubySettings message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.api.RubySettings
+                 * @static
+                 * @param {google.api.RubySettings} message RubySettings
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                RubySettings.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.defaults)
+                        object.common = null;
+                    if (message.common != null && message.hasOwnProperty("common"))
+                        object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options);
+                    return object;
+                };
+    
+                /**
+                 * Converts this RubySettings to JSON.
+                 * @function toJSON
+                 * @memberof google.api.RubySettings
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                RubySettings.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for RubySettings
+                 * @function getTypeUrl
+                 * @memberof google.api.RubySettings
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                RubySettings.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.api.RubySettings";
+                };
+    
+                return RubySettings;
+            })();
+    
+            api.GoSettings = (function() {
+    
+                /**
+                 * Properties of a GoSettings.
+                 * @memberof google.api
+                 * @interface IGoSettings
+                 * @property {google.api.ICommonLanguageSettings|null} [common] GoSettings common
+                 */
+    
+                /**
+                 * Constructs a new GoSettings.
+                 * @memberof google.api
+                 * @classdesc Represents a GoSettings.
+                 * @implements IGoSettings
+                 * @constructor
+                 * @param {google.api.IGoSettings=} [properties] Properties to set
+                 */
+                function GoSettings(properties) {
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * GoSettings common.
+                 * @member {google.api.ICommonLanguageSettings|null|undefined} common
+                 * @memberof google.api.GoSettings
+                 * @instance
+                 */
+                GoSettings.prototype.common = null;
+    
+                /**
+                 * Creates a new GoSettings instance using the specified properties.
+                 * @function create
+                 * @memberof google.api.GoSettings
+                 * @static
+                 * @param {google.api.IGoSettings=} [properties] Properties to set
+                 * @returns {google.api.GoSettings} GoSettings instance
+                 */
+                GoSettings.create = function create(properties) {
+                    return new GoSettings(properties);
+                };
+    
+                /**
+                 * Encodes the specified GoSettings message. Does not implicitly {@link google.api.GoSettings.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.api.GoSettings
+                 * @static
+                 * @param {google.api.IGoSettings} message GoSettings message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                GoSettings.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.common != null && Object.hasOwnProperty.call(message, "common"))
+                        $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified GoSettings message, length delimited. Does not implicitly {@link google.api.GoSettings.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.api.GoSettings
+                 * @static
+                 * @param {google.api.IGoSettings} message GoSettings message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                GoSettings.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a GoSettings message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.api.GoSettings
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.api.GoSettings} GoSettings
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                GoSettings.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.GoSettings();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a GoSettings message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.api.GoSettings
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.api.GoSettings} GoSettings
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                GoSettings.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a GoSettings message.
+                 * @function verify
+                 * @memberof google.api.GoSettings
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                GoSettings.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.common != null && message.hasOwnProperty("common")) {
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        if (error)
+                            return "common." + error;
+                    }
+                    return null;
+                };
+    
+                /**
+                 * Creates a GoSettings message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.api.GoSettings
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.api.GoSettings} GoSettings
+                 */
+                GoSettings.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.api.GoSettings)
+                        return object;
+                    var message = new $root.google.api.GoSettings();
+                    if (object.common != null) {
+                        if (typeof object.common !== "object")
+                            throw TypeError(".google.api.GoSettings.common: object expected");
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a GoSettings message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.api.GoSettings
+                 * @static
+                 * @param {google.api.GoSettings} message GoSettings
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                GoSettings.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.defaults)
+                        object.common = null;
+                    if (message.common != null && message.hasOwnProperty("common"))
+                        object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options);
+                    return object;
+                };
+    
+                /**
+                 * Converts this GoSettings to JSON.
+                 * @function toJSON
+                 * @memberof google.api.GoSettings
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                GoSettings.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for GoSettings
+                 * @function getTypeUrl
+                 * @memberof google.api.GoSettings
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                GoSettings.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.api.GoSettings";
+                };
+    
+                return GoSettings;
+            })();
+    
+            api.MethodSettings = (function() {
+    
+                /**
+                 * Properties of a MethodSettings.
+                 * @memberof google.api
+                 * @interface IMethodSettings
+                 * @property {string|null} [selector] MethodSettings selector
+                 * @property {google.api.MethodSettings.ILongRunning|null} [longRunning] MethodSettings longRunning
+                 * @property {Array.<string>|null} [autoPopulatedFields] MethodSettings autoPopulatedFields
+                 */
+    
+                /**
+                 * Constructs a new MethodSettings.
+                 * @memberof google.api
+                 * @classdesc Represents a MethodSettings.
+                 * @implements IMethodSettings
+                 * @constructor
+                 * @param {google.api.IMethodSettings=} [properties] Properties to set
+                 */
+                function MethodSettings(properties) {
+                    this.autoPopulatedFields = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * MethodSettings selector.
+                 * @member {string} selector
+                 * @memberof google.api.MethodSettings
+                 * @instance
+                 */
+                MethodSettings.prototype.selector = "";
+    
+                /**
+                 * MethodSettings longRunning.
+                 * @member {google.api.MethodSettings.ILongRunning|null|undefined} longRunning
+                 * @memberof google.api.MethodSettings
+                 * @instance
+                 */
+                MethodSettings.prototype.longRunning = null;
+    
+                /**
+                 * MethodSettings autoPopulatedFields.
+                 * @member {Array.<string>} autoPopulatedFields
+                 * @memberof google.api.MethodSettings
+                 * @instance
+                 */
+                MethodSettings.prototype.autoPopulatedFields = $util.emptyArray;
+    
+                /**
+                 * Creates a new MethodSettings instance using the specified properties.
+                 * @function create
+                 * @memberof google.api.MethodSettings
+                 * @static
+                 * @param {google.api.IMethodSettings=} [properties] Properties to set
+                 * @returns {google.api.MethodSettings} MethodSettings instance
+                 */
+                MethodSettings.create = function create(properties) {
+                    return new MethodSettings(properties);
+                };
+    
+                /**
+                 * Encodes the specified MethodSettings message. Does not implicitly {@link google.api.MethodSettings.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.api.MethodSettings
+                 * @static
+                 * @param {google.api.IMethodSettings} message MethodSettings message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                MethodSettings.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.selector != null && Object.hasOwnProperty.call(message, "selector"))
+                        writer.uint32(/* id 1, wireType 2 =*/10).string(message.selector);
+                    if (message.longRunning != null && Object.hasOwnProperty.call(message, "longRunning"))
+                        $root.google.api.MethodSettings.LongRunning.encode(message.longRunning, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+                    if (message.autoPopulatedFields != null && message.autoPopulatedFields.length)
+                        for (var i = 0; i < message.autoPopulatedFields.length; ++i)
+                            writer.uint32(/* id 3, wireType 2 =*/26).string(message.autoPopulatedFields[i]);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified MethodSettings message, length delimited. Does not implicitly {@link google.api.MethodSettings.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.api.MethodSettings
+                 * @static
+                 * @param {google.api.IMethodSettings} message MethodSettings message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                MethodSettings.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a MethodSettings message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.api.MethodSettings
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.api.MethodSettings} MethodSettings
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                MethodSettings.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.MethodSettings();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.selector = reader.string();
+                                break;
+                            }
+                        case 2: {
+                                message.longRunning = $root.google.api.MethodSettings.LongRunning.decode(reader, reader.uint32());
+                                break;
+                            }
+                        case 3: {
+                                if (!(message.autoPopulatedFields && message.autoPopulatedFields.length))
+                                    message.autoPopulatedFields = [];
+                                message.autoPopulatedFields.push(reader.string());
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a MethodSettings message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.api.MethodSettings
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.api.MethodSettings} MethodSettings
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                MethodSettings.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a MethodSettings message.
+                 * @function verify
+                 * @memberof google.api.MethodSettings
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                MethodSettings.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.selector != null && message.hasOwnProperty("selector"))
+                        if (!$util.isString(message.selector))
+                            return "selector: string expected";
+                    if (message.longRunning != null && message.hasOwnProperty("longRunning")) {
+                        var error = $root.google.api.MethodSettings.LongRunning.verify(message.longRunning);
+                        if (error)
+                            return "longRunning." + error;
+                    }
+                    if (message.autoPopulatedFields != null && message.hasOwnProperty("autoPopulatedFields")) {
+                        if (!Array.isArray(message.autoPopulatedFields))
+                            return "autoPopulatedFields: array expected";
+                        for (var i = 0; i < message.autoPopulatedFields.length; ++i)
+                            if (!$util.isString(message.autoPopulatedFields[i]))
+                                return "autoPopulatedFields: string[] expected";
+                    }
+                    return null;
+                };
+    
+                /**
+                 * Creates a MethodSettings message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.api.MethodSettings
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.api.MethodSettings} MethodSettings
+                 */
+                MethodSettings.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.api.MethodSettings)
+                        return object;
+                    var message = new $root.google.api.MethodSettings();
+                    if (object.selector != null)
+                        message.selector = String(object.selector);
+                    if (object.longRunning != null) {
+                        if (typeof object.longRunning !== "object")
+                            throw TypeError(".google.api.MethodSettings.longRunning: object expected");
+                        message.longRunning = $root.google.api.MethodSettings.LongRunning.fromObject(object.longRunning);
+                    }
+                    if (object.autoPopulatedFields) {
+                        if (!Array.isArray(object.autoPopulatedFields))
+                            throw TypeError(".google.api.MethodSettings.autoPopulatedFields: array expected");
+                        message.autoPopulatedFields = [];
+                        for (var i = 0; i < object.autoPopulatedFields.length; ++i)
+                            message.autoPopulatedFields[i] = String(object.autoPopulatedFields[i]);
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a MethodSettings message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.api.MethodSettings
+                 * @static
+                 * @param {google.api.MethodSettings} message MethodSettings
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                MethodSettings.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults)
+                        object.autoPopulatedFields = [];
+                    if (options.defaults) {
+                        object.selector = "";
+                        object.longRunning = null;
+                    }
+                    if (message.selector != null && message.hasOwnProperty("selector"))
+                        object.selector = message.selector;
+                    if (message.longRunning != null && message.hasOwnProperty("longRunning"))
+                        object.longRunning = $root.google.api.MethodSettings.LongRunning.toObject(message.longRunning, options);
+                    if (message.autoPopulatedFields && message.autoPopulatedFields.length) {
+                        object.autoPopulatedFields = [];
+                        for (var j = 0; j < message.autoPopulatedFields.length; ++j)
+                            object.autoPopulatedFields[j] = message.autoPopulatedFields[j];
+                    }
+                    return object;
+                };
+    
+                /**
+                 * Converts this MethodSettings to JSON.
+                 * @function toJSON
+                 * @memberof google.api.MethodSettings
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                MethodSettings.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for MethodSettings
+                 * @function getTypeUrl
+                 * @memberof google.api.MethodSettings
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                MethodSettings.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.api.MethodSettings";
+                };
+    
+                MethodSettings.LongRunning = (function() {
+    
+                    /**
+                     * Properties of a LongRunning.
+                     * @memberof google.api.MethodSettings
+                     * @interface ILongRunning
+                     * @property {google.protobuf.IDuration|null} [initialPollDelay] LongRunning initialPollDelay
+                     * @property {number|null} [pollDelayMultiplier] LongRunning pollDelayMultiplier
+                     * @property {google.protobuf.IDuration|null} [maxPollDelay] LongRunning maxPollDelay
+                     * @property {google.protobuf.IDuration|null} [totalPollTimeout] LongRunning totalPollTimeout
+                     */
+    
+                    /**
+                     * Constructs a new LongRunning.
+                     * @memberof google.api.MethodSettings
+                     * @classdesc Represents a LongRunning.
+                     * @implements ILongRunning
+                     * @constructor
+                     * @param {google.api.MethodSettings.ILongRunning=} [properties] Properties to set
+                     */
+                    function LongRunning(properties) {
+                        if (properties)
+                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                if (properties[keys[i]] != null)
+                                    this[keys[i]] = properties[keys[i]];
+                    }
+    
+                    /**
+                     * LongRunning initialPollDelay.
+                     * @member {google.protobuf.IDuration|null|undefined} initialPollDelay
+                     * @memberof google.api.MethodSettings.LongRunning
+                     * @instance
+                     */
+                    LongRunning.prototype.initialPollDelay = null;
+    
+                    /**
+                     * LongRunning pollDelayMultiplier.
+                     * @member {number} pollDelayMultiplier
+                     * @memberof google.api.MethodSettings.LongRunning
+                     * @instance
+                     */
+                    LongRunning.prototype.pollDelayMultiplier = 0;
+    
+                    /**
+                     * LongRunning maxPollDelay.
+                     * @member {google.protobuf.IDuration|null|undefined} maxPollDelay
+                     * @memberof google.api.MethodSettings.LongRunning
+                     * @instance
+                     */
+                    LongRunning.prototype.maxPollDelay = null;
+    
+                    /**
+                     * LongRunning totalPollTimeout.
+                     * @member {google.protobuf.IDuration|null|undefined} totalPollTimeout
+                     * @memberof google.api.MethodSettings.LongRunning
+                     * @instance
+                     */
+                    LongRunning.prototype.totalPollTimeout = null;
+    
+                    /**
+                     * Creates a new LongRunning instance using the specified properties.
+                     * @function create
+                     * @memberof google.api.MethodSettings.LongRunning
+                     * @static
+                     * @param {google.api.MethodSettings.ILongRunning=} [properties] Properties to set
+                     * @returns {google.api.MethodSettings.LongRunning} LongRunning instance
+                     */
+                    LongRunning.create = function create(properties) {
+                        return new LongRunning(properties);
+                    };
+    
+                    /**
+                     * Encodes the specified LongRunning message. Does not implicitly {@link google.api.MethodSettings.LongRunning.verify|verify} messages.
+                     * @function encode
+                     * @memberof google.api.MethodSettings.LongRunning
+                     * @static
+                     * @param {google.api.MethodSettings.ILongRunning} message LongRunning message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    LongRunning.encode = function encode(message, writer) {
+                        if (!writer)
+                            writer = $Writer.create();
+                        if (message.initialPollDelay != null && Object.hasOwnProperty.call(message, "initialPollDelay"))
+                            $root.google.protobuf.Duration.encode(message.initialPollDelay, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                        if (message.pollDelayMultiplier != null && Object.hasOwnProperty.call(message, "pollDelayMultiplier"))
+                            writer.uint32(/* id 2, wireType 5 =*/21).float(message.pollDelayMultiplier);
+                        if (message.maxPollDelay != null && Object.hasOwnProperty.call(message, "maxPollDelay"))
+                            $root.google.protobuf.Duration.encode(message.maxPollDelay, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+                        if (message.totalPollTimeout != null && Object.hasOwnProperty.call(message, "totalPollTimeout"))
+                            $root.google.protobuf.Duration.encode(message.totalPollTimeout, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
+                        return writer;
+                    };
+    
+                    /**
+                     * Encodes the specified LongRunning message, length delimited. Does not implicitly {@link google.api.MethodSettings.LongRunning.verify|verify} messages.
+                     * @function encodeDelimited
+                     * @memberof google.api.MethodSettings.LongRunning
+                     * @static
+                     * @param {google.api.MethodSettings.ILongRunning} message LongRunning message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    LongRunning.encodeDelimited = function encodeDelimited(message, writer) {
+                        return this.encode(message, writer).ldelim();
+                    };
+    
+                    /**
+                     * Decodes a LongRunning message from the specified reader or buffer.
+                     * @function decode
+                     * @memberof google.api.MethodSettings.LongRunning
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @param {number} [length] Message length if known beforehand
+                     * @returns {google.api.MethodSettings.LongRunning} LongRunning
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    LongRunning.decode = function decode(reader, length, error) {
+                        if (!(reader instanceof $Reader))
+                            reader = $Reader.create(reader);
+                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.MethodSettings.LongRunning();
+                        while (reader.pos < end) {
+                            var tag = reader.uint32();
+                            if (tag === error)
+                                break;
+                            switch (tag >>> 3) {
+                            case 1: {
+                                    message.initialPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                    break;
+                                }
+                            case 2: {
+                                    message.pollDelayMultiplier = reader.float();
+                                    break;
+                                }
+                            case 3: {
+                                    message.maxPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                    break;
+                                }
+                            case 4: {
+                                    message.totalPollTimeout = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                    break;
+                                }
+                            default:
+                                reader.skipType(tag & 7);
+                                break;
+                            }
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Decodes a LongRunning message from the specified reader or buffer, length delimited.
+                     * @function decodeDelimited
+                     * @memberof google.api.MethodSettings.LongRunning
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @returns {google.api.MethodSettings.LongRunning} LongRunning
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    LongRunning.decodeDelimited = function decodeDelimited(reader) {
+                        if (!(reader instanceof $Reader))
+                            reader = new $Reader(reader);
+                        return this.decode(reader, reader.uint32());
+                    };
+    
+                    /**
+                     * Verifies a LongRunning message.
+                     * @function verify
+                     * @memberof google.api.MethodSettings.LongRunning
+                     * @static
+                     * @param {Object.<string,*>} message Plain object to verify
+                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                     */
+                    LongRunning.verify = function verify(message) {
+                        if (typeof message !== "object" || message === null)
+                            return "object expected";
+                        if (message.initialPollDelay != null && message.hasOwnProperty("initialPollDelay")) {
+                            var error = $root.google.protobuf.Duration.verify(message.initialPollDelay);
+                            if (error)
+                                return "initialPollDelay." + error;
+                        }
+                        if (message.pollDelayMultiplier != null && message.hasOwnProperty("pollDelayMultiplier"))
+                            if (typeof message.pollDelayMultiplier !== "number")
+                                return "pollDelayMultiplier: number expected";
+                        if (message.maxPollDelay != null && message.hasOwnProperty("maxPollDelay")) {
+                            var error = $root.google.protobuf.Duration.verify(message.maxPollDelay);
+                            if (error)
+                                return "maxPollDelay." + error;
+                        }
+                        if (message.totalPollTimeout != null && message.hasOwnProperty("totalPollTimeout")) {
+                            var error = $root.google.protobuf.Duration.verify(message.totalPollTimeout);
+                            if (error)
+                                return "totalPollTimeout." + error;
+                        }
+                        return null;
+                    };
+    
+                    /**
+                     * Creates a LongRunning message from a plain object. Also converts values to their respective internal types.
+                     * @function fromObject
+                     * @memberof google.api.MethodSettings.LongRunning
+                     * @static
+                     * @param {Object.<string,*>} object Plain object
+                     * @returns {google.api.MethodSettings.LongRunning} LongRunning
+                     */
+                    LongRunning.fromObject = function fromObject(object) {
+                        if (object instanceof $root.google.api.MethodSettings.LongRunning)
+                            return object;
+                        var message = new $root.google.api.MethodSettings.LongRunning();
+                        if (object.initialPollDelay != null) {
+                            if (typeof object.initialPollDelay !== "object")
+                                throw TypeError(".google.api.MethodSettings.LongRunning.initialPollDelay: object expected");
+                            message.initialPollDelay = $root.google.protobuf.Duration.fromObject(object.initialPollDelay);
+                        }
+                        if (object.pollDelayMultiplier != null)
+                            message.pollDelayMultiplier = Number(object.pollDelayMultiplier);
+                        if (object.maxPollDelay != null) {
+                            if (typeof object.maxPollDelay !== "object")
+                                throw TypeError(".google.api.MethodSettings.LongRunning.maxPollDelay: object expected");
+                            message.maxPollDelay = $root.google.protobuf.Duration.fromObject(object.maxPollDelay);
+                        }
+                        if (object.totalPollTimeout != null) {
+                            if (typeof object.totalPollTimeout !== "object")
+                                throw TypeError(".google.api.MethodSettings.LongRunning.totalPollTimeout: object expected");
+                            message.totalPollTimeout = $root.google.protobuf.Duration.fromObject(object.totalPollTimeout);
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Creates a plain object from a LongRunning message. Also converts values to other types if specified.
+                     * @function toObject
+                     * @memberof google.api.MethodSettings.LongRunning
+                     * @static
+                     * @param {google.api.MethodSettings.LongRunning} message LongRunning
+                     * @param {$protobuf.IConversionOptions} [options] Conversion options
+                     * @returns {Object.<string,*>} Plain object
+                     */
+                    LongRunning.toObject = function toObject(message, options) {
+                        if (!options)
+                            options = {};
+                        var object = {};
+                        if (options.defaults) {
+                            object.initialPollDelay = null;
+                            object.pollDelayMultiplier = 0;
+                            object.maxPollDelay = null;
+                            object.totalPollTimeout = null;
+                        }
+                        if (message.initialPollDelay != null && message.hasOwnProperty("initialPollDelay"))
+                            object.initialPollDelay = $root.google.protobuf.Duration.toObject(message.initialPollDelay, options);
+                        if (message.pollDelayMultiplier != null && message.hasOwnProperty("pollDelayMultiplier"))
+                            object.pollDelayMultiplier = options.json && !isFinite(message.pollDelayMultiplier) ? String(message.pollDelayMultiplier) : message.pollDelayMultiplier;
+                        if (message.maxPollDelay != null && message.hasOwnProperty("maxPollDelay"))
+                            object.maxPollDelay = $root.google.protobuf.Duration.toObject(message.maxPollDelay, options);
+                        if (message.totalPollTimeout != null && message.hasOwnProperty("totalPollTimeout"))
+                            object.totalPollTimeout = $root.google.protobuf.Duration.toObject(message.totalPollTimeout, options);
+                        return object;
+                    };
+    
+                    /**
+                     * Converts this LongRunning to JSON.
+                     * @function toJSON
+                     * @memberof google.api.MethodSettings.LongRunning
+                     * @instance
+                     * @returns {Object.<string,*>} JSON object
+                     */
+                    LongRunning.prototype.toJSON = function toJSON() {
+                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                    };
+    
+                    /**
+                     * Gets the default type url for LongRunning
+                     * @function getTypeUrl
+                     * @memberof google.api.MethodSettings.LongRunning
+                     * @static
+                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns {string} The default type url
+                     */
+                    LongRunning.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                        if (typeUrlPrefix === undefined) {
+                            typeUrlPrefix = "type.googleapis.com";
+                        }
+                        return typeUrlPrefix + "/google.api.MethodSettings.LongRunning";
+                    };
+    
+                    return LongRunning;
+                })();
+    
+                return MethodSettings;
+            })();
+    
+            /**
+             * ClientLibraryOrganization enum.
+             * @name google.api.ClientLibraryOrganization
+             * @enum {number}
+             * @property {number} CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED=0 CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED value
+             * @property {number} CLOUD=1 CLOUD value
+             * @property {number} ADS=2 ADS value
+             * @property {number} PHOTOS=3 PHOTOS value
+             * @property {number} STREET_VIEW=4 STREET_VIEW value
+             * @property {number} SHOPPING=5 SHOPPING value
+             * @property {number} GEO=6 GEO value
+             * @property {number} GENERATIVE_AI=7 GENERATIVE_AI value
+             */
+            api.ClientLibraryOrganization = (function() {
+                var valuesById = {}, values = Object.create(valuesById);
+                values[valuesById[0] = "CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED"] = 0;
+                values[valuesById[1] = "CLOUD"] = 1;
+                values[valuesById[2] = "ADS"] = 2;
+                values[valuesById[3] = "PHOTOS"] = 3;
+                values[valuesById[4] = "STREET_VIEW"] = 4;
+                values[valuesById[5] = "SHOPPING"] = 5;
+                values[valuesById[6] = "GEO"] = 6;
+                values[valuesById[7] = "GENERATIVE_AI"] = 7;
+                return values;
+            })();
+    
+            /**
+             * ClientLibraryDestination enum.
+             * @name google.api.ClientLibraryDestination
+             * @enum {number}
+             * @property {number} CLIENT_LIBRARY_DESTINATION_UNSPECIFIED=0 CLIENT_LIBRARY_DESTINATION_UNSPECIFIED value
+             * @property {number} GITHUB=10 GITHUB value
+             * @property {number} PACKAGE_MANAGER=20 PACKAGE_MANAGER value
+             */
+            api.ClientLibraryDestination = (function() {
+                var valuesById = {}, values = Object.create(valuesById);
+                values[valuesById[0] = "CLIENT_LIBRARY_DESTINATION_UNSPECIFIED"] = 0;
+                values[valuesById[10] = "GITHUB"] = 10;
+                values[valuesById[20] = "PACKAGE_MANAGER"] = 20;
+                return values;
+            })();
+    
+            /**
+             * LaunchStage enum.
+             * @name google.api.LaunchStage
+             * @enum {number}
+             * @property {number} LAUNCH_STAGE_UNSPECIFIED=0 LAUNCH_STAGE_UNSPECIFIED value
+             * @property {number} UNIMPLEMENTED=6 UNIMPLEMENTED value
+             * @property {number} PRELAUNCH=7 PRELAUNCH value
+             * @property {number} EARLY_ACCESS=1 EARLY_ACCESS value
+             * @property {number} ALPHA=2 ALPHA value
+             * @property {number} BETA=3 BETA value
+             * @property {number} GA=4 GA value
+             * @property {number} DEPRECATED=5 DEPRECATED value
+             */
+            api.LaunchStage = (function() {
+                var valuesById = {}, values = Object.create(valuesById);
+                values[valuesById[0] = "LAUNCH_STAGE_UNSPECIFIED"] = 0;
+                values[valuesById[6] = "UNIMPLEMENTED"] = 6;
+                values[valuesById[7] = "PRELAUNCH"] = 7;
+                values[valuesById[1] = "EARLY_ACCESS"] = 1;
+                values[valuesById[2] = "ALPHA"] = 2;
+                values[valuesById[3] = "BETA"] = 3;
+                values[valuesById[4] = "GA"] = 4;
+                values[valuesById[5] = "DEPRECATED"] = 5;
+                return values;
+            })();
+    
+            return api;
+        })();
+    
+        google.protobuf = (function() {
+    
+            /**
+             * Namespace protobuf.
+             * @memberof google
+             * @namespace
+             */
+            var protobuf = {};
+    
+            protobuf.FileDescriptorSet = (function() {
+    
+                /**
+                 * Properties of a FileDescriptorSet.
+                 * @memberof google.protobuf
+                 * @interface IFileDescriptorSet
+                 * @property {Array.<google.protobuf.IFileDescriptorProto>|null} [file] FileDescriptorSet file
+                 */
+    
+                /**
+                 * Constructs a new FileDescriptorSet.
+                 * @memberof google.protobuf
+                 * @classdesc Represents a FileDescriptorSet.
+                 * @implements IFileDescriptorSet
+                 * @constructor
+                 * @param {google.protobuf.IFileDescriptorSet=} [properties] Properties to set
+                 */
+                function FileDescriptorSet(properties) {
+                    this.file = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * FileDescriptorSet file.
+                 * @member {Array.<google.protobuf.IFileDescriptorProto>} file
+                 * @memberof google.protobuf.FileDescriptorSet
+                 * @instance
+                 */
+                FileDescriptorSet.prototype.file = $util.emptyArray;
+    
+                /**
+                 * Creates a new FileDescriptorSet instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.FileDescriptorSet
+                 * @static
+                 * @param {google.protobuf.IFileDescriptorSet=} [properties] Properties to set
+                 * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet instance
+                 */
+                FileDescriptorSet.create = function create(properties) {
+                    return new FileDescriptorSet(properties);
+                };
+    
+                /**
+                 * Encodes the specified FileDescriptorSet message. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.FileDescriptorSet
+                 * @static
+                 * @param {google.protobuf.IFileDescriptorSet} message FileDescriptorSet message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                FileDescriptorSet.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.file != null && message.file.length)
+                        for (var i = 0; i < message.file.length; ++i)
+                            $root.google.protobuf.FileDescriptorProto.encode(message.file[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified FileDescriptorSet message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.FileDescriptorSet
+                 * @static
+                 * @param {google.protobuf.IFileDescriptorSet} message FileDescriptorSet message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                FileDescriptorSet.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a FileDescriptorSet message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.FileDescriptorSet
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                FileDescriptorSet.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileDescriptorSet();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                if (!(message.file && message.file.length))
+                                    message.file = [];
+                                message.file.push($root.google.protobuf.FileDescriptorProto.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a FileDescriptorSet message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.FileDescriptorSet
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                FileDescriptorSet.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a FileDescriptorSet message.
+                 * @function verify
+                 * @memberof google.protobuf.FileDescriptorSet
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                FileDescriptorSet.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.file != null && message.hasOwnProperty("file")) {
+                        if (!Array.isArray(message.file))
+                            return "file: array expected";
+                        for (var i = 0; i < message.file.length; ++i) {
+                            var error = $root.google.protobuf.FileDescriptorProto.verify(message.file[i]);
+                            if (error)
+                                return "file." + error;
+                        }
+                    }
+                    return null;
+                };
+    
+                /**
+                 * Creates a FileDescriptorSet message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.FileDescriptorSet
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet
+                 */
+                FileDescriptorSet.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.FileDescriptorSet)
+                        return object;
+                    var message = new $root.google.protobuf.FileDescriptorSet();
+                    if (object.file) {
+                        if (!Array.isArray(object.file))
+                            throw TypeError(".google.protobuf.FileDescriptorSet.file: array expected");
+                        message.file = [];
+                        for (var i = 0; i < object.file.length; ++i) {
+                            if (typeof object.file[i] !== "object")
+                                throw TypeError(".google.protobuf.FileDescriptorSet.file: object expected");
+                            message.file[i] = $root.google.protobuf.FileDescriptorProto.fromObject(object.file[i]);
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a FileDescriptorSet message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.FileDescriptorSet
+                 * @static
+                 * @param {google.protobuf.FileDescriptorSet} message FileDescriptorSet
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                FileDescriptorSet.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults)
+                        object.file = [];
+                    if (message.file && message.file.length) {
+                        object.file = [];
+                        for (var j = 0; j < message.file.length; ++j)
+                            object.file[j] = $root.google.protobuf.FileDescriptorProto.toObject(message.file[j], options);
+                    }
+                    return object;
+                };
+    
+                /**
+                 * Converts this FileDescriptorSet to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.FileDescriptorSet
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                FileDescriptorSet.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for FileDescriptorSet
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.FileDescriptorSet
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                FileDescriptorSet.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.FileDescriptorSet";
+                };
+    
+                return FileDescriptorSet;
+            })();
+    
+            /**
+             * Edition enum.
+             * @name google.protobuf.Edition
+             * @enum {number}
+             * @property {number} EDITION_UNKNOWN=0 EDITION_UNKNOWN value
+             * @property {number} EDITION_PROTO2=998 EDITION_PROTO2 value
+             * @property {number} EDITION_PROTO3=999 EDITION_PROTO3 value
+             * @property {number} EDITION_2023=1000 EDITION_2023 value
+             * @property {number} EDITION_2024=1001 EDITION_2024 value
+             * @property {number} EDITION_1_TEST_ONLY=1 EDITION_1_TEST_ONLY value
+             * @property {number} EDITION_2_TEST_ONLY=2 EDITION_2_TEST_ONLY value
+             * @property {number} EDITION_99997_TEST_ONLY=99997 EDITION_99997_TEST_ONLY value
+             * @property {number} EDITION_99998_TEST_ONLY=99998 EDITION_99998_TEST_ONLY value
+             * @property {number} EDITION_99999_TEST_ONLY=99999 EDITION_99999_TEST_ONLY value
+             * @property {number} EDITION_MAX=2147483647 EDITION_MAX value
+             */
+            protobuf.Edition = (function() {
+                var valuesById = {}, values = Object.create(valuesById);
+                values[valuesById[0] = "EDITION_UNKNOWN"] = 0;
+                values[valuesById[998] = "EDITION_PROTO2"] = 998;
+                values[valuesById[999] = "EDITION_PROTO3"] = 999;
+                values[valuesById[1000] = "EDITION_2023"] = 1000;
+                values[valuesById[1001] = "EDITION_2024"] = 1001;
+                values[valuesById[1] = "EDITION_1_TEST_ONLY"] = 1;
+                values[valuesById[2] = "EDITION_2_TEST_ONLY"] = 2;
+                values[valuesById[99997] = "EDITION_99997_TEST_ONLY"] = 99997;
+                values[valuesById[99998] = "EDITION_99998_TEST_ONLY"] = 99998;
+                values[valuesById[99999] = "EDITION_99999_TEST_ONLY"] = 99999;
+                values[valuesById[2147483647] = "EDITION_MAX"] = 2147483647;
+                return values;
+            })();
+    
+            protobuf.FileDescriptorProto = (function() {
+    
+                /**
+                 * Properties of a FileDescriptorProto.
+                 * @memberof google.protobuf
+                 * @interface IFileDescriptorProto
+                 * @property {string|null} [name] FileDescriptorProto name
+                 * @property {string|null} ["package"] FileDescriptorProto package
+                 * @property {Array.<string>|null} [dependency] FileDescriptorProto dependency
+                 * @property {Array.<number>|null} [publicDependency] FileDescriptorProto publicDependency
+                 * @property {Array.<number>|null} [weakDependency] FileDescriptorProto weakDependency
+                 * @property {Array.<google.protobuf.IDescriptorProto>|null} [messageType] FileDescriptorProto messageType
+                 * @property {Array.<google.protobuf.IEnumDescriptorProto>|null} [enumType] FileDescriptorProto enumType
+                 * @property {Array.<google.protobuf.IServiceDescriptorProto>|null} [service] FileDescriptorProto service
+                 * @property {Array.<google.protobuf.IFieldDescriptorProto>|null} [extension] FileDescriptorProto extension
+                 * @property {google.protobuf.IFileOptions|null} [options] FileDescriptorProto options
+                 * @property {google.protobuf.ISourceCodeInfo|null} [sourceCodeInfo] FileDescriptorProto sourceCodeInfo
+                 * @property {string|null} [syntax] FileDescriptorProto syntax
+                 * @property {google.protobuf.Edition|null} [edition] FileDescriptorProto edition
+                 */
+    
+                /**
+                 * Constructs a new FileDescriptorProto.
+                 * @memberof google.protobuf
+                 * @classdesc Represents a FileDescriptorProto.
+                 * @implements IFileDescriptorProto
+                 * @constructor
+                 * @param {google.protobuf.IFileDescriptorProto=} [properties] Properties to set
+                 */
+                function FileDescriptorProto(properties) {
+                    this.dependency = [];
+                    this.publicDependency = [];
+                    this.weakDependency = [];
+                    this.messageType = [];
+                    this.enumType = [];
+                    this.service = [];
+                    this.extension = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * FileDescriptorProto name.
+                 * @member {string} name
+                 * @memberof google.protobuf.FileDescriptorProto
+                 * @instance
+                 */
+                FileDescriptorProto.prototype.name = "";
+    
+                /**
+                 * FileDescriptorProto package.
+                 * @member {string} package
+                 * @memberof google.protobuf.FileDescriptorProto
+                 * @instance
+                 */
+                FileDescriptorProto.prototype["package"] = "";
+    
+                /**
+                 * FileDescriptorProto dependency.
+                 * @member {Array.<string>} dependency
+                 * @memberof google.protobuf.FileDescriptorProto
+                 * @instance
+                 */
+                FileDescriptorProto.prototype.dependency = $util.emptyArray;
+    
+                /**
+                 * FileDescriptorProto publicDependency.
+                 * @member {Array.<number>} publicDependency
+                 * @memberof google.protobuf.FileDescriptorProto
+                 * @instance
+                 */
+                FileDescriptorProto.prototype.publicDependency = $util.emptyArray;
+    
+                /**
+                 * FileDescriptorProto weakDependency.
+                 * @member {Array.<number>} weakDependency
+                 * @memberof google.protobuf.FileDescriptorProto
+                 * @instance
+                 */
+                FileDescriptorProto.prototype.weakDependency = $util.emptyArray;
+    
+                /**
+                 * FileDescriptorProto messageType.
+                 * @member {Array.<google.protobuf.IDescriptorProto>} messageType
+                 * @memberof google.protobuf.FileDescriptorProto
+                 * @instance
+                 */
+                FileDescriptorProto.prototype.messageType = $util.emptyArray;
+    
+                /**
+                 * FileDescriptorProto enumType.
+                 * @member {Array.<google.protobuf.IEnumDescriptorProto>} enumType
+                 * @memberof google.protobuf.FileDescriptorProto
+                 * @instance
+                 */
+                FileDescriptorProto.prototype.enumType = $util.emptyArray;
+    
+                /**
+                 * FileDescriptorProto service.
+                 * @member {Array.<google.protobuf.IServiceDescriptorProto>} service
+                 * @memberof google.protobuf.FileDescriptorProto
+                 * @instance
+                 */
+                FileDescriptorProto.prototype.service = $util.emptyArray;
+    
+                /**
+                 * FileDescriptorProto extension.
+                 * @member {Array.<google.protobuf.IFieldDescriptorProto>} extension
+                 * @memberof google.protobuf.FileDescriptorProto
+                 * @instance
+                 */
+                FileDescriptorProto.prototype.extension = $util.emptyArray;
+    
+                /**
+                 * FileDescriptorProto options.
+                 * @member {google.protobuf.IFileOptions|null|undefined} options
+                 * @memberof google.protobuf.FileDescriptorProto
+                 * @instance
+                 */
+                FileDescriptorProto.prototype.options = null;
+    
+                /**
+                 * FileDescriptorProto sourceCodeInfo.
+                 * @member {google.protobuf.ISourceCodeInfo|null|undefined} sourceCodeInfo
+                 * @memberof google.protobuf.FileDescriptorProto
+                 * @instance
+                 */
+                FileDescriptorProto.prototype.sourceCodeInfo = null;
+    
+                /**
+                 * FileDescriptorProto syntax.
+                 * @member {string} syntax
+                 * @memberof google.protobuf.FileDescriptorProto
+                 * @instance
+                 */
+                FileDescriptorProto.prototype.syntax = "";
+    
+                /**
+                 * FileDescriptorProto edition.
+                 * @member {google.protobuf.Edition} edition
+                 * @memberof google.protobuf.FileDescriptorProto
+                 * @instance
+                 */
+                FileDescriptorProto.prototype.edition = 0;
+    
+                /**
+                 * Creates a new FileDescriptorProto instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.FileDescriptorProto
+                 * @static
+                 * @param {google.protobuf.IFileDescriptorProto=} [properties] Properties to set
+                 * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto instance
+                 */
+                FileDescriptorProto.create = function create(properties) {
+                    return new FileDescriptorProto(properties);
+                };
+    
+                /**
+                 * Encodes the specified FileDescriptorProto message. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.FileDescriptorProto
+                 * @static
+                 * @param {google.protobuf.IFileDescriptorProto} message FileDescriptorProto message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                FileDescriptorProto.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.name != null && Object.hasOwnProperty.call(message, "name"))
+                        writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);
+                    if (message["package"] != null && Object.hasOwnProperty.call(message, "package"))
+                        writer.uint32(/* id 2, wireType 2 =*/18).string(message["package"]);
+                    if (message.dependency != null && message.dependency.length)
+                        for (var i = 0; i < message.dependency.length; ++i)
+                            writer.uint32(/* id 3, wireType 2 =*/26).string(message.dependency[i]);
+                    if (message.messageType != null && message.messageType.length)
+                        for (var i = 0; i < message.messageType.length; ++i)
+                            $root.google.protobuf.DescriptorProto.encode(message.messageType[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
+                    if (message.enumType != null && message.enumType.length)
+                        for (var i = 0; i < message.enumType.length; ++i)
+                            $root.google.protobuf.EnumDescriptorProto.encode(message.enumType[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
+                    if (message.service != null && message.service.length)
+                        for (var i = 0; i < message.service.length; ++i)
+                            $root.google.protobuf.ServiceDescriptorProto.encode(message.service[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();
+                    if (message.extension != null && message.extension.length)
+                        for (var i = 0; i < message.extension.length; ++i)
+                            $root.google.protobuf.FieldDescriptorProto.encode(message.extension[i], writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();
+                    if (message.options != null && Object.hasOwnProperty.call(message, "options"))
+                        $root.google.protobuf.FileOptions.encode(message.options, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();
+                    if (message.sourceCodeInfo != null && Object.hasOwnProperty.call(message, "sourceCodeInfo"))
+                        $root.google.protobuf.SourceCodeInfo.encode(message.sourceCodeInfo, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim();
+                    if (message.publicDependency != null && message.publicDependency.length)
+                        for (var i = 0; i < message.publicDependency.length; ++i)
+                            writer.uint32(/* id 10, wireType 0 =*/80).int32(message.publicDependency[i]);
+                    if (message.weakDependency != null && message.weakDependency.length)
+                        for (var i = 0; i < message.weakDependency.length; ++i)
+                            writer.uint32(/* id 11, wireType 0 =*/88).int32(message.weakDependency[i]);
+                    if (message.syntax != null && Object.hasOwnProperty.call(message, "syntax"))
+                        writer.uint32(/* id 12, wireType 2 =*/98).string(message.syntax);
+                    if (message.edition != null && Object.hasOwnProperty.call(message, "edition"))
+                        writer.uint32(/* id 14, wireType 0 =*/112).int32(message.edition);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified FileDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.FileDescriptorProto
+                 * @static
+                 * @param {google.protobuf.IFileDescriptorProto} message FileDescriptorProto message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                FileDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a FileDescriptorProto message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.FileDescriptorProto
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                FileDescriptorProto.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileDescriptorProto();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.name = reader.string();
+                                break;
+                            }
+                        case 2: {
+                                message["package"] = reader.string();
+                                break;
+                            }
+                        case 3: {
+                                if (!(message.dependency && message.dependency.length))
+                                    message.dependency = [];
+                                message.dependency.push(reader.string());
+                                break;
+                            }
+                        case 10: {
+                                if (!(message.publicDependency && message.publicDependency.length))
+                                    message.publicDependency = [];
+                                if ((tag & 7) === 2) {
+                                    var end2 = reader.uint32() + reader.pos;
+                                    while (reader.pos < end2)
+                                        message.publicDependency.push(reader.int32());
+                                } else
+                                    message.publicDependency.push(reader.int32());
+                                break;
+                            }
+                        case 11: {
+                                if (!(message.weakDependency && message.weakDependency.length))
+                                    message.weakDependency = [];
+                                if ((tag & 7) === 2) {
+                                    var end2 = reader.uint32() + reader.pos;
+                                    while (reader.pos < end2)
+                                        message.weakDependency.push(reader.int32());
+                                } else
+                                    message.weakDependency.push(reader.int32());
+                                break;
+                            }
+                        case 4: {
+                                if (!(message.messageType && message.messageType.length))
+                                    message.messageType = [];
+                                message.messageType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        case 5: {
+                                if (!(message.enumType && message.enumType.length))
+                                    message.enumType = [];
+                                message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        case 6: {
+                                if (!(message.service && message.service.length))
+                                    message.service = [];
+                                message.service.push($root.google.protobuf.ServiceDescriptorProto.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        case 7: {
+                                if (!(message.extension && message.extension.length))
+                                    message.extension = [];
+                                message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        case 8: {
+                                message.options = $root.google.protobuf.FileOptions.decode(reader, reader.uint32());
+                                break;
+                            }
+                        case 9: {
+                                message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.decode(reader, reader.uint32());
+                                break;
+                            }
+                        case 12: {
+                                message.syntax = reader.string();
+                                break;
+                            }
+                        case 14: {
+                                message.edition = reader.int32();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a FileDescriptorProto message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.FileDescriptorProto
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                FileDescriptorProto.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a FileDescriptorProto message.
+                 * @function verify
+                 * @memberof google.protobuf.FileDescriptorProto
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                FileDescriptorProto.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.name != null && message.hasOwnProperty("name"))
+                        if (!$util.isString(message.name))
+                            return "name: string expected";
+                    if (message["package"] != null && message.hasOwnProperty("package"))
+                        if (!$util.isString(message["package"]))
+                            return "package: string expected";
+                    if (message.dependency != null && message.hasOwnProperty("dependency")) {
+                        if (!Array.isArray(message.dependency))
+                            return "dependency: array expected";
+                        for (var i = 0; i < message.dependency.length; ++i)
+                            if (!$util.isString(message.dependency[i]))
+                                return "dependency: string[] expected";
+                    }
+                    if (message.publicDependency != null && message.hasOwnProperty("publicDependency")) {
+                        if (!Array.isArray(message.publicDependency))
+                            return "publicDependency: array expected";
+                        for (var i = 0; i < message.publicDependency.length; ++i)
+                            if (!$util.isInteger(message.publicDependency[i]))
+                                return "publicDependency: integer[] expected";
+                    }
+                    if (message.weakDependency != null && message.hasOwnProperty("weakDependency")) {
+                        if (!Array.isArray(message.weakDependency))
+                            return "weakDependency: array expected";
+                        for (var i = 0; i < message.weakDependency.length; ++i)
+                            if (!$util.isInteger(message.weakDependency[i]))
+                                return "weakDependency: integer[] expected";
+                    }
+                    if (message.messageType != null && message.hasOwnProperty("messageType")) {
+                        if (!Array.isArray(message.messageType))
+                            return "messageType: array expected";
+                        for (var i = 0; i < message.messageType.length; ++i) {
+                            var error = $root.google.protobuf.DescriptorProto.verify(message.messageType[i]);
+                            if (error)
+                                return "messageType." + error;
+                        }
+                    }
+                    if (message.enumType != null && message.hasOwnProperty("enumType")) {
+                        if (!Array.isArray(message.enumType))
+                            return "enumType: array expected";
+                        for (var i = 0; i < message.enumType.length; ++i) {
+                            var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i]);
+                            if (error)
+                                return "enumType." + error;
+                        }
+                    }
+                    if (message.service != null && message.hasOwnProperty("service")) {
+                        if (!Array.isArray(message.service))
+                            return "service: array expected";
+                        for (var i = 0; i < message.service.length; ++i) {
+                            var error = $root.google.protobuf.ServiceDescriptorProto.verify(message.service[i]);
+                            if (error)
+                                return "service." + error;
+                        }
+                    }
+                    if (message.extension != null && message.hasOwnProperty("extension")) {
+                        if (!Array.isArray(message.extension))
+                            return "extension: array expected";
+                        for (var i = 0; i < message.extension.length; ++i) {
+                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i]);
+                            if (error)
+                                return "extension." + error;
+                        }
+                    }
+                    if (message.options != null && message.hasOwnProperty("options")) {
+                        var error = $root.google.protobuf.FileOptions.verify(message.options);
+                        if (error)
+                            return "options." + error;
+                    }
+                    if (message.sourceCodeInfo != null && message.hasOwnProperty("sourceCodeInfo")) {
+                        var error = $root.google.protobuf.SourceCodeInfo.verify(message.sourceCodeInfo);
+                        if (error)
+                            return "sourceCodeInfo." + error;
+                    }
+                    if (message.syntax != null && message.hasOwnProperty("syntax"))
+                        if (!$util.isString(message.syntax))
+                            return "syntax: string expected";
+                    if (message.edition != null && message.hasOwnProperty("edition"))
+                        switch (message.edition) {
+                        default:
+                            return "edition: enum value expected";
+                        case 0:
+                        case 998:
+                        case 999:
+                        case 1000:
+                        case 1001:
+                        case 1:
+                        case 2:
+                        case 99997:
+                        case 99998:
+                        case 99999:
+                        case 2147483647:
+                            break;
+                        }
+                    return null;
+                };
+    
+                /**
+                 * Creates a FileDescriptorProto message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.FileDescriptorProto
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto
+                 */
+                FileDescriptorProto.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.FileDescriptorProto)
+                        return object;
+                    var message = new $root.google.protobuf.FileDescriptorProto();
+                    if (object.name != null)
+                        message.name = String(object.name);
+                    if (object["package"] != null)
+                        message["package"] = String(object["package"]);
+                    if (object.dependency) {
+                        if (!Array.isArray(object.dependency))
+                            throw TypeError(".google.protobuf.FileDescriptorProto.dependency: array expected");
+                        message.dependency = [];
+                        for (var i = 0; i < object.dependency.length; ++i)
+                            message.dependency[i] = String(object.dependency[i]);
+                    }
+                    if (object.publicDependency) {
+                        if (!Array.isArray(object.publicDependency))
+                            throw TypeError(".google.protobuf.FileDescriptorProto.publicDependency: array expected");
+                        message.publicDependency = [];
+                        for (var i = 0; i < object.publicDependency.length; ++i)
+                            message.publicDependency[i] = object.publicDependency[i] | 0;
+                    }
+                    if (object.weakDependency) {
+                        if (!Array.isArray(object.weakDependency))
+                            throw TypeError(".google.protobuf.FileDescriptorProto.weakDependency: array expected");
+                        message.weakDependency = [];
+                        for (var i = 0; i < object.weakDependency.length; ++i)
+                            message.weakDependency[i] = object.weakDependency[i] | 0;
+                    }
+                    if (object.messageType) {
+                        if (!Array.isArray(object.messageType))
+                            throw TypeError(".google.protobuf.FileDescriptorProto.messageType: array expected");
+                        message.messageType = [];
+                        for (var i = 0; i < object.messageType.length; ++i) {
+                            if (typeof object.messageType[i] !== "object")
+                                throw TypeError(".google.protobuf.FileDescriptorProto.messageType: object expected");
+                            message.messageType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.messageType[i]);
+                        }
+                    }
+                    if (object.enumType) {
+                        if (!Array.isArray(object.enumType))
+                            throw TypeError(".google.protobuf.FileDescriptorProto.enumType: array expected");
+                        message.enumType = [];
+                        for (var i = 0; i < object.enumType.length; ++i) {
+                            if (typeof object.enumType[i] !== "object")
+                                throw TypeError(".google.protobuf.FileDescriptorProto.enumType: object expected");
+                            message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i]);
+                        }
+                    }
+                    if (object.service) {
+                        if (!Array.isArray(object.service))
+                            throw TypeError(".google.protobuf.FileDescriptorProto.service: array expected");
+                        message.service = [];
+                        for (var i = 0; i < object.service.length; ++i) {
+                            if (typeof object.service[i] !== "object")
+                                throw TypeError(".google.protobuf.FileDescriptorProto.service: object expected");
+                            message.service[i] = $root.google.protobuf.ServiceDescriptorProto.fromObject(object.service[i]);
+                        }
+                    }
+                    if (object.extension) {
+                        if (!Array.isArray(object.extension))
+                            throw TypeError(".google.protobuf.FileDescriptorProto.extension: array expected");
+                        message.extension = [];
+                        for (var i = 0; i < object.extension.length; ++i) {
+                            if (typeof object.extension[i] !== "object")
+                                throw TypeError(".google.protobuf.FileDescriptorProto.extension: object expected");
+                            message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i]);
+                        }
+                    }
+                    if (object.options != null) {
+                        if (typeof object.options !== "object")
+                            throw TypeError(".google.protobuf.FileDescriptorProto.options: object expected");
+                        message.options = $root.google.protobuf.FileOptions.fromObject(object.options);
+                    }
+                    if (object.sourceCodeInfo != null) {
+                        if (typeof object.sourceCodeInfo !== "object")
+                            throw TypeError(".google.protobuf.FileDescriptorProto.sourceCodeInfo: object expected");
+                        message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.fromObject(object.sourceCodeInfo);
+                    }
+                    if (object.syntax != null)
+                        message.syntax = String(object.syntax);
+                    switch (object.edition) {
+                    default:
+                        if (typeof object.edition === "number") {
+                            message.edition = object.edition;
+                            break;
+                        }
+                        break;
+                    case "EDITION_UNKNOWN":
+                    case 0:
+                        message.edition = 0;
+                        break;
+                    case "EDITION_PROTO2":
+                    case 998:
+                        message.edition = 998;
+                        break;
+                    case "EDITION_PROTO3":
+                    case 999:
+                        message.edition = 999;
+                        break;
+                    case "EDITION_2023":
+                    case 1000:
+                        message.edition = 1000;
+                        break;
+                    case "EDITION_2024":
+                    case 1001:
+                        message.edition = 1001;
+                        break;
+                    case "EDITION_1_TEST_ONLY":
+                    case 1:
+                        message.edition = 1;
+                        break;
+                    case "EDITION_2_TEST_ONLY":
+                    case 2:
+                        message.edition = 2;
+                        break;
+                    case "EDITION_99997_TEST_ONLY":
+                    case 99997:
+                        message.edition = 99997;
+                        break;
+                    case "EDITION_99998_TEST_ONLY":
+                    case 99998:
+                        message.edition = 99998;
+                        break;
+                    case "EDITION_99999_TEST_ONLY":
+                    case 99999:
+                        message.edition = 99999;
+                        break;
+                    case "EDITION_MAX":
+                    case 2147483647:
+                        message.edition = 2147483647;
+                        break;
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a FileDescriptorProto message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.FileDescriptorProto
+                 * @static
+                 * @param {google.protobuf.FileDescriptorProto} message FileDescriptorProto
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                FileDescriptorProto.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults) {
+                        object.dependency = [];
+                        object.messageType = [];
+                        object.enumType = [];
+                        object.service = [];
+                        object.extension = [];
+                        object.publicDependency = [];
+                        object.weakDependency = [];
+                    }
+                    if (options.defaults) {
+                        object.name = "";
+                        object["package"] = "";
+                        object.options = null;
+                        object.sourceCodeInfo = null;
+                        object.syntax = "";
+                        object.edition = options.enums === String ? "EDITION_UNKNOWN" : 0;
+                    }
+                    if (message.name != null && message.hasOwnProperty("name"))
+                        object.name = message.name;
+                    if (message["package"] != null && message.hasOwnProperty("package"))
+                        object["package"] = message["package"];
+                    if (message.dependency && message.dependency.length) {
+                        object.dependency = [];
+                        for (var j = 0; j < message.dependency.length; ++j)
+                            object.dependency[j] = message.dependency[j];
+                    }
+                    if (message.messageType && message.messageType.length) {
+                        object.messageType = [];
+                        for (var j = 0; j < message.messageType.length; ++j)
+                            object.messageType[j] = $root.google.protobuf.DescriptorProto.toObject(message.messageType[j], options);
+                    }
+                    if (message.enumType && message.enumType.length) {
+                        object.enumType = [];
+                        for (var j = 0; j < message.enumType.length; ++j)
+                            object.enumType[j] = $root.google.protobuf.EnumDescriptorProto.toObject(message.enumType[j], options);
+                    }
+                    if (message.service && message.service.length) {
+                        object.service = [];
+                        for (var j = 0; j < message.service.length; ++j)
+                            object.service[j] = $root.google.protobuf.ServiceDescriptorProto.toObject(message.service[j], options);
+                    }
+                    if (message.extension && message.extension.length) {
+                        object.extension = [];
+                        for (var j = 0; j < message.extension.length; ++j)
+                            object.extension[j] = $root.google.protobuf.FieldDescriptorProto.toObject(message.extension[j], options);
+                    }
+                    if (message.options != null && message.hasOwnProperty("options"))
+                        object.options = $root.google.protobuf.FileOptions.toObject(message.options, options);
+                    if (message.sourceCodeInfo != null && message.hasOwnProperty("sourceCodeInfo"))
+                        object.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.toObject(message.sourceCodeInfo, options);
+                    if (message.publicDependency && message.publicDependency.length) {
+                        object.publicDependency = [];
+                        for (var j = 0; j < message.publicDependency.length; ++j)
+                            object.publicDependency[j] = message.publicDependency[j];
+                    }
+                    if (message.weakDependency && message.weakDependency.length) {
+                        object.weakDependency = [];
+                        for (var j = 0; j < message.weakDependency.length; ++j)
+                            object.weakDependency[j] = message.weakDependency[j];
+                    }
+                    if (message.syntax != null && message.hasOwnProperty("syntax"))
+                        object.syntax = message.syntax;
+                    if (message.edition != null && message.hasOwnProperty("edition"))
+                        object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] === undefined ? message.edition : $root.google.protobuf.Edition[message.edition] : message.edition;
+                    return object;
+                };
+    
+                /**
+                 * Converts this FileDescriptorProto to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.FileDescriptorProto
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                FileDescriptorProto.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for FileDescriptorProto
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.FileDescriptorProto
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                FileDescriptorProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.FileDescriptorProto";
+                };
+    
+                return FileDescriptorProto;
+            })();
+    
+            protobuf.DescriptorProto = (function() {
+    
+                /**
+                 * Properties of a DescriptorProto.
+                 * @memberof google.protobuf
+                 * @interface IDescriptorProto
+                 * @property {string|null} [name] DescriptorProto name
+                 * @property {Array.<google.protobuf.IFieldDescriptorProto>|null} [field] DescriptorProto field
+                 * @property {Array.<google.protobuf.IFieldDescriptorProto>|null} [extension] DescriptorProto extension
+                 * @property {Array.<google.protobuf.IDescriptorProto>|null} [nestedType] DescriptorProto nestedType
+                 * @property {Array.<google.protobuf.IEnumDescriptorProto>|null} [enumType] DescriptorProto enumType
+                 * @property {Array.<google.protobuf.DescriptorProto.IExtensionRange>|null} [extensionRange] DescriptorProto extensionRange
+                 * @property {Array.<google.protobuf.IOneofDescriptorProto>|null} [oneofDecl] DescriptorProto oneofDecl
+                 * @property {google.protobuf.IMessageOptions|null} [options] DescriptorProto options
+                 * @property {Array.<google.protobuf.DescriptorProto.IReservedRange>|null} [reservedRange] DescriptorProto reservedRange
+                 * @property {Array.<string>|null} [reservedName] DescriptorProto reservedName
+                 */
+    
+                /**
+                 * Constructs a new DescriptorProto.
+                 * @memberof google.protobuf
+                 * @classdesc Represents a DescriptorProto.
+                 * @implements IDescriptorProto
+                 * @constructor
+                 * @param {google.protobuf.IDescriptorProto=} [properties] Properties to set
+                 */
+                function DescriptorProto(properties) {
+                    this.field = [];
+                    this.extension = [];
+                    this.nestedType = [];
+                    this.enumType = [];
+                    this.extensionRange = [];
+                    this.oneofDecl = [];
+                    this.reservedRange = [];
+                    this.reservedName = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * DescriptorProto name.
+                 * @member {string} name
+                 * @memberof google.protobuf.DescriptorProto
+                 * @instance
+                 */
+                DescriptorProto.prototype.name = "";
+    
+                /**
+                 * DescriptorProto field.
+                 * @member {Array.<google.protobuf.IFieldDescriptorProto>} field
+                 * @memberof google.protobuf.DescriptorProto
+                 * @instance
+                 */
+                DescriptorProto.prototype.field = $util.emptyArray;
+    
+                /**
+                 * DescriptorProto extension.
+                 * @member {Array.<google.protobuf.IFieldDescriptorProto>} extension
+                 * @memberof google.protobuf.DescriptorProto
+                 * @instance
+                 */
+                DescriptorProto.prototype.extension = $util.emptyArray;
+    
+                /**
+                 * DescriptorProto nestedType.
+                 * @member {Array.<google.protobuf.IDescriptorProto>} nestedType
+                 * @memberof google.protobuf.DescriptorProto
+                 * @instance
+                 */
+                DescriptorProto.prototype.nestedType = $util.emptyArray;
+    
+                /**
+                 * DescriptorProto enumType.
+                 * @member {Array.<google.protobuf.IEnumDescriptorProto>} enumType
+                 * @memberof google.protobuf.DescriptorProto
+                 * @instance
+                 */
+                DescriptorProto.prototype.enumType = $util.emptyArray;
+    
+                /**
+                 * DescriptorProto extensionRange.
+                 * @member {Array.<google.protobuf.DescriptorProto.IExtensionRange>} extensionRange
+                 * @memberof google.protobuf.DescriptorProto
+                 * @instance
+                 */
+                DescriptorProto.prototype.extensionRange = $util.emptyArray;
+    
+                /**
+                 * DescriptorProto oneofDecl.
+                 * @member {Array.<google.protobuf.IOneofDescriptorProto>} oneofDecl
+                 * @memberof google.protobuf.DescriptorProto
+                 * @instance
+                 */
+                DescriptorProto.prototype.oneofDecl = $util.emptyArray;
+    
+                /**
+                 * DescriptorProto options.
+                 * @member {google.protobuf.IMessageOptions|null|undefined} options
+                 * @memberof google.protobuf.DescriptorProto
+                 * @instance
+                 */
+                DescriptorProto.prototype.options = null;
+    
+                /**
+                 * DescriptorProto reservedRange.
+                 * @member {Array.<google.protobuf.DescriptorProto.IReservedRange>} reservedRange
+                 * @memberof google.protobuf.DescriptorProto
+                 * @instance
+                 */
+                DescriptorProto.prototype.reservedRange = $util.emptyArray;
+    
+                /**
+                 * DescriptorProto reservedName.
+                 * @member {Array.<string>} reservedName
+                 * @memberof google.protobuf.DescriptorProto
+                 * @instance
+                 */
+                DescriptorProto.prototype.reservedName = $util.emptyArray;
+    
+                /**
+                 * Creates a new DescriptorProto instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.DescriptorProto
+                 * @static
+                 * @param {google.protobuf.IDescriptorProto=} [properties] Properties to set
+                 * @returns {google.protobuf.DescriptorProto} DescriptorProto instance
+                 */
+                DescriptorProto.create = function create(properties) {
+                    return new DescriptorProto(properties);
+                };
+    
+                /**
+                 * Encodes the specified DescriptorProto message. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.DescriptorProto
+                 * @static
+                 * @param {google.protobuf.IDescriptorProto} message DescriptorProto message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                DescriptorProto.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.name != null && Object.hasOwnProperty.call(message, "name"))
+                        writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);
+                    if (message.field != null && message.field.length)
+                        for (var i = 0; i < message.field.length; ++i)
+                            $root.google.protobuf.FieldDescriptorProto.encode(message.field[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+                    if (message.nestedType != null && message.nestedType.length)
+                        for (var i = 0; i < message.nestedType.length; ++i)
+                            $root.google.protobuf.DescriptorProto.encode(message.nestedType[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+                    if (message.enumType != null && message.enumType.length)
+                        for (var i = 0; i < message.enumType.length; ++i)
+                            $root.google.protobuf.EnumDescriptorProto.encode(message.enumType[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
+                    if (message.extensionRange != null && message.extensionRange.length)
+                        for (var i = 0; i < message.extensionRange.length; ++i)
+                            $root.google.protobuf.DescriptorProto.ExtensionRange.encode(message.extensionRange[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
+                    if (message.extension != null && message.extension.length)
+                        for (var i = 0; i < message.extension.length; ++i)
+                            $root.google.protobuf.FieldDescriptorProto.encode(message.extension[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();
+                    if (message.options != null && Object.hasOwnProperty.call(message, "options"))
+                        $root.google.protobuf.MessageOptions.encode(message.options, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();
+                    if (message.oneofDecl != null && message.oneofDecl.length)
+                        for (var i = 0; i < message.oneofDecl.length; ++i)
+                            $root.google.protobuf.OneofDescriptorProto.encode(message.oneofDecl[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();
+                    if (message.reservedRange != null && message.reservedRange.length)
+                        for (var i = 0; i < message.reservedRange.length; ++i)
+                            $root.google.protobuf.DescriptorProto.ReservedRange.encode(message.reservedRange[i], writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim();
+                    if (message.reservedName != null && message.reservedName.length)
+                        for (var i = 0; i < message.reservedName.length; ++i)
+                            writer.uint32(/* id 10, wireType 2 =*/82).string(message.reservedName[i]);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified DescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.DescriptorProto
+                 * @static
+                 * @param {google.protobuf.IDescriptorProto} message DescriptorProto message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                DescriptorProto.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a DescriptorProto message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.DescriptorProto
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.DescriptorProto} DescriptorProto
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                DescriptorProto.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.name = reader.string();
+                                break;
+                            }
+                        case 2: {
+                                if (!(message.field && message.field.length))
+                                    message.field = [];
+                                message.field.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        case 6: {
+                                if (!(message.extension && message.extension.length))
+                                    message.extension = [];
+                                message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        case 3: {
+                                if (!(message.nestedType && message.nestedType.length))
+                                    message.nestedType = [];
+                                message.nestedType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        case 4: {
+                                if (!(message.enumType && message.enumType.length))
+                                    message.enumType = [];
+                                message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        case 5: {
+                                if (!(message.extensionRange && message.extensionRange.length))
+                                    message.extensionRange = [];
+                                message.extensionRange.push($root.google.protobuf.DescriptorProto.ExtensionRange.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        case 8: {
+                                if (!(message.oneofDecl && message.oneofDecl.length))
+                                    message.oneofDecl = [];
+                                message.oneofDecl.push($root.google.protobuf.OneofDescriptorProto.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        case 7: {
+                                message.options = $root.google.protobuf.MessageOptions.decode(reader, reader.uint32());
+                                break;
+                            }
+                        case 9: {
+                                if (!(message.reservedRange && message.reservedRange.length))
+                                    message.reservedRange = [];
+                                message.reservedRange.push($root.google.protobuf.DescriptorProto.ReservedRange.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        case 10: {
+                                if (!(message.reservedName && message.reservedName.length))
+                                    message.reservedName = [];
+                                message.reservedName.push(reader.string());
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a DescriptorProto message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.DescriptorProto
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.DescriptorProto} DescriptorProto
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                DescriptorProto.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a DescriptorProto message.
+                 * @function verify
+                 * @memberof google.protobuf.DescriptorProto
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                DescriptorProto.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.name != null && message.hasOwnProperty("name"))
+                        if (!$util.isString(message.name))
+                            return "name: string expected";
+                    if (message.field != null && message.hasOwnProperty("field")) {
+                        if (!Array.isArray(message.field))
+                            return "field: array expected";
+                        for (var i = 0; i < message.field.length; ++i) {
+                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.field[i]);
+                            if (error)
+                                return "field." + error;
+                        }
+                    }
+                    if (message.extension != null && message.hasOwnProperty("extension")) {
+                        if (!Array.isArray(message.extension))
+                            return "extension: array expected";
+                        for (var i = 0; i < message.extension.length; ++i) {
+                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i]);
+                            if (error)
+                                return "extension." + error;
+                        }
+                    }
+                    if (message.nestedType != null && message.hasOwnProperty("nestedType")) {
+                        if (!Array.isArray(message.nestedType))
+                            return "nestedType: array expected";
+                        for (var i = 0; i < message.nestedType.length; ++i) {
+                            var error = $root.google.protobuf.DescriptorProto.verify(message.nestedType[i]);
+                            if (error)
+                                return "nestedType." + error;
+                        }
+                    }
+                    if (message.enumType != null && message.hasOwnProperty("enumType")) {
+                        if (!Array.isArray(message.enumType))
+                            return "enumType: array expected";
+                        for (var i = 0; i < message.enumType.length; ++i) {
+                            var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i]);
+                            if (error)
+                                return "enumType." + error;
+                        }
+                    }
+                    if (message.extensionRange != null && message.hasOwnProperty("extensionRange")) {
+                        if (!Array.isArray(message.extensionRange))
+                            return "extensionRange: array expected";
+                        for (var i = 0; i < message.extensionRange.length; ++i) {
+                            var error = $root.google.protobuf.DescriptorProto.ExtensionRange.verify(message.extensionRange[i]);
+                            if (error)
+                                return "extensionRange." + error;
+                        }
+                    }
+                    if (message.oneofDecl != null && message.hasOwnProperty("oneofDecl")) {
+                        if (!Array.isArray(message.oneofDecl))
+                            return "oneofDecl: array expected";
+                        for (var i = 0; i < message.oneofDecl.length; ++i) {
+                            var error = $root.google.protobuf.OneofDescriptorProto.verify(message.oneofDecl[i]);
+                            if (error)
+                                return "oneofDecl." + error;
+                        }
+                    }
+                    if (message.options != null && message.hasOwnProperty("options")) {
+                        var error = $root.google.protobuf.MessageOptions.verify(message.options);
+                        if (error)
+                            return "options." + error;
+                    }
+                    if (message.reservedRange != null && message.hasOwnProperty("reservedRange")) {
+                        if (!Array.isArray(message.reservedRange))
+                            return "reservedRange: array expected";
+                        for (var i = 0; i < message.reservedRange.length; ++i) {
+                            var error = $root.google.protobuf.DescriptorProto.ReservedRange.verify(message.reservedRange[i]);
+                            if (error)
+                                return "reservedRange." + error;
+                        }
+                    }
+                    if (message.reservedName != null && message.hasOwnProperty("reservedName")) {
+                        if (!Array.isArray(message.reservedName))
+                            return "reservedName: array expected";
+                        for (var i = 0; i < message.reservedName.length; ++i)
+                            if (!$util.isString(message.reservedName[i]))
+                                return "reservedName: string[] expected";
+                    }
+                    return null;
+                };
+    
+                /**
+                 * Creates a DescriptorProto message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.DescriptorProto
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.DescriptorProto} DescriptorProto
+                 */
+                DescriptorProto.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.DescriptorProto)
+                        return object;
+                    var message = new $root.google.protobuf.DescriptorProto();
+                    if (object.name != null)
+                        message.name = String(object.name);
+                    if (object.field) {
+                        if (!Array.isArray(object.field))
+                            throw TypeError(".google.protobuf.DescriptorProto.field: array expected");
+                        message.field = [];
+                        for (var i = 0; i < object.field.length; ++i) {
+                            if (typeof object.field[i] !== "object")
+                                throw TypeError(".google.protobuf.DescriptorProto.field: object expected");
+                            message.field[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.field[i]);
+                        }
+                    }
+                    if (object.extension) {
+                        if (!Array.isArray(object.extension))
+                            throw TypeError(".google.protobuf.DescriptorProto.extension: array expected");
+                        message.extension = [];
+                        for (var i = 0; i < object.extension.length; ++i) {
+                            if (typeof object.extension[i] !== "object")
+                                throw TypeError(".google.protobuf.DescriptorProto.extension: object expected");
+                            message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i]);
+                        }
+                    }
+                    if (object.nestedType) {
+                        if (!Array.isArray(object.nestedType))
+                            throw TypeError(".google.protobuf.DescriptorProto.nestedType: array expected");
+                        message.nestedType = [];
+                        for (var i = 0; i < object.nestedType.length; ++i) {
+                            if (typeof object.nestedType[i] !== "object")
+                                throw TypeError(".google.protobuf.DescriptorProto.nestedType: object expected");
+                            message.nestedType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.nestedType[i]);
+                        }
+                    }
+                    if (object.enumType) {
+                        if (!Array.isArray(object.enumType))
+                            throw TypeError(".google.protobuf.DescriptorProto.enumType: array expected");
+                        message.enumType = [];
+                        for (var i = 0; i < object.enumType.length; ++i) {
+                            if (typeof object.enumType[i] !== "object")
+                                throw TypeError(".google.protobuf.DescriptorProto.enumType: object expected");
+                            message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i]);
+                        }
+                    }
+                    if (object.extensionRange) {
+                        if (!Array.isArray(object.extensionRange))
+                            throw TypeError(".google.protobuf.DescriptorProto.extensionRange: array expected");
+                        message.extensionRange = [];
+                        for (var i = 0; i < object.extensionRange.length; ++i) {
+                            if (typeof object.extensionRange[i] !== "object")
+                                throw TypeError(".google.protobuf.DescriptorProto.extensionRange: object expected");
+                            message.extensionRange[i] = $root.google.protobuf.DescriptorProto.ExtensionRange.fromObject(object.extensionRange[i]);
+                        }
+                    }
+                    if (object.oneofDecl) {
+                        if (!Array.isArray(object.oneofDecl))
+                            throw TypeError(".google.protobuf.DescriptorProto.oneofDecl: array expected");
+                        message.oneofDecl = [];
+                        for (var i = 0; i < object.oneofDecl.length; ++i) {
+                            if (typeof object.oneofDecl[i] !== "object")
+                                throw TypeError(".google.protobuf.DescriptorProto.oneofDecl: object expected");
+                            message.oneofDecl[i] = $root.google.protobuf.OneofDescriptorProto.fromObject(object.oneofDecl[i]);
+                        }
+                    }
+                    if (object.options != null) {
+                        if (typeof object.options !== "object")
+                            throw TypeError(".google.protobuf.DescriptorProto.options: object expected");
+                        message.options = $root.google.protobuf.MessageOptions.fromObject(object.options);
+                    }
+                    if (object.reservedRange) {
+                        if (!Array.isArray(object.reservedRange))
+                            throw TypeError(".google.protobuf.DescriptorProto.reservedRange: array expected");
+                        message.reservedRange = [];
+                        for (var i = 0; i < object.reservedRange.length; ++i) {
+                            if (typeof object.reservedRange[i] !== "object")
+                                throw TypeError(".google.protobuf.DescriptorProto.reservedRange: object expected");
+                            message.reservedRange[i] = $root.google.protobuf.DescriptorProto.ReservedRange.fromObject(object.reservedRange[i]);
+                        }
+                    }
+                    if (object.reservedName) {
+                        if (!Array.isArray(object.reservedName))
+                            throw TypeError(".google.protobuf.DescriptorProto.reservedName: array expected");
+                        message.reservedName = [];
+                        for (var i = 0; i < object.reservedName.length; ++i)
+                            message.reservedName[i] = String(object.reservedName[i]);
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a DescriptorProto message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.DescriptorProto
+                 * @static
+                 * @param {google.protobuf.DescriptorProto} message DescriptorProto
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                DescriptorProto.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults) {
+                        object.field = [];
+                        object.nestedType = [];
+                        object.enumType = [];
+                        object.extensionRange = [];
+                        object.extension = [];
+                        object.oneofDecl = [];
+                        object.reservedRange = [];
+                        object.reservedName = [];
+                    }
+                    if (options.defaults) {
+                        object.name = "";
+                        object.options = null;
+                    }
+                    if (message.name != null && message.hasOwnProperty("name"))
+                        object.name = message.name;
+                    if (message.field && message.field.length) {
+                        object.field = [];
+                        for (var j = 0; j < message.field.length; ++j)
+                            object.field[j] = $root.google.protobuf.FieldDescriptorProto.toObject(message.field[j], options);
+                    }
+                    if (message.nestedType && message.nestedType.length) {
+                        object.nestedType = [];
+                        for (var j = 0; j < message.nestedType.length; ++j)
+                            object.nestedType[j] = $root.google.protobuf.DescriptorProto.toObject(message.nestedType[j], options);
+                    }
+                    if (message.enumType && message.enumType.length) {
+                        object.enumType = [];
+                        for (var j = 0; j < message.enumType.length; ++j)
+                            object.enumType[j] = $root.google.protobuf.EnumDescriptorProto.toObject(message.enumType[j], options);
+                    }
+                    if (message.extensionRange && message.extensionRange.length) {
+                        object.extensionRange = [];
+                        for (var j = 0; j < message.extensionRange.length; ++j)
+                            object.extensionRange[j] = $root.google.protobuf.DescriptorProto.ExtensionRange.toObject(message.extensionRange[j], options);
+                    }
+                    if (message.extension && message.extension.length) {
+                        object.extension = [];
+                        for (var j = 0; j < message.extension.length; ++j)
+                            object.extension[j] = $root.google.protobuf.FieldDescriptorProto.toObject(message.extension[j], options);
+                    }
+                    if (message.options != null && message.hasOwnProperty("options"))
+                        object.options = $root.google.protobuf.MessageOptions.toObject(message.options, options);
+                    if (message.oneofDecl && message.oneofDecl.length) {
+                        object.oneofDecl = [];
+                        for (var j = 0; j < message.oneofDecl.length; ++j)
+                            object.oneofDecl[j] = $root.google.protobuf.OneofDescriptorProto.toObject(message.oneofDecl[j], options);
+                    }
+                    if (message.reservedRange && message.reservedRange.length) {
+                        object.reservedRange = [];
+                        for (var j = 0; j < message.reservedRange.length; ++j)
+                            object.reservedRange[j] = $root.google.protobuf.DescriptorProto.ReservedRange.toObject(message.reservedRange[j], options);
+                    }
+                    if (message.reservedName && message.reservedName.length) {
+                        object.reservedName = [];
+                        for (var j = 0; j < message.reservedName.length; ++j)
+                            object.reservedName[j] = message.reservedName[j];
+                    }
+                    return object;
+                };
+    
+                /**
+                 * Converts this DescriptorProto to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.DescriptorProto
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                DescriptorProto.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for DescriptorProto
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.DescriptorProto
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                DescriptorProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.DescriptorProto";
+                };
+    
+                DescriptorProto.ExtensionRange = (function() {
+    
+                    /**
+                     * Properties of an ExtensionRange.
+                     * @memberof google.protobuf.DescriptorProto
+                     * @interface IExtensionRange
+                     * @property {number|null} [start] ExtensionRange start
+                     * @property {number|null} [end] ExtensionRange end
+                     * @property {google.protobuf.IExtensionRangeOptions|null} [options] ExtensionRange options
+                     */
+    
+                    /**
+                     * Constructs a new ExtensionRange.
+                     * @memberof google.protobuf.DescriptorProto
+                     * @classdesc Represents an ExtensionRange.
+                     * @implements IExtensionRange
+                     * @constructor
+                     * @param {google.protobuf.DescriptorProto.IExtensionRange=} [properties] Properties to set
+                     */
+                    function ExtensionRange(properties) {
+                        if (properties)
+                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                if (properties[keys[i]] != null)
+                                    this[keys[i]] = properties[keys[i]];
+                    }
+    
+                    /**
+                     * ExtensionRange start.
+                     * @member {number} start
+                     * @memberof google.protobuf.DescriptorProto.ExtensionRange
+                     * @instance
+                     */
+                    ExtensionRange.prototype.start = 0;
+    
+                    /**
+                     * ExtensionRange end.
+                     * @member {number} end
+                     * @memberof google.protobuf.DescriptorProto.ExtensionRange
+                     * @instance
+                     */
+                    ExtensionRange.prototype.end = 0;
+    
+                    /**
+                     * ExtensionRange options.
+                     * @member {google.protobuf.IExtensionRangeOptions|null|undefined} options
+                     * @memberof google.protobuf.DescriptorProto.ExtensionRange
+                     * @instance
+                     */
+                    ExtensionRange.prototype.options = null;
+    
+                    /**
+                     * Creates a new ExtensionRange instance using the specified properties.
+                     * @function create
+                     * @memberof google.protobuf.DescriptorProto.ExtensionRange
+                     * @static
+                     * @param {google.protobuf.DescriptorProto.IExtensionRange=} [properties] Properties to set
+                     * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange instance
+                     */
+                    ExtensionRange.create = function create(properties) {
+                        return new ExtensionRange(properties);
+                    };
+    
+                    /**
+                     * Encodes the specified ExtensionRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages.
+                     * @function encode
+                     * @memberof google.protobuf.DescriptorProto.ExtensionRange
+                     * @static
+                     * @param {google.protobuf.DescriptorProto.IExtensionRange} message ExtensionRange message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    ExtensionRange.encode = function encode(message, writer) {
+                        if (!writer)
+                            writer = $Writer.create();
+                        if (message.start != null && Object.hasOwnProperty.call(message, "start"))
+                            writer.uint32(/* id 1, wireType 0 =*/8).int32(message.start);
+                        if (message.end != null && Object.hasOwnProperty.call(message, "end"))
+                            writer.uint32(/* id 2, wireType 0 =*/16).int32(message.end);
+                        if (message.options != null && Object.hasOwnProperty.call(message, "options"))
+                            $root.google.protobuf.ExtensionRangeOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+                        return writer;
+                    };
+    
+                    /**
+                     * Encodes the specified ExtensionRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages.
+                     * @function encodeDelimited
+                     * @memberof google.protobuf.DescriptorProto.ExtensionRange
+                     * @static
+                     * @param {google.protobuf.DescriptorProto.IExtensionRange} message ExtensionRange message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    ExtensionRange.encodeDelimited = function encodeDelimited(message, writer) {
+                        return this.encode(message, writer).ldelim();
+                    };
+    
+                    /**
+                     * Decodes an ExtensionRange message from the specified reader or buffer.
+                     * @function decode
+                     * @memberof google.protobuf.DescriptorProto.ExtensionRange
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @param {number} [length] Message length if known beforehand
+                     * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    ExtensionRange.decode = function decode(reader, length, error) {
+                        if (!(reader instanceof $Reader))
+                            reader = $Reader.create(reader);
+                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto.ExtensionRange();
+                        while (reader.pos < end) {
+                            var tag = reader.uint32();
+                            if (tag === error)
+                                break;
+                            switch (tag >>> 3) {
+                            case 1: {
+                                    message.start = reader.int32();
+                                    break;
+                                }
+                            case 2: {
+                                    message.end = reader.int32();
+                                    break;
+                                }
+                            case 3: {
+                                    message.options = $root.google.protobuf.ExtensionRangeOptions.decode(reader, reader.uint32());
+                                    break;
+                                }
+                            default:
+                                reader.skipType(tag & 7);
+                                break;
+                            }
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Decodes an ExtensionRange message from the specified reader or buffer, length delimited.
+                     * @function decodeDelimited
+                     * @memberof google.protobuf.DescriptorProto.ExtensionRange
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    ExtensionRange.decodeDelimited = function decodeDelimited(reader) {
+                        if (!(reader instanceof $Reader))
+                            reader = new $Reader(reader);
+                        return this.decode(reader, reader.uint32());
+                    };
+    
+                    /**
+                     * Verifies an ExtensionRange message.
+                     * @function verify
+                     * @memberof google.protobuf.DescriptorProto.ExtensionRange
+                     * @static
+                     * @param {Object.<string,*>} message Plain object to verify
+                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                     */
+                    ExtensionRange.verify = function verify(message) {
+                        if (typeof message !== "object" || message === null)
+                            return "object expected";
+                        if (message.start != null && message.hasOwnProperty("start"))
+                            if (!$util.isInteger(message.start))
+                                return "start: integer expected";
+                        if (message.end != null && message.hasOwnProperty("end"))
+                            if (!$util.isInteger(message.end))
+                                return "end: integer expected";
+                        if (message.options != null && message.hasOwnProperty("options")) {
+                            var error = $root.google.protobuf.ExtensionRangeOptions.verify(message.options);
+                            if (error)
+                                return "options." + error;
+                        }
+                        return null;
+                    };
+    
+                    /**
+                     * Creates an ExtensionRange message from a plain object. Also converts values to their respective internal types.
+                     * @function fromObject
+                     * @memberof google.protobuf.DescriptorProto.ExtensionRange
+                     * @static
+                     * @param {Object.<string,*>} object Plain object
+                     * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange
+                     */
+                    ExtensionRange.fromObject = function fromObject(object) {
+                        if (object instanceof $root.google.protobuf.DescriptorProto.ExtensionRange)
+                            return object;
+                        var message = new $root.google.protobuf.DescriptorProto.ExtensionRange();
+                        if (object.start != null)
+                            message.start = object.start | 0;
+                        if (object.end != null)
+                            message.end = object.end | 0;
+                        if (object.options != null) {
+                            if (typeof object.options !== "object")
+                                throw TypeError(".google.protobuf.DescriptorProto.ExtensionRange.options: object expected");
+                            message.options = $root.google.protobuf.ExtensionRangeOptions.fromObject(object.options);
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Creates a plain object from an ExtensionRange message. Also converts values to other types if specified.
+                     * @function toObject
+                     * @memberof google.protobuf.DescriptorProto.ExtensionRange
+                     * @static
+                     * @param {google.protobuf.DescriptorProto.ExtensionRange} message ExtensionRange
+                     * @param {$protobuf.IConversionOptions} [options] Conversion options
+                     * @returns {Object.<string,*>} Plain object
+                     */
+                    ExtensionRange.toObject = function toObject(message, options) {
+                        if (!options)
+                            options = {};
+                        var object = {};
+                        if (options.defaults) {
+                            object.start = 0;
+                            object.end = 0;
+                            object.options = null;
+                        }
+                        if (message.start != null && message.hasOwnProperty("start"))
+                            object.start = message.start;
+                        if (message.end != null && message.hasOwnProperty("end"))
+                            object.end = message.end;
+                        if (message.options != null && message.hasOwnProperty("options"))
+                            object.options = $root.google.protobuf.ExtensionRangeOptions.toObject(message.options, options);
+                        return object;
+                    };
+    
+                    /**
+                     * Converts this ExtensionRange to JSON.
+                     * @function toJSON
+                     * @memberof google.protobuf.DescriptorProto.ExtensionRange
+                     * @instance
+                     * @returns {Object.<string,*>} JSON object
+                     */
+                    ExtensionRange.prototype.toJSON = function toJSON() {
+                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                    };
+    
+                    /**
+                     * Gets the default type url for ExtensionRange
+                     * @function getTypeUrl
+                     * @memberof google.protobuf.DescriptorProto.ExtensionRange
+                     * @static
+                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns {string} The default type url
+                     */
+                    ExtensionRange.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                        if (typeUrlPrefix === undefined) {
+                            typeUrlPrefix = "type.googleapis.com";
+                        }
+                        return typeUrlPrefix + "/google.protobuf.DescriptorProto.ExtensionRange";
+                    };
+    
+                    return ExtensionRange;
+                })();
+    
+                DescriptorProto.ReservedRange = (function() {
+    
+                    /**
+                     * Properties of a ReservedRange.
+                     * @memberof google.protobuf.DescriptorProto
+                     * @interface IReservedRange
+                     * @property {number|null} [start] ReservedRange start
+                     * @property {number|null} [end] ReservedRange end
+                     */
+    
+                    /**
+                     * Constructs a new ReservedRange.
+                     * @memberof google.protobuf.DescriptorProto
+                     * @classdesc Represents a ReservedRange.
+                     * @implements IReservedRange
+                     * @constructor
+                     * @param {google.protobuf.DescriptorProto.IReservedRange=} [properties] Properties to set
+                     */
+                    function ReservedRange(properties) {
+                        if (properties)
+                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                if (properties[keys[i]] != null)
+                                    this[keys[i]] = properties[keys[i]];
+                    }
+    
+                    /**
+                     * ReservedRange start.
+                     * @member {number} start
+                     * @memberof google.protobuf.DescriptorProto.ReservedRange
+                     * @instance
+                     */
+                    ReservedRange.prototype.start = 0;
+    
+                    /**
+                     * ReservedRange end.
+                     * @member {number} end
+                     * @memberof google.protobuf.DescriptorProto.ReservedRange
+                     * @instance
+                     */
+                    ReservedRange.prototype.end = 0;
+    
+                    /**
+                     * Creates a new ReservedRange instance using the specified properties.
+                     * @function create
+                     * @memberof google.protobuf.DescriptorProto.ReservedRange
+                     * @static
+                     * @param {google.protobuf.DescriptorProto.IReservedRange=} [properties] Properties to set
+                     * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange instance
+                     */
+                    ReservedRange.create = function create(properties) {
+                        return new ReservedRange(properties);
+                    };
+    
+                    /**
+                     * Encodes the specified ReservedRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages.
+                     * @function encode
+                     * @memberof google.protobuf.DescriptorProto.ReservedRange
+                     * @static
+                     * @param {google.protobuf.DescriptorProto.IReservedRange} message ReservedRange message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    ReservedRange.encode = function encode(message, writer) {
+                        if (!writer)
+                            writer = $Writer.create();
+                        if (message.start != null && Object.hasOwnProperty.call(message, "start"))
+                            writer.uint32(/* id 1, wireType 0 =*/8).int32(message.start);
+                        if (message.end != null && Object.hasOwnProperty.call(message, "end"))
+                            writer.uint32(/* id 2, wireType 0 =*/16).int32(message.end);
+                        return writer;
+                    };
+    
+                    /**
+                     * Encodes the specified ReservedRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages.
+                     * @function encodeDelimited
+                     * @memberof google.protobuf.DescriptorProto.ReservedRange
+                     * @static
+                     * @param {google.protobuf.DescriptorProto.IReservedRange} message ReservedRange message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    ReservedRange.encodeDelimited = function encodeDelimited(message, writer) {
+                        return this.encode(message, writer).ldelim();
+                    };
+    
+                    /**
+                     * Decodes a ReservedRange message from the specified reader or buffer.
+                     * @function decode
+                     * @memberof google.protobuf.DescriptorProto.ReservedRange
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @param {number} [length] Message length if known beforehand
+                     * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    ReservedRange.decode = function decode(reader, length, error) {
+                        if (!(reader instanceof $Reader))
+                            reader = $Reader.create(reader);
+                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto.ReservedRange();
+                        while (reader.pos < end) {
+                            var tag = reader.uint32();
+                            if (tag === error)
+                                break;
+                            switch (tag >>> 3) {
+                            case 1: {
+                                    message.start = reader.int32();
+                                    break;
+                                }
+                            case 2: {
+                                    message.end = reader.int32();
+                                    break;
+                                }
+                            default:
+                                reader.skipType(tag & 7);
+                                break;
+                            }
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Decodes a ReservedRange message from the specified reader or buffer, length delimited.
+                     * @function decodeDelimited
+                     * @memberof google.protobuf.DescriptorProto.ReservedRange
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    ReservedRange.decodeDelimited = function decodeDelimited(reader) {
+                        if (!(reader instanceof $Reader))
+                            reader = new $Reader(reader);
+                        return this.decode(reader, reader.uint32());
+                    };
+    
+                    /**
+                     * Verifies a ReservedRange message.
+                     * @function verify
+                     * @memberof google.protobuf.DescriptorProto.ReservedRange
+                     * @static
+                     * @param {Object.<string,*>} message Plain object to verify
+                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                     */
+                    ReservedRange.verify = function verify(message) {
+                        if (typeof message !== "object" || message === null)
+                            return "object expected";
+                        if (message.start != null && message.hasOwnProperty("start"))
+                            if (!$util.isInteger(message.start))
+                                return "start: integer expected";
+                        if (message.end != null && message.hasOwnProperty("end"))
+                            if (!$util.isInteger(message.end))
+                                return "end: integer expected";
+                        return null;
+                    };
+    
+                    /**
+                     * Creates a ReservedRange message from a plain object. Also converts values to their respective internal types.
+                     * @function fromObject
+                     * @memberof google.protobuf.DescriptorProto.ReservedRange
+                     * @static
+                     * @param {Object.<string,*>} object Plain object
+                     * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange
+                     */
+                    ReservedRange.fromObject = function fromObject(object) {
+                        if (object instanceof $root.google.protobuf.DescriptorProto.ReservedRange)
+                            return object;
+                        var message = new $root.google.protobuf.DescriptorProto.ReservedRange();
+                        if (object.start != null)
+                            message.start = object.start | 0;
+                        if (object.end != null)
+                            message.end = object.end | 0;
+                        return message;
+                    };
+    
+                    /**
+                     * Creates a plain object from a ReservedRange message. Also converts values to other types if specified.
+                     * @function toObject
+                     * @memberof google.protobuf.DescriptorProto.ReservedRange
+                     * @static
+                     * @param {google.protobuf.DescriptorProto.ReservedRange} message ReservedRange
+                     * @param {$protobuf.IConversionOptions} [options] Conversion options
+                     * @returns {Object.<string,*>} Plain object
+                     */
+                    ReservedRange.toObject = function toObject(message, options) {
+                        if (!options)
+                            options = {};
+                        var object = {};
+                        if (options.defaults) {
+                            object.start = 0;
+                            object.end = 0;
+                        }
+                        if (message.start != null && message.hasOwnProperty("start"))
+                            object.start = message.start;
+                        if (message.end != null && message.hasOwnProperty("end"))
+                            object.end = message.end;
+                        return object;
+                    };
+    
+                    /**
+                     * Converts this ReservedRange to JSON.
+                     * @function toJSON
+                     * @memberof google.protobuf.DescriptorProto.ReservedRange
+                     * @instance
+                     * @returns {Object.<string,*>} JSON object
+                     */
+                    ReservedRange.prototype.toJSON = function toJSON() {
+                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                    };
+    
+                    /**
+                     * Gets the default type url for ReservedRange
+                     * @function getTypeUrl
+                     * @memberof google.protobuf.DescriptorProto.ReservedRange
+                     * @static
+                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns {string} The default type url
+                     */
+                    ReservedRange.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                        if (typeUrlPrefix === undefined) {
+                            typeUrlPrefix = "type.googleapis.com";
+                        }
+                        return typeUrlPrefix + "/google.protobuf.DescriptorProto.ReservedRange";
+                    };
+    
+                    return ReservedRange;
+                })();
+    
+                return DescriptorProto;
+            })();
+    
+            protobuf.ExtensionRangeOptions = (function() {
+    
+                /**
+                 * Properties of an ExtensionRangeOptions.
+                 * @memberof google.protobuf
+                 * @interface IExtensionRangeOptions
+                 * @property {Array.<google.protobuf.IUninterpretedOption>|null} [uninterpretedOption] ExtensionRangeOptions uninterpretedOption
+                 * @property {Array.<google.protobuf.ExtensionRangeOptions.IDeclaration>|null} [declaration] ExtensionRangeOptions declaration
+                 * @property {google.protobuf.IFeatureSet|null} [features] ExtensionRangeOptions features
+                 * @property {google.protobuf.ExtensionRangeOptions.VerificationState|null} [verification] ExtensionRangeOptions verification
+                 */
+    
+                /**
+                 * Constructs a new ExtensionRangeOptions.
+                 * @memberof google.protobuf
+                 * @classdesc Represents an ExtensionRangeOptions.
+                 * @implements IExtensionRangeOptions
+                 * @constructor
+                 * @param {google.protobuf.IExtensionRangeOptions=} [properties] Properties to set
+                 */
+                function ExtensionRangeOptions(properties) {
+                    this.uninterpretedOption = [];
+                    this.declaration = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * ExtensionRangeOptions uninterpretedOption.
+                 * @member {Array.<google.protobuf.IUninterpretedOption>} uninterpretedOption
+                 * @memberof google.protobuf.ExtensionRangeOptions
+                 * @instance
+                 */
+                ExtensionRangeOptions.prototype.uninterpretedOption = $util.emptyArray;
+    
+                /**
+                 * ExtensionRangeOptions declaration.
+                 * @member {Array.<google.protobuf.ExtensionRangeOptions.IDeclaration>} declaration
+                 * @memberof google.protobuf.ExtensionRangeOptions
+                 * @instance
+                 */
+                ExtensionRangeOptions.prototype.declaration = $util.emptyArray;
+    
+                /**
+                 * ExtensionRangeOptions features.
+                 * @member {google.protobuf.IFeatureSet|null|undefined} features
+                 * @memberof google.protobuf.ExtensionRangeOptions
+                 * @instance
+                 */
+                ExtensionRangeOptions.prototype.features = null;
+    
+                /**
+                 * ExtensionRangeOptions verification.
+                 * @member {google.protobuf.ExtensionRangeOptions.VerificationState} verification
+                 * @memberof google.protobuf.ExtensionRangeOptions
+                 * @instance
+                 */
+                ExtensionRangeOptions.prototype.verification = 1;
+    
+                /**
+                 * Creates a new ExtensionRangeOptions instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.ExtensionRangeOptions
+                 * @static
+                 * @param {google.protobuf.IExtensionRangeOptions=} [properties] Properties to set
+                 * @returns {google.protobuf.ExtensionRangeOptions} ExtensionRangeOptions instance
+                 */
+                ExtensionRangeOptions.create = function create(properties) {
+                    return new ExtensionRangeOptions(properties);
+                };
+    
+                /**
+                 * Encodes the specified ExtensionRangeOptions message. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.ExtensionRangeOptions
+                 * @static
+                 * @param {google.protobuf.IExtensionRangeOptions} message ExtensionRangeOptions message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                ExtensionRangeOptions.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.declaration != null && message.declaration.length)
+                        for (var i = 0; i < message.declaration.length; ++i)
+                            $root.google.protobuf.ExtensionRangeOptions.Declaration.encode(message.declaration[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+                    if (message.verification != null && Object.hasOwnProperty.call(message, "verification"))
+                        writer.uint32(/* id 3, wireType 0 =*/24).int32(message.verification);
+                    if (message.features != null && Object.hasOwnProperty.call(message, "features"))
+                        $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 50, wireType 2 =*/402).fork()).ldelim();
+                    if (message.uninterpretedOption != null && message.uninterpretedOption.length)
+                        for (var i = 0; i < message.uninterpretedOption.length; ++i)
+                            $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim();
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified ExtensionRangeOptions message, length delimited. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.ExtensionRangeOptions
+                 * @static
+                 * @param {google.protobuf.IExtensionRangeOptions} message ExtensionRangeOptions message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                ExtensionRangeOptions.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes an ExtensionRangeOptions message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.ExtensionRangeOptions
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.ExtensionRangeOptions} ExtensionRangeOptions
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                ExtensionRangeOptions.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ExtensionRangeOptions();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 999: {
+                                if (!(message.uninterpretedOption && message.uninterpretedOption.length))
+                                    message.uninterpretedOption = [];
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        case 2: {
+                                if (!(message.declaration && message.declaration.length))
+                                    message.declaration = [];
+                                message.declaration.push($root.google.protobuf.ExtensionRangeOptions.Declaration.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        case 50: {
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                break;
+                            }
+                        case 3: {
+                                message.verification = reader.int32();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes an ExtensionRangeOptions message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.ExtensionRangeOptions
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.ExtensionRangeOptions} ExtensionRangeOptions
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                ExtensionRangeOptions.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies an ExtensionRangeOptions message.
+                 * @function verify
+                 * @memberof google.protobuf.ExtensionRangeOptions
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                ExtensionRangeOptions.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) {
+                        if (!Array.isArray(message.uninterpretedOption))
+                            return "uninterpretedOption: array expected";
+                        for (var i = 0; i < message.uninterpretedOption.length; ++i) {
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            if (error)
+                                return "uninterpretedOption." + error;
+                        }
+                    }
+                    if (message.declaration != null && message.hasOwnProperty("declaration")) {
+                        if (!Array.isArray(message.declaration))
+                            return "declaration: array expected";
+                        for (var i = 0; i < message.declaration.length; ++i) {
+                            var error = $root.google.protobuf.ExtensionRangeOptions.Declaration.verify(message.declaration[i]);
+                            if (error)
+                                return "declaration." + error;
+                        }
+                    }
+                    if (message.features != null && message.hasOwnProperty("features")) {
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        if (error)
+                            return "features." + error;
+                    }
+                    if (message.verification != null && message.hasOwnProperty("verification"))
+                        switch (message.verification) {
+                        default:
+                            return "verification: enum value expected";
+                        case 0:
+                        case 1:
+                            break;
+                        }
+                    return null;
+                };
+    
+                /**
+                 * Creates an ExtensionRangeOptions message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.ExtensionRangeOptions
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.ExtensionRangeOptions} ExtensionRangeOptions
+                 */
+                ExtensionRangeOptions.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.ExtensionRangeOptions)
+                        return object;
+                    var message = new $root.google.protobuf.ExtensionRangeOptions();
+                    if (object.uninterpretedOption) {
+                        if (!Array.isArray(object.uninterpretedOption))
+                            throw TypeError(".google.protobuf.ExtensionRangeOptions.uninterpretedOption: array expected");
+                        message.uninterpretedOption = [];
+                        for (var i = 0; i < object.uninterpretedOption.length; ++i) {
+                            if (typeof object.uninterpretedOption[i] !== "object")
+                                throw TypeError(".google.protobuf.ExtensionRangeOptions.uninterpretedOption: object expected");
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                        }
+                    }
+                    if (object.declaration) {
+                        if (!Array.isArray(object.declaration))
+                            throw TypeError(".google.protobuf.ExtensionRangeOptions.declaration: array expected");
+                        message.declaration = [];
+                        for (var i = 0; i < object.declaration.length; ++i) {
+                            if (typeof object.declaration[i] !== "object")
+                                throw TypeError(".google.protobuf.ExtensionRangeOptions.declaration: object expected");
+                            message.declaration[i] = $root.google.protobuf.ExtensionRangeOptions.Declaration.fromObject(object.declaration[i]);
+                        }
+                    }
+                    if (object.features != null) {
+                        if (typeof object.features !== "object")
+                            throw TypeError(".google.protobuf.ExtensionRangeOptions.features: object expected");
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                    }
+                    switch (object.verification) {
+                    case "DECLARATION":
+                    case 0:
+                        message.verification = 0;
+                        break;
+                    default:
+                        if (typeof object.verification === "number") {
+                            message.verification = object.verification;
+                            break;
+                        }
+                        break;
+                    case "UNVERIFIED":
+                    case 1:
+                        message.verification = 1;
+                        break;
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from an ExtensionRangeOptions message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.ExtensionRangeOptions
+                 * @static
+                 * @param {google.protobuf.ExtensionRangeOptions} message ExtensionRangeOptions
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                ExtensionRangeOptions.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults) {
+                        object.declaration = [];
+                        object.uninterpretedOption = [];
+                    }
+                    if (options.defaults) {
+                        object.verification = options.enums === String ? "UNVERIFIED" : 1;
+                        object.features = null;
+                    }
+                    if (message.declaration && message.declaration.length) {
+                        object.declaration = [];
+                        for (var j = 0; j < message.declaration.length; ++j)
+                            object.declaration[j] = $root.google.protobuf.ExtensionRangeOptions.Declaration.toObject(message.declaration[j], options);
+                    }
+                    if (message.verification != null && message.hasOwnProperty("verification"))
+                        object.verification = options.enums === String ? $root.google.protobuf.ExtensionRangeOptions.VerificationState[message.verification] === undefined ? message.verification : $root.google.protobuf.ExtensionRangeOptions.VerificationState[message.verification] : message.verification;
+                    if (message.features != null && message.hasOwnProperty("features"))
+                        object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options);
+                    if (message.uninterpretedOption && message.uninterpretedOption.length) {
+                        object.uninterpretedOption = [];
+                        for (var j = 0; j < message.uninterpretedOption.length; ++j)
+                            object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options);
+                    }
+                    return object;
+                };
+    
+                /**
+                 * Converts this ExtensionRangeOptions to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.ExtensionRangeOptions
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                ExtensionRangeOptions.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for ExtensionRangeOptions
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.ExtensionRangeOptions
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                ExtensionRangeOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.ExtensionRangeOptions";
+                };
+    
+                ExtensionRangeOptions.Declaration = (function() {
+    
+                    /**
+                     * Properties of a Declaration.
+                     * @memberof google.protobuf.ExtensionRangeOptions
+                     * @interface IDeclaration
+                     * @property {number|null} [number] Declaration number
+                     * @property {string|null} [fullName] Declaration fullName
+                     * @property {string|null} [type] Declaration type
+                     * @property {boolean|null} [reserved] Declaration reserved
+                     * @property {boolean|null} [repeated] Declaration repeated
+                     */
+    
+                    /**
+                     * Constructs a new Declaration.
+                     * @memberof google.protobuf.ExtensionRangeOptions
+                     * @classdesc Represents a Declaration.
+                     * @implements IDeclaration
+                     * @constructor
+                     * @param {google.protobuf.ExtensionRangeOptions.IDeclaration=} [properties] Properties to set
+                     */
+                    function Declaration(properties) {
+                        if (properties)
+                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                if (properties[keys[i]] != null)
+                                    this[keys[i]] = properties[keys[i]];
+                    }
+    
+                    /**
+                     * Declaration number.
+                     * @member {number} number
+                     * @memberof google.protobuf.ExtensionRangeOptions.Declaration
+                     * @instance
+                     */
+                    Declaration.prototype.number = 0;
+    
+                    /**
+                     * Declaration fullName.
+                     * @member {string} fullName
+                     * @memberof google.protobuf.ExtensionRangeOptions.Declaration
+                     * @instance
+                     */
+                    Declaration.prototype.fullName = "";
+    
+                    /**
+                     * Declaration type.
+                     * @member {string} type
+                     * @memberof google.protobuf.ExtensionRangeOptions.Declaration
+                     * @instance
+                     */
+                    Declaration.prototype.type = "";
+    
+                    /**
+                     * Declaration reserved.
+                     * @member {boolean} reserved
+                     * @memberof google.protobuf.ExtensionRangeOptions.Declaration
+                     * @instance
+                     */
+                    Declaration.prototype.reserved = false;
+    
+                    /**
+                     * Declaration repeated.
+                     * @member {boolean} repeated
+                     * @memberof google.protobuf.ExtensionRangeOptions.Declaration
+                     * @instance
+                     */
+                    Declaration.prototype.repeated = false;
+    
+                    /**
+                     * Creates a new Declaration instance using the specified properties.
+                     * @function create
+                     * @memberof google.protobuf.ExtensionRangeOptions.Declaration
+                     * @static
+                     * @param {google.protobuf.ExtensionRangeOptions.IDeclaration=} [properties] Properties to set
+                     * @returns {google.protobuf.ExtensionRangeOptions.Declaration} Declaration instance
+                     */
+                    Declaration.create = function create(properties) {
+                        return new Declaration(properties);
+                    };
+    
+                    /**
+                     * Encodes the specified Declaration message. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.Declaration.verify|verify} messages.
+                     * @function encode
+                     * @memberof google.protobuf.ExtensionRangeOptions.Declaration
+                     * @static
+                     * @param {google.protobuf.ExtensionRangeOptions.IDeclaration} message Declaration message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    Declaration.encode = function encode(message, writer) {
+                        if (!writer)
+                            writer = $Writer.create();
+                        if (message.number != null && Object.hasOwnProperty.call(message, "number"))
+                            writer.uint32(/* id 1, wireType 0 =*/8).int32(message.number);
+                        if (message.fullName != null && Object.hasOwnProperty.call(message, "fullName"))
+                            writer.uint32(/* id 2, wireType 2 =*/18).string(message.fullName);
+                        if (message.type != null && Object.hasOwnProperty.call(message, "type"))
+                            writer.uint32(/* id 3, wireType 2 =*/26).string(message.type);
+                        if (message.reserved != null && Object.hasOwnProperty.call(message, "reserved"))
+                            writer.uint32(/* id 5, wireType 0 =*/40).bool(message.reserved);
+                        if (message.repeated != null && Object.hasOwnProperty.call(message, "repeated"))
+                            writer.uint32(/* id 6, wireType 0 =*/48).bool(message.repeated);
+                        return writer;
+                    };
+    
+                    /**
+                     * Encodes the specified Declaration message, length delimited. Does not implicitly {@link google.protobuf.ExtensionRangeOptions.Declaration.verify|verify} messages.
+                     * @function encodeDelimited
+                     * @memberof google.protobuf.ExtensionRangeOptions.Declaration
+                     * @static
+                     * @param {google.protobuf.ExtensionRangeOptions.IDeclaration} message Declaration message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    Declaration.encodeDelimited = function encodeDelimited(message, writer) {
+                        return this.encode(message, writer).ldelim();
+                    };
+    
+                    /**
+                     * Decodes a Declaration message from the specified reader or buffer.
+                     * @function decode
+                     * @memberof google.protobuf.ExtensionRangeOptions.Declaration
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @param {number} [length] Message length if known beforehand
+                     * @returns {google.protobuf.ExtensionRangeOptions.Declaration} Declaration
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    Declaration.decode = function decode(reader, length, error) {
+                        if (!(reader instanceof $Reader))
+                            reader = $Reader.create(reader);
+                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ExtensionRangeOptions.Declaration();
+                        while (reader.pos < end) {
+                            var tag = reader.uint32();
+                            if (tag === error)
+                                break;
+                            switch (tag >>> 3) {
+                            case 1: {
+                                    message.number = reader.int32();
+                                    break;
+                                }
+                            case 2: {
+                                    message.fullName = reader.string();
+                                    break;
+                                }
+                            case 3: {
+                                    message.type = reader.string();
+                                    break;
+                                }
+                            case 5: {
+                                    message.reserved = reader.bool();
+                                    break;
+                                }
+                            case 6: {
+                                    message.repeated = reader.bool();
+                                    break;
+                                }
+                            default:
+                                reader.skipType(tag & 7);
+                                break;
+                            }
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Decodes a Declaration message from the specified reader or buffer, length delimited.
+                     * @function decodeDelimited
+                     * @memberof google.protobuf.ExtensionRangeOptions.Declaration
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @returns {google.protobuf.ExtensionRangeOptions.Declaration} Declaration
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    Declaration.decodeDelimited = function decodeDelimited(reader) {
+                        if (!(reader instanceof $Reader))
+                            reader = new $Reader(reader);
+                        return this.decode(reader, reader.uint32());
+                    };
+    
+                    /**
+                     * Verifies a Declaration message.
+                     * @function verify
+                     * @memberof google.protobuf.ExtensionRangeOptions.Declaration
+                     * @static
+                     * @param {Object.<string,*>} message Plain object to verify
+                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                     */
+                    Declaration.verify = function verify(message) {
+                        if (typeof message !== "object" || message === null)
+                            return "object expected";
+                        if (message.number != null && message.hasOwnProperty("number"))
+                            if (!$util.isInteger(message.number))
+                                return "number: integer expected";
+                        if (message.fullName != null && message.hasOwnProperty("fullName"))
+                            if (!$util.isString(message.fullName))
+                                return "fullName: string expected";
+                        if (message.type != null && message.hasOwnProperty("type"))
+                            if (!$util.isString(message.type))
+                                return "type: string expected";
+                        if (message.reserved != null && message.hasOwnProperty("reserved"))
+                            if (typeof message.reserved !== "boolean")
+                                return "reserved: boolean expected";
+                        if (message.repeated != null && message.hasOwnProperty("repeated"))
+                            if (typeof message.repeated !== "boolean")
+                                return "repeated: boolean expected";
+                        return null;
+                    };
+    
+                    /**
+                     * Creates a Declaration message from a plain object. Also converts values to their respective internal types.
+                     * @function fromObject
+                     * @memberof google.protobuf.ExtensionRangeOptions.Declaration
+                     * @static
+                     * @param {Object.<string,*>} object Plain object
+                     * @returns {google.protobuf.ExtensionRangeOptions.Declaration} Declaration
+                     */
+                    Declaration.fromObject = function fromObject(object) {
+                        if (object instanceof $root.google.protobuf.ExtensionRangeOptions.Declaration)
+                            return object;
+                        var message = new $root.google.protobuf.ExtensionRangeOptions.Declaration();
+                        if (object.number != null)
+                            message.number = object.number | 0;
+                        if (object.fullName != null)
+                            message.fullName = String(object.fullName);
+                        if (object.type != null)
+                            message.type = String(object.type);
+                        if (object.reserved != null)
+                            message.reserved = Boolean(object.reserved);
+                        if (object.repeated != null)
+                            message.repeated = Boolean(object.repeated);
+                        return message;
+                    };
+    
+                    /**
+                     * Creates a plain object from a Declaration message. Also converts values to other types if specified.
+                     * @function toObject
+                     * @memberof google.protobuf.ExtensionRangeOptions.Declaration
+                     * @static
+                     * @param {google.protobuf.ExtensionRangeOptions.Declaration} message Declaration
+                     * @param {$protobuf.IConversionOptions} [options] Conversion options
+                     * @returns {Object.<string,*>} Plain object
+                     */
+                    Declaration.toObject = function toObject(message, options) {
+                        if (!options)
+                            options = {};
+                        var object = {};
+                        if (options.defaults) {
+                            object.number = 0;
+                            object.fullName = "";
+                            object.type = "";
+                            object.reserved = false;
+                            object.repeated = false;
+                        }
+                        if (message.number != null && message.hasOwnProperty("number"))
+                            object.number = message.number;
+                        if (message.fullName != null && message.hasOwnProperty("fullName"))
+                            object.fullName = message.fullName;
+                        if (message.type != null && message.hasOwnProperty("type"))
+                            object.type = message.type;
+                        if (message.reserved != null && message.hasOwnProperty("reserved"))
+                            object.reserved = message.reserved;
+                        if (message.repeated != null && message.hasOwnProperty("repeated"))
+                            object.repeated = message.repeated;
+                        return object;
+                    };
+    
+                    /**
+                     * Converts this Declaration to JSON.
+                     * @function toJSON
+                     * @memberof google.protobuf.ExtensionRangeOptions.Declaration
+                     * @instance
+                     * @returns {Object.<string,*>} JSON object
+                     */
+                    Declaration.prototype.toJSON = function toJSON() {
+                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                    };
+    
+                    /**
+                     * Gets the default type url for Declaration
+                     * @function getTypeUrl
+                     * @memberof google.protobuf.ExtensionRangeOptions.Declaration
+                     * @static
+                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns {string} The default type url
+                     */
+                    Declaration.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                        if (typeUrlPrefix === undefined) {
+                            typeUrlPrefix = "type.googleapis.com";
+                        }
+                        return typeUrlPrefix + "/google.protobuf.ExtensionRangeOptions.Declaration";
+                    };
+    
+                    return Declaration;
+                })();
+    
+                /**
+                 * VerificationState enum.
+                 * @name google.protobuf.ExtensionRangeOptions.VerificationState
+                 * @enum {number}
+                 * @property {number} DECLARATION=0 DECLARATION value
+                 * @property {number} UNVERIFIED=1 UNVERIFIED value
+                 */
+                ExtensionRangeOptions.VerificationState = (function() {
+                    var valuesById = {}, values = Object.create(valuesById);
+                    values[valuesById[0] = "DECLARATION"] = 0;
+                    values[valuesById[1] = "UNVERIFIED"] = 1;
+                    return values;
+                })();
+    
+                return ExtensionRangeOptions;
+            })();
+    
+            protobuf.FieldDescriptorProto = (function() {
+    
+                /**
+                 * Properties of a FieldDescriptorProto.
+                 * @memberof google.protobuf
+                 * @interface IFieldDescriptorProto
+                 * @property {string|null} [name] FieldDescriptorProto name
+                 * @property {number|null} [number] FieldDescriptorProto number
+                 * @property {google.protobuf.FieldDescriptorProto.Label|null} [label] FieldDescriptorProto label
+                 * @property {google.protobuf.FieldDescriptorProto.Type|null} [type] FieldDescriptorProto type
+                 * @property {string|null} [typeName] FieldDescriptorProto typeName
+                 * @property {string|null} [extendee] FieldDescriptorProto extendee
+                 * @property {string|null} [defaultValue] FieldDescriptorProto defaultValue
+                 * @property {number|null} [oneofIndex] FieldDescriptorProto oneofIndex
+                 * @property {string|null} [jsonName] FieldDescriptorProto jsonName
+                 * @property {google.protobuf.IFieldOptions|null} [options] FieldDescriptorProto options
+                 * @property {boolean|null} [proto3Optional] FieldDescriptorProto proto3Optional
+                 */
+    
+                /**
+                 * Constructs a new FieldDescriptorProto.
+                 * @memberof google.protobuf
+                 * @classdesc Represents a FieldDescriptorProto.
+                 * @implements IFieldDescriptorProto
+                 * @constructor
+                 * @param {google.protobuf.IFieldDescriptorProto=} [properties] Properties to set
+                 */
+                function FieldDescriptorProto(properties) {
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * FieldDescriptorProto name.
+                 * @member {string} name
+                 * @memberof google.protobuf.FieldDescriptorProto
+                 * @instance
+                 */
+                FieldDescriptorProto.prototype.name = "";
+    
+                /**
+                 * FieldDescriptorProto number.
+                 * @member {number} number
+                 * @memberof google.protobuf.FieldDescriptorProto
+                 * @instance
+                 */
+                FieldDescriptorProto.prototype.number = 0;
+    
+                /**
+                 * FieldDescriptorProto label.
+                 * @member {google.protobuf.FieldDescriptorProto.Label} label
+                 * @memberof google.protobuf.FieldDescriptorProto
+                 * @instance
+                 */
+                FieldDescriptorProto.prototype.label = 1;
+    
+                /**
+                 * FieldDescriptorProto type.
+                 * @member {google.protobuf.FieldDescriptorProto.Type} type
+                 * @memberof google.protobuf.FieldDescriptorProto
+                 * @instance
+                 */
+                FieldDescriptorProto.prototype.type = 1;
+    
+                /**
+                 * FieldDescriptorProto typeName.
+                 * @member {string} typeName
+                 * @memberof google.protobuf.FieldDescriptorProto
+                 * @instance
+                 */
+                FieldDescriptorProto.prototype.typeName = "";
+    
+                /**
+                 * FieldDescriptorProto extendee.
+                 * @member {string} extendee
+                 * @memberof google.protobuf.FieldDescriptorProto
+                 * @instance
+                 */
+                FieldDescriptorProto.prototype.extendee = "";
+    
+                /**
+                 * FieldDescriptorProto defaultValue.
+                 * @member {string} defaultValue
+                 * @memberof google.protobuf.FieldDescriptorProto
+                 * @instance
+                 */
+                FieldDescriptorProto.prototype.defaultValue = "";
+    
+                /**
+                 * FieldDescriptorProto oneofIndex.
+                 * @member {number} oneofIndex
+                 * @memberof google.protobuf.FieldDescriptorProto
+                 * @instance
+                 */
+                FieldDescriptorProto.prototype.oneofIndex = 0;
+    
+                /**
+                 * FieldDescriptorProto jsonName.
+                 * @member {string} jsonName
+                 * @memberof google.protobuf.FieldDescriptorProto
+                 * @instance
+                 */
+                FieldDescriptorProto.prototype.jsonName = "";
+    
+                /**
+                 * FieldDescriptorProto options.
+                 * @member {google.protobuf.IFieldOptions|null|undefined} options
+                 * @memberof google.protobuf.FieldDescriptorProto
+                 * @instance
+                 */
+                FieldDescriptorProto.prototype.options = null;
+    
+                /**
+                 * FieldDescriptorProto proto3Optional.
+                 * @member {boolean} proto3Optional
+                 * @memberof google.protobuf.FieldDescriptorProto
+                 * @instance
+                 */
+                FieldDescriptorProto.prototype.proto3Optional = false;
+    
+                /**
+                 * Creates a new FieldDescriptorProto instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.FieldDescriptorProto
+                 * @static
+                 * @param {google.protobuf.IFieldDescriptorProto=} [properties] Properties to set
+                 * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto instance
+                 */
+                FieldDescriptorProto.create = function create(properties) {
+                    return new FieldDescriptorProto(properties);
+                };
+    
+                /**
+                 * Encodes the specified FieldDescriptorProto message. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.FieldDescriptorProto
+                 * @static
+                 * @param {google.protobuf.IFieldDescriptorProto} message FieldDescriptorProto message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                FieldDescriptorProto.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.name != null && Object.hasOwnProperty.call(message, "name"))
+                        writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);
+                    if (message.extendee != null && Object.hasOwnProperty.call(message, "extendee"))
+                        writer.uint32(/* id 2, wireType 2 =*/18).string(message.extendee);
+                    if (message.number != null && Object.hasOwnProperty.call(message, "number"))
+                        writer.uint32(/* id 3, wireType 0 =*/24).int32(message.number);
+                    if (message.label != null && Object.hasOwnProperty.call(message, "label"))
+                        writer.uint32(/* id 4, wireType 0 =*/32).int32(message.label);
+                    if (message.type != null && Object.hasOwnProperty.call(message, "type"))
+                        writer.uint32(/* id 5, wireType 0 =*/40).int32(message.type);
+                    if (message.typeName != null && Object.hasOwnProperty.call(message, "typeName"))
+                        writer.uint32(/* id 6, wireType 2 =*/50).string(message.typeName);
+                    if (message.defaultValue != null && Object.hasOwnProperty.call(message, "defaultValue"))
+                        writer.uint32(/* id 7, wireType 2 =*/58).string(message.defaultValue);
+                    if (message.options != null && Object.hasOwnProperty.call(message, "options"))
+                        $root.google.protobuf.FieldOptions.encode(message.options, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();
+                    if (message.oneofIndex != null && Object.hasOwnProperty.call(message, "oneofIndex"))
+                        writer.uint32(/* id 9, wireType 0 =*/72).int32(message.oneofIndex);
+                    if (message.jsonName != null && Object.hasOwnProperty.call(message, "jsonName"))
+                        writer.uint32(/* id 10, wireType 2 =*/82).string(message.jsonName);
+                    if (message.proto3Optional != null && Object.hasOwnProperty.call(message, "proto3Optional"))
+                        writer.uint32(/* id 17, wireType 0 =*/136).bool(message.proto3Optional);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified FieldDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.FieldDescriptorProto
+                 * @static
+                 * @param {google.protobuf.IFieldDescriptorProto} message FieldDescriptorProto message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                FieldDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a FieldDescriptorProto message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.FieldDescriptorProto
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                FieldDescriptorProto.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldDescriptorProto();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.name = reader.string();
+                                break;
+                            }
+                        case 3: {
+                                message.number = reader.int32();
+                                break;
+                            }
+                        case 4: {
+                                message.label = reader.int32();
+                                break;
+                            }
+                        case 5: {
+                                message.type = reader.int32();
+                                break;
+                            }
+                        case 6: {
+                                message.typeName = reader.string();
+                                break;
+                            }
+                        case 2: {
+                                message.extendee = reader.string();
+                                break;
+                            }
+                        case 7: {
+                                message.defaultValue = reader.string();
+                                break;
+                            }
+                        case 9: {
+                                message.oneofIndex = reader.int32();
+                                break;
+                            }
+                        case 10: {
+                                message.jsonName = reader.string();
+                                break;
+                            }
+                        case 8: {
+                                message.options = $root.google.protobuf.FieldOptions.decode(reader, reader.uint32());
+                                break;
+                            }
+                        case 17: {
+                                message.proto3Optional = reader.bool();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a FieldDescriptorProto message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.FieldDescriptorProto
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                FieldDescriptorProto.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a FieldDescriptorProto message.
+                 * @function verify
+                 * @memberof google.protobuf.FieldDescriptorProto
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                FieldDescriptorProto.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.name != null && message.hasOwnProperty("name"))
+                        if (!$util.isString(message.name))
+                            return "name: string expected";
+                    if (message.number != null && message.hasOwnProperty("number"))
+                        if (!$util.isInteger(message.number))
+                            return "number: integer expected";
+                    if (message.label != null && message.hasOwnProperty("label"))
+                        switch (message.label) {
+                        default:
+                            return "label: enum value expected";
+                        case 1:
+                        case 3:
+                        case 2:
+                            break;
+                        }
+                    if (message.type != null && message.hasOwnProperty("type"))
+                        switch (message.type) {
+                        default:
+                            return "type: enum value expected";
+                        case 1:
+                        case 2:
+                        case 3:
+                        case 4:
+                        case 5:
+                        case 6:
+                        case 7:
+                        case 8:
+                        case 9:
+                        case 10:
+                        case 11:
+                        case 12:
+                        case 13:
+                        case 14:
+                        case 15:
+                        case 16:
+                        case 17:
+                        case 18:
+                            break;
+                        }
+                    if (message.typeName != null && message.hasOwnProperty("typeName"))
+                        if (!$util.isString(message.typeName))
+                            return "typeName: string expected";
+                    if (message.extendee != null && message.hasOwnProperty("extendee"))
+                        if (!$util.isString(message.extendee))
+                            return "extendee: string expected";
+                    if (message.defaultValue != null && message.hasOwnProperty("defaultValue"))
+                        if (!$util.isString(message.defaultValue))
+                            return "defaultValue: string expected";
+                    if (message.oneofIndex != null && message.hasOwnProperty("oneofIndex"))
+                        if (!$util.isInteger(message.oneofIndex))
+                            return "oneofIndex: integer expected";
+                    if (message.jsonName != null && message.hasOwnProperty("jsonName"))
+                        if (!$util.isString(message.jsonName))
+                            return "jsonName: string expected";
+                    if (message.options != null && message.hasOwnProperty("options")) {
+                        var error = $root.google.protobuf.FieldOptions.verify(message.options);
+                        if (error)
+                            return "options." + error;
+                    }
+                    if (message.proto3Optional != null && message.hasOwnProperty("proto3Optional"))
+                        if (typeof message.proto3Optional !== "boolean")
+                            return "proto3Optional: boolean expected";
+                    return null;
+                };
+    
+                /**
+                 * Creates a FieldDescriptorProto message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.FieldDescriptorProto
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto
+                 */
+                FieldDescriptorProto.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.FieldDescriptorProto)
+                        return object;
+                    var message = new $root.google.protobuf.FieldDescriptorProto();
+                    if (object.name != null)
+                        message.name = String(object.name);
+                    if (object.number != null)
+                        message.number = object.number | 0;
+                    switch (object.label) {
+                    default:
+                        if (typeof object.label === "number") {
+                            message.label = object.label;
+                            break;
+                        }
+                        break;
+                    case "LABEL_OPTIONAL":
+                    case 1:
+                        message.label = 1;
+                        break;
+                    case "LABEL_REPEATED":
+                    case 3:
+                        message.label = 3;
+                        break;
+                    case "LABEL_REQUIRED":
+                    case 2:
+                        message.label = 2;
+                        break;
+                    }
+                    switch (object.type) {
+                    default:
+                        if (typeof object.type === "number") {
+                            message.type = object.type;
+                            break;
+                        }
+                        break;
+                    case "TYPE_DOUBLE":
+                    case 1:
+                        message.type = 1;
+                        break;
+                    case "TYPE_FLOAT":
+                    case 2:
+                        message.type = 2;
+                        break;
+                    case "TYPE_INT64":
+                    case 3:
+                        message.type = 3;
+                        break;
+                    case "TYPE_UINT64":
+                    case 4:
+                        message.type = 4;
+                        break;
+                    case "TYPE_INT32":
+                    case 5:
+                        message.type = 5;
+                        break;
+                    case "TYPE_FIXED64":
+                    case 6:
+                        message.type = 6;
+                        break;
+                    case "TYPE_FIXED32":
+                    case 7:
+                        message.type = 7;
+                        break;
+                    case "TYPE_BOOL":
+                    case 8:
+                        message.type = 8;
+                        break;
+                    case "TYPE_STRING":
+                    case 9:
+                        message.type = 9;
+                        break;
+                    case "TYPE_GROUP":
+                    case 10:
+                        message.type = 10;
+                        break;
+                    case "TYPE_MESSAGE":
+                    case 11:
+                        message.type = 11;
+                        break;
+                    case "TYPE_BYTES":
+                    case 12:
+                        message.type = 12;
+                        break;
+                    case "TYPE_UINT32":
+                    case 13:
+                        message.type = 13;
+                        break;
+                    case "TYPE_ENUM":
+                    case 14:
+                        message.type = 14;
+                        break;
+                    case "TYPE_SFIXED32":
+                    case 15:
+                        message.type = 15;
+                        break;
+                    case "TYPE_SFIXED64":
+                    case 16:
+                        message.type = 16;
+                        break;
+                    case "TYPE_SINT32":
+                    case 17:
+                        message.type = 17;
+                        break;
+                    case "TYPE_SINT64":
+                    case 18:
+                        message.type = 18;
+                        break;
+                    }
+                    if (object.typeName != null)
+                        message.typeName = String(object.typeName);
+                    if (object.extendee != null)
+                        message.extendee = String(object.extendee);
+                    if (object.defaultValue != null)
+                        message.defaultValue = String(object.defaultValue);
+                    if (object.oneofIndex != null)
+                        message.oneofIndex = object.oneofIndex | 0;
+                    if (object.jsonName != null)
+                        message.jsonName = String(object.jsonName);
+                    if (object.options != null) {
+                        if (typeof object.options !== "object")
+                            throw TypeError(".google.protobuf.FieldDescriptorProto.options: object expected");
+                        message.options = $root.google.protobuf.FieldOptions.fromObject(object.options);
+                    }
+                    if (object.proto3Optional != null)
+                        message.proto3Optional = Boolean(object.proto3Optional);
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a FieldDescriptorProto message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.FieldDescriptorProto
+                 * @static
+                 * @param {google.protobuf.FieldDescriptorProto} message FieldDescriptorProto
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                FieldDescriptorProto.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.defaults) {
+                        object.name = "";
+                        object.extendee = "";
+                        object.number = 0;
+                        object.label = options.enums === String ? "LABEL_OPTIONAL" : 1;
+                        object.type = options.enums === String ? "TYPE_DOUBLE" : 1;
+                        object.typeName = "";
+                        object.defaultValue = "";
+                        object.options = null;
+                        object.oneofIndex = 0;
+                        object.jsonName = "";
+                        object.proto3Optional = false;
+                    }
+                    if (message.name != null && message.hasOwnProperty("name"))
+                        object.name = message.name;
+                    if (message.extendee != null && message.hasOwnProperty("extendee"))
+                        object.extendee = message.extendee;
+                    if (message.number != null && message.hasOwnProperty("number"))
+                        object.number = message.number;
+                    if (message.label != null && message.hasOwnProperty("label"))
+                        object.label = options.enums === String ? $root.google.protobuf.FieldDescriptorProto.Label[message.label] === undefined ? message.label : $root.google.protobuf.FieldDescriptorProto.Label[message.label] : message.label;
+                    if (message.type != null && message.hasOwnProperty("type"))
+                        object.type = options.enums === String ? $root.google.protobuf.FieldDescriptorProto.Type[message.type] === undefined ? message.type : $root.google.protobuf.FieldDescriptorProto.Type[message.type] : message.type;
+                    if (message.typeName != null && message.hasOwnProperty("typeName"))
+                        object.typeName = message.typeName;
+                    if (message.defaultValue != null && message.hasOwnProperty("defaultValue"))
+                        object.defaultValue = message.defaultValue;
+                    if (message.options != null && message.hasOwnProperty("options"))
+                        object.options = $root.google.protobuf.FieldOptions.toObject(message.options, options);
+                    if (message.oneofIndex != null && message.hasOwnProperty("oneofIndex"))
+                        object.oneofIndex = message.oneofIndex;
+                    if (message.jsonName != null && message.hasOwnProperty("jsonName"))
+                        object.jsonName = message.jsonName;
+                    if (message.proto3Optional != null && message.hasOwnProperty("proto3Optional"))
+                        object.proto3Optional = message.proto3Optional;
+                    return object;
+                };
+    
+                /**
+                 * Converts this FieldDescriptorProto to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.FieldDescriptorProto
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                FieldDescriptorProto.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for FieldDescriptorProto
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.FieldDescriptorProto
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                FieldDescriptorProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.FieldDescriptorProto";
+                };
+    
+                /**
+                 * Type enum.
+                 * @name google.protobuf.FieldDescriptorProto.Type
+                 * @enum {number}
+                 * @property {number} TYPE_DOUBLE=1 TYPE_DOUBLE value
+                 * @property {number} TYPE_FLOAT=2 TYPE_FLOAT value
+                 * @property {number} TYPE_INT64=3 TYPE_INT64 value
+                 * @property {number} TYPE_UINT64=4 TYPE_UINT64 value
+                 * @property {number} TYPE_INT32=5 TYPE_INT32 value
+                 * @property {number} TYPE_FIXED64=6 TYPE_FIXED64 value
+                 * @property {number} TYPE_FIXED32=7 TYPE_FIXED32 value
+                 * @property {number} TYPE_BOOL=8 TYPE_BOOL value
+                 * @property {number} TYPE_STRING=9 TYPE_STRING value
+                 * @property {number} TYPE_GROUP=10 TYPE_GROUP value
+                 * @property {number} TYPE_MESSAGE=11 TYPE_MESSAGE value
+                 * @property {number} TYPE_BYTES=12 TYPE_BYTES value
+                 * @property {number} TYPE_UINT32=13 TYPE_UINT32 value
+                 * @property {number} TYPE_ENUM=14 TYPE_ENUM value
+                 * @property {number} TYPE_SFIXED32=15 TYPE_SFIXED32 value
+                 * @property {number} TYPE_SFIXED64=16 TYPE_SFIXED64 value
+                 * @property {number} TYPE_SINT32=17 TYPE_SINT32 value
+                 * @property {number} TYPE_SINT64=18 TYPE_SINT64 value
+                 */
+                FieldDescriptorProto.Type = (function() {
+                    var valuesById = {}, values = Object.create(valuesById);
+                    values[valuesById[1] = "TYPE_DOUBLE"] = 1;
+                    values[valuesById[2] = "TYPE_FLOAT"] = 2;
+                    values[valuesById[3] = "TYPE_INT64"] = 3;
+                    values[valuesById[4] = "TYPE_UINT64"] = 4;
+                    values[valuesById[5] = "TYPE_INT32"] = 5;
+                    values[valuesById[6] = "TYPE_FIXED64"] = 6;
+                    values[valuesById[7] = "TYPE_FIXED32"] = 7;
+                    values[valuesById[8] = "TYPE_BOOL"] = 8;
+                    values[valuesById[9] = "TYPE_STRING"] = 9;
+                    values[valuesById[10] = "TYPE_GROUP"] = 10;
+                    values[valuesById[11] = "TYPE_MESSAGE"] = 11;
+                    values[valuesById[12] = "TYPE_BYTES"] = 12;
+                    values[valuesById[13] = "TYPE_UINT32"] = 13;
+                    values[valuesById[14] = "TYPE_ENUM"] = 14;
+                    values[valuesById[15] = "TYPE_SFIXED32"] = 15;
+                    values[valuesById[16] = "TYPE_SFIXED64"] = 16;
+                    values[valuesById[17] = "TYPE_SINT32"] = 17;
+                    values[valuesById[18] = "TYPE_SINT64"] = 18;
+                    return values;
+                })();
+    
+                /**
+                 * Label enum.
+                 * @name google.protobuf.FieldDescriptorProto.Label
+                 * @enum {number}
+                 * @property {number} LABEL_OPTIONAL=1 LABEL_OPTIONAL value
+                 * @property {number} LABEL_REPEATED=3 LABEL_REPEATED value
+                 * @property {number} LABEL_REQUIRED=2 LABEL_REQUIRED value
+                 */
+                FieldDescriptorProto.Label = (function() {
+                    var valuesById = {}, values = Object.create(valuesById);
+                    values[valuesById[1] = "LABEL_OPTIONAL"] = 1;
+                    values[valuesById[3] = "LABEL_REPEATED"] = 3;
+                    values[valuesById[2] = "LABEL_REQUIRED"] = 2;
+                    return values;
+                })();
+    
+                return FieldDescriptorProto;
+            })();
+    
+            protobuf.OneofDescriptorProto = (function() {
+    
+                /**
+                 * Properties of an OneofDescriptorProto.
+                 * @memberof google.protobuf
+                 * @interface IOneofDescriptorProto
+                 * @property {string|null} [name] OneofDescriptorProto name
+                 * @property {google.protobuf.IOneofOptions|null} [options] OneofDescriptorProto options
+                 */
+    
+                /**
+                 * Constructs a new OneofDescriptorProto.
+                 * @memberof google.protobuf
+                 * @classdesc Represents an OneofDescriptorProto.
+                 * @implements IOneofDescriptorProto
+                 * @constructor
+                 * @param {google.protobuf.IOneofDescriptorProto=} [properties] Properties to set
+                 */
+                function OneofDescriptorProto(properties) {
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * OneofDescriptorProto name.
+                 * @member {string} name
+                 * @memberof google.protobuf.OneofDescriptorProto
+                 * @instance
+                 */
+                OneofDescriptorProto.prototype.name = "";
+    
+                /**
+                 * OneofDescriptorProto options.
+                 * @member {google.protobuf.IOneofOptions|null|undefined} options
+                 * @memberof google.protobuf.OneofDescriptorProto
+                 * @instance
+                 */
+                OneofDescriptorProto.prototype.options = null;
+    
+                /**
+                 * Creates a new OneofDescriptorProto instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.OneofDescriptorProto
+                 * @static
+                 * @param {google.protobuf.IOneofDescriptorProto=} [properties] Properties to set
+                 * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto instance
+                 */
+                OneofDescriptorProto.create = function create(properties) {
+                    return new OneofDescriptorProto(properties);
+                };
+    
+                /**
+                 * Encodes the specified OneofDescriptorProto message. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.OneofDescriptorProto
+                 * @static
+                 * @param {google.protobuf.IOneofDescriptorProto} message OneofDescriptorProto message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                OneofDescriptorProto.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.name != null && Object.hasOwnProperty.call(message, "name"))
+                        writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);
+                    if (message.options != null && Object.hasOwnProperty.call(message, "options"))
+                        $root.google.protobuf.OneofOptions.encode(message.options, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified OneofDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.OneofDescriptorProto
+                 * @static
+                 * @param {google.protobuf.IOneofDescriptorProto} message OneofDescriptorProto message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                OneofDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes an OneofDescriptorProto message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.OneofDescriptorProto
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                OneofDescriptorProto.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.OneofDescriptorProto();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.name = reader.string();
+                                break;
+                            }
+                        case 2: {
+                                message.options = $root.google.protobuf.OneofOptions.decode(reader, reader.uint32());
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes an OneofDescriptorProto message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.OneofDescriptorProto
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                OneofDescriptorProto.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies an OneofDescriptorProto message.
+                 * @function verify
+                 * @memberof google.protobuf.OneofDescriptorProto
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                OneofDescriptorProto.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.name != null && message.hasOwnProperty("name"))
+                        if (!$util.isString(message.name))
+                            return "name: string expected";
+                    if (message.options != null && message.hasOwnProperty("options")) {
+                        var error = $root.google.protobuf.OneofOptions.verify(message.options);
+                        if (error)
+                            return "options." + error;
+                    }
+                    return null;
+                };
+    
+                /**
+                 * Creates an OneofDescriptorProto message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.OneofDescriptorProto
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto
+                 */
+                OneofDescriptorProto.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.OneofDescriptorProto)
+                        return object;
+                    var message = new $root.google.protobuf.OneofDescriptorProto();
+                    if (object.name != null)
+                        message.name = String(object.name);
+                    if (object.options != null) {
+                        if (typeof object.options !== "object")
+                            throw TypeError(".google.protobuf.OneofDescriptorProto.options: object expected");
+                        message.options = $root.google.protobuf.OneofOptions.fromObject(object.options);
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from an OneofDescriptorProto message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.OneofDescriptorProto
+                 * @static
+                 * @param {google.protobuf.OneofDescriptorProto} message OneofDescriptorProto
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                OneofDescriptorProto.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.defaults) {
+                        object.name = "";
+                        object.options = null;
+                    }
+                    if (message.name != null && message.hasOwnProperty("name"))
+                        object.name = message.name;
+                    if (message.options != null && message.hasOwnProperty("options"))
+                        object.options = $root.google.protobuf.OneofOptions.toObject(message.options, options);
+                    return object;
+                };
+    
+                /**
+                 * Converts this OneofDescriptorProto to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.OneofDescriptorProto
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                OneofDescriptorProto.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for OneofDescriptorProto
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.OneofDescriptorProto
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                OneofDescriptorProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.OneofDescriptorProto";
+                };
+    
+                return OneofDescriptorProto;
+            })();
+    
+            protobuf.EnumDescriptorProto = (function() {
+    
+                /**
+                 * Properties of an EnumDescriptorProto.
+                 * @memberof google.protobuf
+                 * @interface IEnumDescriptorProto
+                 * @property {string|null} [name] EnumDescriptorProto name
+                 * @property {Array.<google.protobuf.IEnumValueDescriptorProto>|null} [value] EnumDescriptorProto value
+                 * @property {google.protobuf.IEnumOptions|null} [options] EnumDescriptorProto options
+                 * @property {Array.<google.protobuf.EnumDescriptorProto.IEnumReservedRange>|null} [reservedRange] EnumDescriptorProto reservedRange
+                 * @property {Array.<string>|null} [reservedName] EnumDescriptorProto reservedName
+                 */
+    
+                /**
+                 * Constructs a new EnumDescriptorProto.
+                 * @memberof google.protobuf
+                 * @classdesc Represents an EnumDescriptorProto.
+                 * @implements IEnumDescriptorProto
+                 * @constructor
+                 * @param {google.protobuf.IEnumDescriptorProto=} [properties] Properties to set
+                 */
+                function EnumDescriptorProto(properties) {
+                    this.value = [];
+                    this.reservedRange = [];
+                    this.reservedName = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * EnumDescriptorProto name.
+                 * @member {string} name
+                 * @memberof google.protobuf.EnumDescriptorProto
+                 * @instance
+                 */
+                EnumDescriptorProto.prototype.name = "";
+    
+                /**
+                 * EnumDescriptorProto value.
+                 * @member {Array.<google.protobuf.IEnumValueDescriptorProto>} value
+                 * @memberof google.protobuf.EnumDescriptorProto
+                 * @instance
+                 */
+                EnumDescriptorProto.prototype.value = $util.emptyArray;
+    
+                /**
+                 * EnumDescriptorProto options.
+                 * @member {google.protobuf.IEnumOptions|null|undefined} options
+                 * @memberof google.protobuf.EnumDescriptorProto
+                 * @instance
+                 */
+                EnumDescriptorProto.prototype.options = null;
+    
+                /**
+                 * EnumDescriptorProto reservedRange.
+                 * @member {Array.<google.protobuf.EnumDescriptorProto.IEnumReservedRange>} reservedRange
+                 * @memberof google.protobuf.EnumDescriptorProto
+                 * @instance
+                 */
+                EnumDescriptorProto.prototype.reservedRange = $util.emptyArray;
+    
+                /**
+                 * EnumDescriptorProto reservedName.
+                 * @member {Array.<string>} reservedName
+                 * @memberof google.protobuf.EnumDescriptorProto
+                 * @instance
+                 */
+                EnumDescriptorProto.prototype.reservedName = $util.emptyArray;
+    
+                /**
+                 * Creates a new EnumDescriptorProto instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.EnumDescriptorProto
+                 * @static
+                 * @param {google.protobuf.IEnumDescriptorProto=} [properties] Properties to set
+                 * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto instance
+                 */
+                EnumDescriptorProto.create = function create(properties) {
+                    return new EnumDescriptorProto(properties);
+                };
+    
+                /**
+                 * Encodes the specified EnumDescriptorProto message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.EnumDescriptorProto
+                 * @static
+                 * @param {google.protobuf.IEnumDescriptorProto} message EnumDescriptorProto message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                EnumDescriptorProto.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.name != null && Object.hasOwnProperty.call(message, "name"))
+                        writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);
+                    if (message.value != null && message.value.length)
+                        for (var i = 0; i < message.value.length; ++i)
+                            $root.google.protobuf.EnumValueDescriptorProto.encode(message.value[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+                    if (message.options != null && Object.hasOwnProperty.call(message, "options"))
+                        $root.google.protobuf.EnumOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+                    if (message.reservedRange != null && message.reservedRange.length)
+                        for (var i = 0; i < message.reservedRange.length; ++i)
+                            $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.encode(message.reservedRange[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
+                    if (message.reservedName != null && message.reservedName.length)
+                        for (var i = 0; i < message.reservedName.length; ++i)
+                            writer.uint32(/* id 5, wireType 2 =*/42).string(message.reservedName[i]);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified EnumDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.EnumDescriptorProto
+                 * @static
+                 * @param {google.protobuf.IEnumDescriptorProto} message EnumDescriptorProto message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                EnumDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes an EnumDescriptorProto message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.EnumDescriptorProto
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                EnumDescriptorProto.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumDescriptorProto();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.name = reader.string();
+                                break;
+                            }
+                        case 2: {
+                                if (!(message.value && message.value.length))
+                                    message.value = [];
+                                message.value.push($root.google.protobuf.EnumValueDescriptorProto.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        case 3: {
+                                message.options = $root.google.protobuf.EnumOptions.decode(reader, reader.uint32());
+                                break;
+                            }
+                        case 4: {
+                                if (!(message.reservedRange && message.reservedRange.length))
+                                    message.reservedRange = [];
+                                message.reservedRange.push($root.google.protobuf.EnumDescriptorProto.EnumReservedRange.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        case 5: {
+                                if (!(message.reservedName && message.reservedName.length))
+                                    message.reservedName = [];
+                                message.reservedName.push(reader.string());
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes an EnumDescriptorProto message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.EnumDescriptorProto
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                EnumDescriptorProto.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies an EnumDescriptorProto message.
+                 * @function verify
+                 * @memberof google.protobuf.EnumDescriptorProto
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                EnumDescriptorProto.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.name != null && message.hasOwnProperty("name"))
+                        if (!$util.isString(message.name))
+                            return "name: string expected";
+                    if (message.value != null && message.hasOwnProperty("value")) {
+                        if (!Array.isArray(message.value))
+                            return "value: array expected";
+                        for (var i = 0; i < message.value.length; ++i) {
+                            var error = $root.google.protobuf.EnumValueDescriptorProto.verify(message.value[i]);
+                            if (error)
+                                return "value." + error;
+                        }
+                    }
+                    if (message.options != null && message.hasOwnProperty("options")) {
+                        var error = $root.google.protobuf.EnumOptions.verify(message.options);
+                        if (error)
+                            return "options." + error;
+                    }
+                    if (message.reservedRange != null && message.hasOwnProperty("reservedRange")) {
+                        if (!Array.isArray(message.reservedRange))
+                            return "reservedRange: array expected";
+                        for (var i = 0; i < message.reservedRange.length; ++i) {
+                            var error = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.verify(message.reservedRange[i]);
+                            if (error)
+                                return "reservedRange." + error;
+                        }
+                    }
+                    if (message.reservedName != null && message.hasOwnProperty("reservedName")) {
+                        if (!Array.isArray(message.reservedName))
+                            return "reservedName: array expected";
+                        for (var i = 0; i < message.reservedName.length; ++i)
+                            if (!$util.isString(message.reservedName[i]))
+                                return "reservedName: string[] expected";
+                    }
+                    return null;
+                };
+    
+                /**
+                 * Creates an EnumDescriptorProto message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.EnumDescriptorProto
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto
+                 */
+                EnumDescriptorProto.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.EnumDescriptorProto)
+                        return object;
+                    var message = new $root.google.protobuf.EnumDescriptorProto();
+                    if (object.name != null)
+                        message.name = String(object.name);
+                    if (object.value) {
+                        if (!Array.isArray(object.value))
+                            throw TypeError(".google.protobuf.EnumDescriptorProto.value: array expected");
+                        message.value = [];
+                        for (var i = 0; i < object.value.length; ++i) {
+                            if (typeof object.value[i] !== "object")
+                                throw TypeError(".google.protobuf.EnumDescriptorProto.value: object expected");
+                            message.value[i] = $root.google.protobuf.EnumValueDescriptorProto.fromObject(object.value[i]);
+                        }
+                    }
+                    if (object.options != null) {
+                        if (typeof object.options !== "object")
+                            throw TypeError(".google.protobuf.EnumDescriptorProto.options: object expected");
+                        message.options = $root.google.protobuf.EnumOptions.fromObject(object.options);
+                    }
+                    if (object.reservedRange) {
+                        if (!Array.isArray(object.reservedRange))
+                            throw TypeError(".google.protobuf.EnumDescriptorProto.reservedRange: array expected");
+                        message.reservedRange = [];
+                        for (var i = 0; i < object.reservedRange.length; ++i) {
+                            if (typeof object.reservedRange[i] !== "object")
+                                throw TypeError(".google.protobuf.EnumDescriptorProto.reservedRange: object expected");
+                            message.reservedRange[i] = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.fromObject(object.reservedRange[i]);
+                        }
+                    }
+                    if (object.reservedName) {
+                        if (!Array.isArray(object.reservedName))
+                            throw TypeError(".google.protobuf.EnumDescriptorProto.reservedName: array expected");
+                        message.reservedName = [];
+                        for (var i = 0; i < object.reservedName.length; ++i)
+                            message.reservedName[i] = String(object.reservedName[i]);
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from an EnumDescriptorProto message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.EnumDescriptorProto
+                 * @static
+                 * @param {google.protobuf.EnumDescriptorProto} message EnumDescriptorProto
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                EnumDescriptorProto.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults) {
+                        object.value = [];
+                        object.reservedRange = [];
+                        object.reservedName = [];
+                    }
+                    if (options.defaults) {
+                        object.name = "";
+                        object.options = null;
+                    }
+                    if (message.name != null && message.hasOwnProperty("name"))
+                        object.name = message.name;
+                    if (message.value && message.value.length) {
+                        object.value = [];
+                        for (var j = 0; j < message.value.length; ++j)
+                            object.value[j] = $root.google.protobuf.EnumValueDescriptorProto.toObject(message.value[j], options);
+                    }
+                    if (message.options != null && message.hasOwnProperty("options"))
+                        object.options = $root.google.protobuf.EnumOptions.toObject(message.options, options);
+                    if (message.reservedRange && message.reservedRange.length) {
+                        object.reservedRange = [];
+                        for (var j = 0; j < message.reservedRange.length; ++j)
+                            object.reservedRange[j] = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.toObject(message.reservedRange[j], options);
+                    }
+                    if (message.reservedName && message.reservedName.length) {
+                        object.reservedName = [];
+                        for (var j = 0; j < message.reservedName.length; ++j)
+                            object.reservedName[j] = message.reservedName[j];
+                    }
+                    return object;
+                };
+    
+                /**
+                 * Converts this EnumDescriptorProto to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.EnumDescriptorProto
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                EnumDescriptorProto.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for EnumDescriptorProto
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.EnumDescriptorProto
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                EnumDescriptorProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.EnumDescriptorProto";
+                };
+    
+                EnumDescriptorProto.EnumReservedRange = (function() {
+    
+                    /**
+                     * Properties of an EnumReservedRange.
+                     * @memberof google.protobuf.EnumDescriptorProto
+                     * @interface IEnumReservedRange
+                     * @property {number|null} [start] EnumReservedRange start
+                     * @property {number|null} [end] EnumReservedRange end
+                     */
+    
+                    /**
+                     * Constructs a new EnumReservedRange.
+                     * @memberof google.protobuf.EnumDescriptorProto
+                     * @classdesc Represents an EnumReservedRange.
+                     * @implements IEnumReservedRange
+                     * @constructor
+                     * @param {google.protobuf.EnumDescriptorProto.IEnumReservedRange=} [properties] Properties to set
+                     */
+                    function EnumReservedRange(properties) {
+                        if (properties)
+                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                if (properties[keys[i]] != null)
+                                    this[keys[i]] = properties[keys[i]];
+                    }
+    
+                    /**
+                     * EnumReservedRange start.
+                     * @member {number} start
+                     * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange
+                     * @instance
+                     */
+                    EnumReservedRange.prototype.start = 0;
+    
+                    /**
+                     * EnumReservedRange end.
+                     * @member {number} end
+                     * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange
+                     * @instance
+                     */
+                    EnumReservedRange.prototype.end = 0;
+    
+                    /**
+                     * Creates a new EnumReservedRange instance using the specified properties.
+                     * @function create
+                     * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange
+                     * @static
+                     * @param {google.protobuf.EnumDescriptorProto.IEnumReservedRange=} [properties] Properties to set
+                     * @returns {google.protobuf.EnumDescriptorProto.EnumReservedRange} EnumReservedRange instance
+                     */
+                    EnumReservedRange.create = function create(properties) {
+                        return new EnumReservedRange(properties);
+                    };
+    
+                    /**
+                     * Encodes the specified EnumReservedRange message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages.
+                     * @function encode
+                     * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange
+                     * @static
+                     * @param {google.protobuf.EnumDescriptorProto.IEnumReservedRange} message EnumReservedRange message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    EnumReservedRange.encode = function encode(message, writer) {
+                        if (!writer)
+                            writer = $Writer.create();
+                        if (message.start != null && Object.hasOwnProperty.call(message, "start"))
+                            writer.uint32(/* id 1, wireType 0 =*/8).int32(message.start);
+                        if (message.end != null && Object.hasOwnProperty.call(message, "end"))
+                            writer.uint32(/* id 2, wireType 0 =*/16).int32(message.end);
+                        return writer;
+                    };
+    
+                    /**
+                     * Encodes the specified EnumReservedRange message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.EnumReservedRange.verify|verify} messages.
+                     * @function encodeDelimited
+                     * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange
+                     * @static
+                     * @param {google.protobuf.EnumDescriptorProto.IEnumReservedRange} message EnumReservedRange message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    EnumReservedRange.encodeDelimited = function encodeDelimited(message, writer) {
+                        return this.encode(message, writer).ldelim();
+                    };
+    
+                    /**
+                     * Decodes an EnumReservedRange message from the specified reader or buffer.
+                     * @function decode
+                     * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @param {number} [length] Message length if known beforehand
+                     * @returns {google.protobuf.EnumDescriptorProto.EnumReservedRange} EnumReservedRange
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    EnumReservedRange.decode = function decode(reader, length, error) {
+                        if (!(reader instanceof $Reader))
+                            reader = $Reader.create(reader);
+                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumDescriptorProto.EnumReservedRange();
+                        while (reader.pos < end) {
+                            var tag = reader.uint32();
+                            if (tag === error)
+                                break;
+                            switch (tag >>> 3) {
+                            case 1: {
+                                    message.start = reader.int32();
+                                    break;
+                                }
+                            case 2: {
+                                    message.end = reader.int32();
+                                    break;
+                                }
+                            default:
+                                reader.skipType(tag & 7);
+                                break;
+                            }
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Decodes an EnumReservedRange message from the specified reader or buffer, length delimited.
+                     * @function decodeDelimited
+                     * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @returns {google.protobuf.EnumDescriptorProto.EnumReservedRange} EnumReservedRange
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    EnumReservedRange.decodeDelimited = function decodeDelimited(reader) {
+                        if (!(reader instanceof $Reader))
+                            reader = new $Reader(reader);
+                        return this.decode(reader, reader.uint32());
+                    };
+    
+                    /**
+                     * Verifies an EnumReservedRange message.
+                     * @function verify
+                     * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange
+                     * @static
+                     * @param {Object.<string,*>} message Plain object to verify
+                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                     */
+                    EnumReservedRange.verify = function verify(message) {
+                        if (typeof message !== "object" || message === null)
+                            return "object expected";
+                        if (message.start != null && message.hasOwnProperty("start"))
+                            if (!$util.isInteger(message.start))
+                                return "start: integer expected";
+                        if (message.end != null && message.hasOwnProperty("end"))
+                            if (!$util.isInteger(message.end))
+                                return "end: integer expected";
+                        return null;
+                    };
+    
+                    /**
+                     * Creates an EnumReservedRange message from a plain object. Also converts values to their respective internal types.
+                     * @function fromObject
+                     * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange
+                     * @static
+                     * @param {Object.<string,*>} object Plain object
+                     * @returns {google.protobuf.EnumDescriptorProto.EnumReservedRange} EnumReservedRange
+                     */
+                    EnumReservedRange.fromObject = function fromObject(object) {
+                        if (object instanceof $root.google.protobuf.EnumDescriptorProto.EnumReservedRange)
+                            return object;
+                        var message = new $root.google.protobuf.EnumDescriptorProto.EnumReservedRange();
+                        if (object.start != null)
+                            message.start = object.start | 0;
+                        if (object.end != null)
+                            message.end = object.end | 0;
+                        return message;
+                    };
+    
+                    /**
+                     * Creates a plain object from an EnumReservedRange message. Also converts values to other types if specified.
+                     * @function toObject
+                     * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange
+                     * @static
+                     * @param {google.protobuf.EnumDescriptorProto.EnumReservedRange} message EnumReservedRange
+                     * @param {$protobuf.IConversionOptions} [options] Conversion options
+                     * @returns {Object.<string,*>} Plain object
+                     */
+                    EnumReservedRange.toObject = function toObject(message, options) {
+                        if (!options)
+                            options = {};
+                        var object = {};
+                        if (options.defaults) {
+                            object.start = 0;
+                            object.end = 0;
+                        }
+                        if (message.start != null && message.hasOwnProperty("start"))
+                            object.start = message.start;
+                        if (message.end != null && message.hasOwnProperty("end"))
+                            object.end = message.end;
+                        return object;
+                    };
+    
+                    /**
+                     * Converts this EnumReservedRange to JSON.
+                     * @function toJSON
+                     * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange
+                     * @instance
+                     * @returns {Object.<string,*>} JSON object
+                     */
+                    EnumReservedRange.prototype.toJSON = function toJSON() {
+                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                    };
+    
+                    /**
+                     * Gets the default type url for EnumReservedRange
+                     * @function getTypeUrl
+                     * @memberof google.protobuf.EnumDescriptorProto.EnumReservedRange
+                     * @static
+                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns {string} The default type url
+                     */
+                    EnumReservedRange.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                        if (typeUrlPrefix === undefined) {
+                            typeUrlPrefix = "type.googleapis.com";
+                        }
+                        return typeUrlPrefix + "/google.protobuf.EnumDescriptorProto.EnumReservedRange";
+                    };
+    
+                    return EnumReservedRange;
+                })();
+    
+                return EnumDescriptorProto;
+            })();
+    
+            protobuf.EnumValueDescriptorProto = (function() {
+    
+                /**
+                 * Properties of an EnumValueDescriptorProto.
+                 * @memberof google.protobuf
+                 * @interface IEnumValueDescriptorProto
+                 * @property {string|null} [name] EnumValueDescriptorProto name
+                 * @property {number|null} [number] EnumValueDescriptorProto number
+                 * @property {google.protobuf.IEnumValueOptions|null} [options] EnumValueDescriptorProto options
+                 */
+    
+                /**
+                 * Constructs a new EnumValueDescriptorProto.
+                 * @memberof google.protobuf
+                 * @classdesc Represents an EnumValueDescriptorProto.
+                 * @implements IEnumValueDescriptorProto
+                 * @constructor
+                 * @param {google.protobuf.IEnumValueDescriptorProto=} [properties] Properties to set
+                 */
+                function EnumValueDescriptorProto(properties) {
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * EnumValueDescriptorProto name.
+                 * @member {string} name
+                 * @memberof google.protobuf.EnumValueDescriptorProto
+                 * @instance
+                 */
+                EnumValueDescriptorProto.prototype.name = "";
+    
+                /**
+                 * EnumValueDescriptorProto number.
+                 * @member {number} number
+                 * @memberof google.protobuf.EnumValueDescriptorProto
+                 * @instance
+                 */
+                EnumValueDescriptorProto.prototype.number = 0;
+    
+                /**
+                 * EnumValueDescriptorProto options.
+                 * @member {google.protobuf.IEnumValueOptions|null|undefined} options
+                 * @memberof google.protobuf.EnumValueDescriptorProto
+                 * @instance
+                 */
+                EnumValueDescriptorProto.prototype.options = null;
+    
+                /**
+                 * Creates a new EnumValueDescriptorProto instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.EnumValueDescriptorProto
+                 * @static
+                 * @param {google.protobuf.IEnumValueDescriptorProto=} [properties] Properties to set
+                 * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto instance
+                 */
+                EnumValueDescriptorProto.create = function create(properties) {
+                    return new EnumValueDescriptorProto(properties);
+                };
+    
+                /**
+                 * Encodes the specified EnumValueDescriptorProto message. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.EnumValueDescriptorProto
+                 * @static
+                 * @param {google.protobuf.IEnumValueDescriptorProto} message EnumValueDescriptorProto message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                EnumValueDescriptorProto.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.name != null && Object.hasOwnProperty.call(message, "name"))
+                        writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);
+                    if (message.number != null && Object.hasOwnProperty.call(message, "number"))
+                        writer.uint32(/* id 2, wireType 0 =*/16).int32(message.number);
+                    if (message.options != null && Object.hasOwnProperty.call(message, "options"))
+                        $root.google.protobuf.EnumValueOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified EnumValueDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.EnumValueDescriptorProto
+                 * @static
+                 * @param {google.protobuf.IEnumValueDescriptorProto} message EnumValueDescriptorProto message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                EnumValueDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes an EnumValueDescriptorProto message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.EnumValueDescriptorProto
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                EnumValueDescriptorProto.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumValueDescriptorProto();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.name = reader.string();
+                                break;
+                            }
+                        case 2: {
+                                message.number = reader.int32();
+                                break;
+                            }
+                        case 3: {
+                                message.options = $root.google.protobuf.EnumValueOptions.decode(reader, reader.uint32());
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes an EnumValueDescriptorProto message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.EnumValueDescriptorProto
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                EnumValueDescriptorProto.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies an EnumValueDescriptorProto message.
+                 * @function verify
+                 * @memberof google.protobuf.EnumValueDescriptorProto
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                EnumValueDescriptorProto.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.name != null && message.hasOwnProperty("name"))
+                        if (!$util.isString(message.name))
+                            return "name: string expected";
+                    if (message.number != null && message.hasOwnProperty("number"))
+                        if (!$util.isInteger(message.number))
+                            return "number: integer expected";
+                    if (message.options != null && message.hasOwnProperty("options")) {
+                        var error = $root.google.protobuf.EnumValueOptions.verify(message.options);
+                        if (error)
+                            return "options." + error;
+                    }
+                    return null;
+                };
+    
+                /**
+                 * Creates an EnumValueDescriptorProto message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.EnumValueDescriptorProto
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto
+                 */
+                EnumValueDescriptorProto.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.EnumValueDescriptorProto)
+                        return object;
+                    var message = new $root.google.protobuf.EnumValueDescriptorProto();
+                    if (object.name != null)
+                        message.name = String(object.name);
+                    if (object.number != null)
+                        message.number = object.number | 0;
+                    if (object.options != null) {
+                        if (typeof object.options !== "object")
+                            throw TypeError(".google.protobuf.EnumValueDescriptorProto.options: object expected");
+                        message.options = $root.google.protobuf.EnumValueOptions.fromObject(object.options);
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from an EnumValueDescriptorProto message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.EnumValueDescriptorProto
+                 * @static
+                 * @param {google.protobuf.EnumValueDescriptorProto} message EnumValueDescriptorProto
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                EnumValueDescriptorProto.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.defaults) {
+                        object.name = "";
+                        object.number = 0;
+                        object.options = null;
+                    }
+                    if (message.name != null && message.hasOwnProperty("name"))
+                        object.name = message.name;
+                    if (message.number != null && message.hasOwnProperty("number"))
+                        object.number = message.number;
+                    if (message.options != null && message.hasOwnProperty("options"))
+                        object.options = $root.google.protobuf.EnumValueOptions.toObject(message.options, options);
+                    return object;
+                };
+    
+                /**
+                 * Converts this EnumValueDescriptorProto to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.EnumValueDescriptorProto
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                EnumValueDescriptorProto.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for EnumValueDescriptorProto
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.EnumValueDescriptorProto
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                EnumValueDescriptorProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.EnumValueDescriptorProto";
+                };
+    
+                return EnumValueDescriptorProto;
+            })();
+    
+            protobuf.ServiceDescriptorProto = (function() {
+    
+                /**
+                 * Properties of a ServiceDescriptorProto.
+                 * @memberof google.protobuf
+                 * @interface IServiceDescriptorProto
+                 * @property {string|null} [name] ServiceDescriptorProto name
+                 * @property {Array.<google.protobuf.IMethodDescriptorProto>|null} [method] ServiceDescriptorProto method
+                 * @property {google.protobuf.IServiceOptions|null} [options] ServiceDescriptorProto options
+                 */
+    
+                /**
+                 * Constructs a new ServiceDescriptorProto.
+                 * @memberof google.protobuf
+                 * @classdesc Represents a ServiceDescriptorProto.
+                 * @implements IServiceDescriptorProto
+                 * @constructor
+                 * @param {google.protobuf.IServiceDescriptorProto=} [properties] Properties to set
+                 */
+                function ServiceDescriptorProto(properties) {
+                    this.method = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * ServiceDescriptorProto name.
+                 * @member {string} name
+                 * @memberof google.protobuf.ServiceDescriptorProto
+                 * @instance
+                 */
+                ServiceDescriptorProto.prototype.name = "";
+    
+                /**
+                 * ServiceDescriptorProto method.
+                 * @member {Array.<google.protobuf.IMethodDescriptorProto>} method
+                 * @memberof google.protobuf.ServiceDescriptorProto
+                 * @instance
+                 */
+                ServiceDescriptorProto.prototype.method = $util.emptyArray;
+    
+                /**
+                 * ServiceDescriptorProto options.
+                 * @member {google.protobuf.IServiceOptions|null|undefined} options
+                 * @memberof google.protobuf.ServiceDescriptorProto
+                 * @instance
+                 */
+                ServiceDescriptorProto.prototype.options = null;
+    
+                /**
+                 * Creates a new ServiceDescriptorProto instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.ServiceDescriptorProto
+                 * @static
+                 * @param {google.protobuf.IServiceDescriptorProto=} [properties] Properties to set
+                 * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto instance
+                 */
+                ServiceDescriptorProto.create = function create(properties) {
+                    return new ServiceDescriptorProto(properties);
+                };
+    
+                /**
+                 * Encodes the specified ServiceDescriptorProto message. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.ServiceDescriptorProto
+                 * @static
+                 * @param {google.protobuf.IServiceDescriptorProto} message ServiceDescriptorProto message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                ServiceDescriptorProto.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.name != null && Object.hasOwnProperty.call(message, "name"))
+                        writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);
+                    if (message.method != null && message.method.length)
+                        for (var i = 0; i < message.method.length; ++i)
+                            $root.google.protobuf.MethodDescriptorProto.encode(message.method[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+                    if (message.options != null && Object.hasOwnProperty.call(message, "options"))
+                        $root.google.protobuf.ServiceOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified ServiceDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.ServiceDescriptorProto
+                 * @static
+                 * @param {google.protobuf.IServiceDescriptorProto} message ServiceDescriptorProto message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                ServiceDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a ServiceDescriptorProto message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.ServiceDescriptorProto
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                ServiceDescriptorProto.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ServiceDescriptorProto();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.name = reader.string();
+                                break;
+                            }
+                        case 2: {
+                                if (!(message.method && message.method.length))
+                                    message.method = [];
+                                message.method.push($root.google.protobuf.MethodDescriptorProto.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        case 3: {
+                                message.options = $root.google.protobuf.ServiceOptions.decode(reader, reader.uint32());
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a ServiceDescriptorProto message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.ServiceDescriptorProto
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                ServiceDescriptorProto.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a ServiceDescriptorProto message.
+                 * @function verify
+                 * @memberof google.protobuf.ServiceDescriptorProto
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                ServiceDescriptorProto.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.name != null && message.hasOwnProperty("name"))
+                        if (!$util.isString(message.name))
+                            return "name: string expected";
+                    if (message.method != null && message.hasOwnProperty("method")) {
+                        if (!Array.isArray(message.method))
+                            return "method: array expected";
+                        for (var i = 0; i < message.method.length; ++i) {
+                            var error = $root.google.protobuf.MethodDescriptorProto.verify(message.method[i]);
+                            if (error)
+                                return "method." + error;
+                        }
+                    }
+                    if (message.options != null && message.hasOwnProperty("options")) {
+                        var error = $root.google.protobuf.ServiceOptions.verify(message.options);
+                        if (error)
+                            return "options." + error;
+                    }
+                    return null;
+                };
+    
+                /**
+                 * Creates a ServiceDescriptorProto message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.ServiceDescriptorProto
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto
+                 */
+                ServiceDescriptorProto.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.ServiceDescriptorProto)
+                        return object;
+                    var message = new $root.google.protobuf.ServiceDescriptorProto();
+                    if (object.name != null)
+                        message.name = String(object.name);
+                    if (object.method) {
+                        if (!Array.isArray(object.method))
+                            throw TypeError(".google.protobuf.ServiceDescriptorProto.method: array expected");
+                        message.method = [];
+                        for (var i = 0; i < object.method.length; ++i) {
+                            if (typeof object.method[i] !== "object")
+                                throw TypeError(".google.protobuf.ServiceDescriptorProto.method: object expected");
+                            message.method[i] = $root.google.protobuf.MethodDescriptorProto.fromObject(object.method[i]);
+                        }
+                    }
+                    if (object.options != null) {
+                        if (typeof object.options !== "object")
+                            throw TypeError(".google.protobuf.ServiceDescriptorProto.options: object expected");
+                        message.options = $root.google.protobuf.ServiceOptions.fromObject(object.options);
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a ServiceDescriptorProto message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.ServiceDescriptorProto
+                 * @static
+                 * @param {google.protobuf.ServiceDescriptorProto} message ServiceDescriptorProto
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                ServiceDescriptorProto.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults)
+                        object.method = [];
+                    if (options.defaults) {
+                        object.name = "";
+                        object.options = null;
+                    }
+                    if (message.name != null && message.hasOwnProperty("name"))
+                        object.name = message.name;
+                    if (message.method && message.method.length) {
+                        object.method = [];
+                        for (var j = 0; j < message.method.length; ++j)
+                            object.method[j] = $root.google.protobuf.MethodDescriptorProto.toObject(message.method[j], options);
+                    }
+                    if (message.options != null && message.hasOwnProperty("options"))
+                        object.options = $root.google.protobuf.ServiceOptions.toObject(message.options, options);
+                    return object;
+                };
+    
+                /**
+                 * Converts this ServiceDescriptorProto to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.ServiceDescriptorProto
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                ServiceDescriptorProto.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for ServiceDescriptorProto
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.ServiceDescriptorProto
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                ServiceDescriptorProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.ServiceDescriptorProto";
+                };
+    
+                return ServiceDescriptorProto;
+            })();
+    
+            protobuf.MethodDescriptorProto = (function() {
+    
+                /**
+                 * Properties of a MethodDescriptorProto.
+                 * @memberof google.protobuf
+                 * @interface IMethodDescriptorProto
+                 * @property {string|null} [name] MethodDescriptorProto name
+                 * @property {string|null} [inputType] MethodDescriptorProto inputType
+                 * @property {string|null} [outputType] MethodDescriptorProto outputType
+                 * @property {google.protobuf.IMethodOptions|null} [options] MethodDescriptorProto options
+                 * @property {boolean|null} [clientStreaming] MethodDescriptorProto clientStreaming
+                 * @property {boolean|null} [serverStreaming] MethodDescriptorProto serverStreaming
+                 */
+    
+                /**
+                 * Constructs a new MethodDescriptorProto.
+                 * @memberof google.protobuf
+                 * @classdesc Represents a MethodDescriptorProto.
+                 * @implements IMethodDescriptorProto
+                 * @constructor
+                 * @param {google.protobuf.IMethodDescriptorProto=} [properties] Properties to set
+                 */
+                function MethodDescriptorProto(properties) {
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * MethodDescriptorProto name.
+                 * @member {string} name
+                 * @memberof google.protobuf.MethodDescriptorProto
+                 * @instance
+                 */
+                MethodDescriptorProto.prototype.name = "";
+    
+                /**
+                 * MethodDescriptorProto inputType.
+                 * @member {string} inputType
+                 * @memberof google.protobuf.MethodDescriptorProto
+                 * @instance
+                 */
+                MethodDescriptorProto.prototype.inputType = "";
+    
+                /**
+                 * MethodDescriptorProto outputType.
+                 * @member {string} outputType
+                 * @memberof google.protobuf.MethodDescriptorProto
+                 * @instance
+                 */
+                MethodDescriptorProto.prototype.outputType = "";
+    
+                /**
+                 * MethodDescriptorProto options.
+                 * @member {google.protobuf.IMethodOptions|null|undefined} options
+                 * @memberof google.protobuf.MethodDescriptorProto
+                 * @instance
+                 */
+                MethodDescriptorProto.prototype.options = null;
+    
+                /**
+                 * MethodDescriptorProto clientStreaming.
+                 * @member {boolean} clientStreaming
+                 * @memberof google.protobuf.MethodDescriptorProto
+                 * @instance
+                 */
+                MethodDescriptorProto.prototype.clientStreaming = false;
+    
+                /**
+                 * MethodDescriptorProto serverStreaming.
+                 * @member {boolean} serverStreaming
+                 * @memberof google.protobuf.MethodDescriptorProto
+                 * @instance
+                 */
+                MethodDescriptorProto.prototype.serverStreaming = false;
+    
+                /**
+                 * Creates a new MethodDescriptorProto instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.MethodDescriptorProto
+                 * @static
+                 * @param {google.protobuf.IMethodDescriptorProto=} [properties] Properties to set
+                 * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto instance
+                 */
+                MethodDescriptorProto.create = function create(properties) {
+                    return new MethodDescriptorProto(properties);
+                };
+    
+                /**
+                 * Encodes the specified MethodDescriptorProto message. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.MethodDescriptorProto
+                 * @static
+                 * @param {google.protobuf.IMethodDescriptorProto} message MethodDescriptorProto message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                MethodDescriptorProto.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.name != null && Object.hasOwnProperty.call(message, "name"))
+                        writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);
+                    if (message.inputType != null && Object.hasOwnProperty.call(message, "inputType"))
+                        writer.uint32(/* id 2, wireType 2 =*/18).string(message.inputType);
+                    if (message.outputType != null && Object.hasOwnProperty.call(message, "outputType"))
+                        writer.uint32(/* id 3, wireType 2 =*/26).string(message.outputType);
+                    if (message.options != null && Object.hasOwnProperty.call(message, "options"))
+                        $root.google.protobuf.MethodOptions.encode(message.options, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
+                    if (message.clientStreaming != null && Object.hasOwnProperty.call(message, "clientStreaming"))
+                        writer.uint32(/* id 5, wireType 0 =*/40).bool(message.clientStreaming);
+                    if (message.serverStreaming != null && Object.hasOwnProperty.call(message, "serverStreaming"))
+                        writer.uint32(/* id 6, wireType 0 =*/48).bool(message.serverStreaming);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified MethodDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.MethodDescriptorProto
+                 * @static
+                 * @param {google.protobuf.IMethodDescriptorProto} message MethodDescriptorProto message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                MethodDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a MethodDescriptorProto message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.MethodDescriptorProto
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                MethodDescriptorProto.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MethodDescriptorProto();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.name = reader.string();
+                                break;
+                            }
+                        case 2: {
+                                message.inputType = reader.string();
+                                break;
+                            }
+                        case 3: {
+                                message.outputType = reader.string();
+                                break;
+                            }
+                        case 4: {
+                                message.options = $root.google.protobuf.MethodOptions.decode(reader, reader.uint32());
+                                break;
+                            }
+                        case 5: {
+                                message.clientStreaming = reader.bool();
+                                break;
+                            }
+                        case 6: {
+                                message.serverStreaming = reader.bool();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a MethodDescriptorProto message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.MethodDescriptorProto
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                MethodDescriptorProto.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a MethodDescriptorProto message.
+                 * @function verify
+                 * @memberof google.protobuf.MethodDescriptorProto
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                MethodDescriptorProto.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.name != null && message.hasOwnProperty("name"))
+                        if (!$util.isString(message.name))
+                            return "name: string expected";
+                    if (message.inputType != null && message.hasOwnProperty("inputType"))
+                        if (!$util.isString(message.inputType))
+                            return "inputType: string expected";
+                    if (message.outputType != null && message.hasOwnProperty("outputType"))
+                        if (!$util.isString(message.outputType))
+                            return "outputType: string expected";
+                    if (message.options != null && message.hasOwnProperty("options")) {
+                        var error = $root.google.protobuf.MethodOptions.verify(message.options);
+                        if (error)
+                            return "options." + error;
+                    }
+                    if (message.clientStreaming != null && message.hasOwnProperty("clientStreaming"))
+                        if (typeof message.clientStreaming !== "boolean")
+                            return "clientStreaming: boolean expected";
+                    if (message.serverStreaming != null && message.hasOwnProperty("serverStreaming"))
+                        if (typeof message.serverStreaming !== "boolean")
+                            return "serverStreaming: boolean expected";
+                    return null;
+                };
+    
+                /**
+                 * Creates a MethodDescriptorProto message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.MethodDescriptorProto
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto
+                 */
+                MethodDescriptorProto.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.MethodDescriptorProto)
+                        return object;
+                    var message = new $root.google.protobuf.MethodDescriptorProto();
+                    if (object.name != null)
+                        message.name = String(object.name);
+                    if (object.inputType != null)
+                        message.inputType = String(object.inputType);
+                    if (object.outputType != null)
+                        message.outputType = String(object.outputType);
+                    if (object.options != null) {
+                        if (typeof object.options !== "object")
+                            throw TypeError(".google.protobuf.MethodDescriptorProto.options: object expected");
+                        message.options = $root.google.protobuf.MethodOptions.fromObject(object.options);
+                    }
+                    if (object.clientStreaming != null)
+                        message.clientStreaming = Boolean(object.clientStreaming);
+                    if (object.serverStreaming != null)
+                        message.serverStreaming = Boolean(object.serverStreaming);
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a MethodDescriptorProto message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.MethodDescriptorProto
+                 * @static
+                 * @param {google.protobuf.MethodDescriptorProto} message MethodDescriptorProto
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                MethodDescriptorProto.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.defaults) {
+                        object.name = "";
+                        object.inputType = "";
+                        object.outputType = "";
+                        object.options = null;
+                        object.clientStreaming = false;
+                        object.serverStreaming = false;
+                    }
+                    if (message.name != null && message.hasOwnProperty("name"))
+                        object.name = message.name;
+                    if (message.inputType != null && message.hasOwnProperty("inputType"))
+                        object.inputType = message.inputType;
+                    if (message.outputType != null && message.hasOwnProperty("outputType"))
+                        object.outputType = message.outputType;
+                    if (message.options != null && message.hasOwnProperty("options"))
+                        object.options = $root.google.protobuf.MethodOptions.toObject(message.options, options);
+                    if (message.clientStreaming != null && message.hasOwnProperty("clientStreaming"))
+                        object.clientStreaming = message.clientStreaming;
+                    if (message.serverStreaming != null && message.hasOwnProperty("serverStreaming"))
+                        object.serverStreaming = message.serverStreaming;
+                    return object;
+                };
+    
+                /**
+                 * Converts this MethodDescriptorProto to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.MethodDescriptorProto
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                MethodDescriptorProto.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for MethodDescriptorProto
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.MethodDescriptorProto
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                MethodDescriptorProto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.MethodDescriptorProto";
+                };
+    
+                return MethodDescriptorProto;
+            })();
+    
+            protobuf.FileOptions = (function() {
+    
+                /**
+                 * Properties of a FileOptions.
+                 * @memberof google.protobuf
+                 * @interface IFileOptions
+                 * @property {string|null} [javaPackage] FileOptions javaPackage
+                 * @property {string|null} [javaOuterClassname] FileOptions javaOuterClassname
+                 * @property {boolean|null} [javaMultipleFiles] FileOptions javaMultipleFiles
+                 * @property {boolean|null} [javaGenerateEqualsAndHash] FileOptions javaGenerateEqualsAndHash
+                 * @property {boolean|null} [javaStringCheckUtf8] FileOptions javaStringCheckUtf8
+                 * @property {google.protobuf.FileOptions.OptimizeMode|null} [optimizeFor] FileOptions optimizeFor
+                 * @property {string|null} [goPackage] FileOptions goPackage
+                 * @property {boolean|null} [ccGenericServices] FileOptions ccGenericServices
+                 * @property {boolean|null} [javaGenericServices] FileOptions javaGenericServices
+                 * @property {boolean|null} [pyGenericServices] FileOptions pyGenericServices
+                 * @property {boolean|null} [deprecated] FileOptions deprecated
+                 * @property {boolean|null} [ccEnableArenas] FileOptions ccEnableArenas
+                 * @property {string|null} [objcClassPrefix] FileOptions objcClassPrefix
+                 * @property {string|null} [csharpNamespace] FileOptions csharpNamespace
+                 * @property {string|null} [swiftPrefix] FileOptions swiftPrefix
+                 * @property {string|null} [phpClassPrefix] FileOptions phpClassPrefix
+                 * @property {string|null} [phpNamespace] FileOptions phpNamespace
+                 * @property {string|null} [phpMetadataNamespace] FileOptions phpMetadataNamespace
+                 * @property {string|null} [rubyPackage] FileOptions rubyPackage
+                 * @property {google.protobuf.IFeatureSet|null} [features] FileOptions features
+                 * @property {Array.<google.protobuf.IUninterpretedOption>|null} [uninterpretedOption] FileOptions uninterpretedOption
+                 */
+    
+                /**
+                 * Constructs a new FileOptions.
+                 * @memberof google.protobuf
+                 * @classdesc Represents a FileOptions.
+                 * @implements IFileOptions
+                 * @constructor
+                 * @param {google.protobuf.IFileOptions=} [properties] Properties to set
+                 */
+                function FileOptions(properties) {
+                    this.uninterpretedOption = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * FileOptions javaPackage.
+                 * @member {string} javaPackage
+                 * @memberof google.protobuf.FileOptions
+                 * @instance
+                 */
+                FileOptions.prototype.javaPackage = "";
+    
+                /**
+                 * FileOptions javaOuterClassname.
+                 * @member {string} javaOuterClassname
+                 * @memberof google.protobuf.FileOptions
+                 * @instance
+                 */
+                FileOptions.prototype.javaOuterClassname = "";
+    
+                /**
+                 * FileOptions javaMultipleFiles.
+                 * @member {boolean} javaMultipleFiles
+                 * @memberof google.protobuf.FileOptions
+                 * @instance
+                 */
+                FileOptions.prototype.javaMultipleFiles = false;
+    
+                /**
+                 * FileOptions javaGenerateEqualsAndHash.
+                 * @member {boolean} javaGenerateEqualsAndHash
+                 * @memberof google.protobuf.FileOptions
+                 * @instance
+                 */
+                FileOptions.prototype.javaGenerateEqualsAndHash = false;
+    
+                /**
+                 * FileOptions javaStringCheckUtf8.
+                 * @member {boolean} javaStringCheckUtf8
+                 * @memberof google.protobuf.FileOptions
+                 * @instance
+                 */
+                FileOptions.prototype.javaStringCheckUtf8 = false;
+    
+                /**
+                 * FileOptions optimizeFor.
+                 * @member {google.protobuf.FileOptions.OptimizeMode} optimizeFor
+                 * @memberof google.protobuf.FileOptions
+                 * @instance
+                 */
+                FileOptions.prototype.optimizeFor = 1;
+    
+                /**
+                 * FileOptions goPackage.
+                 * @member {string} goPackage
+                 * @memberof google.protobuf.FileOptions
+                 * @instance
+                 */
+                FileOptions.prototype.goPackage = "";
+    
+                /**
+                 * FileOptions ccGenericServices.
+                 * @member {boolean} ccGenericServices
+                 * @memberof google.protobuf.FileOptions
+                 * @instance
+                 */
+                FileOptions.prototype.ccGenericServices = false;
+    
+                /**
+                 * FileOptions javaGenericServices.
+                 * @member {boolean} javaGenericServices
+                 * @memberof google.protobuf.FileOptions
+                 * @instance
+                 */
+                FileOptions.prototype.javaGenericServices = false;
+    
+                /**
+                 * FileOptions pyGenericServices.
+                 * @member {boolean} pyGenericServices
+                 * @memberof google.protobuf.FileOptions
+                 * @instance
+                 */
+                FileOptions.prototype.pyGenericServices = false;
+    
+                /**
+                 * FileOptions deprecated.
+                 * @member {boolean} deprecated
+                 * @memberof google.protobuf.FileOptions
+                 * @instance
+                 */
+                FileOptions.prototype.deprecated = false;
+    
+                /**
+                 * FileOptions ccEnableArenas.
+                 * @member {boolean} ccEnableArenas
+                 * @memberof google.protobuf.FileOptions
+                 * @instance
+                 */
+                FileOptions.prototype.ccEnableArenas = true;
+    
+                /**
+                 * FileOptions objcClassPrefix.
+                 * @member {string} objcClassPrefix
+                 * @memberof google.protobuf.FileOptions
+                 * @instance
+                 */
+                FileOptions.prototype.objcClassPrefix = "";
+    
+                /**
+                 * FileOptions csharpNamespace.
+                 * @member {string} csharpNamespace
+                 * @memberof google.protobuf.FileOptions
+                 * @instance
+                 */
+                FileOptions.prototype.csharpNamespace = "";
+    
+                /**
+                 * FileOptions swiftPrefix.
+                 * @member {string} swiftPrefix
+                 * @memberof google.protobuf.FileOptions
+                 * @instance
+                 */
+                FileOptions.prototype.swiftPrefix = "";
+    
+                /**
+                 * FileOptions phpClassPrefix.
+                 * @member {string} phpClassPrefix
+                 * @memberof google.protobuf.FileOptions
+                 * @instance
+                 */
+                FileOptions.prototype.phpClassPrefix = "";
+    
+                /**
+                 * FileOptions phpNamespace.
+                 * @member {string} phpNamespace
+                 * @memberof google.protobuf.FileOptions
+                 * @instance
+                 */
+                FileOptions.prototype.phpNamespace = "";
+    
+                /**
+                 * FileOptions phpMetadataNamespace.
+                 * @member {string} phpMetadataNamespace
+                 * @memberof google.protobuf.FileOptions
+                 * @instance
+                 */
+                FileOptions.prototype.phpMetadataNamespace = "";
+    
+                /**
+                 * FileOptions rubyPackage.
+                 * @member {string} rubyPackage
+                 * @memberof google.protobuf.FileOptions
+                 * @instance
+                 */
+                FileOptions.prototype.rubyPackage = "";
+    
+                /**
+                 * FileOptions features.
+                 * @member {google.protobuf.IFeatureSet|null|undefined} features
+                 * @memberof google.protobuf.FileOptions
+                 * @instance
+                 */
+                FileOptions.prototype.features = null;
+    
+                /**
+                 * FileOptions uninterpretedOption.
+                 * @member {Array.<google.protobuf.IUninterpretedOption>} uninterpretedOption
+                 * @memberof google.protobuf.FileOptions
+                 * @instance
+                 */
+                FileOptions.prototype.uninterpretedOption = $util.emptyArray;
+    
+                /**
+                 * Creates a new FileOptions instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.FileOptions
+                 * @static
+                 * @param {google.protobuf.IFileOptions=} [properties] Properties to set
+                 * @returns {google.protobuf.FileOptions} FileOptions instance
+                 */
+                FileOptions.create = function create(properties) {
+                    return new FileOptions(properties);
+                };
+    
+                /**
+                 * Encodes the specified FileOptions message. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.FileOptions
+                 * @static
+                 * @param {google.protobuf.IFileOptions} message FileOptions message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                FileOptions.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.javaPackage != null && Object.hasOwnProperty.call(message, "javaPackage"))
+                        writer.uint32(/* id 1, wireType 2 =*/10).string(message.javaPackage);
+                    if (message.javaOuterClassname != null && Object.hasOwnProperty.call(message, "javaOuterClassname"))
+                        writer.uint32(/* id 8, wireType 2 =*/66).string(message.javaOuterClassname);
+                    if (message.optimizeFor != null && Object.hasOwnProperty.call(message, "optimizeFor"))
+                        writer.uint32(/* id 9, wireType 0 =*/72).int32(message.optimizeFor);
+                    if (message.javaMultipleFiles != null && Object.hasOwnProperty.call(message, "javaMultipleFiles"))
+                        writer.uint32(/* id 10, wireType 0 =*/80).bool(message.javaMultipleFiles);
+                    if (message.goPackage != null && Object.hasOwnProperty.call(message, "goPackage"))
+                        writer.uint32(/* id 11, wireType 2 =*/90).string(message.goPackage);
+                    if (message.ccGenericServices != null && Object.hasOwnProperty.call(message, "ccGenericServices"))
+                        writer.uint32(/* id 16, wireType 0 =*/128).bool(message.ccGenericServices);
+                    if (message.javaGenericServices != null && Object.hasOwnProperty.call(message, "javaGenericServices"))
+                        writer.uint32(/* id 17, wireType 0 =*/136).bool(message.javaGenericServices);
+                    if (message.pyGenericServices != null && Object.hasOwnProperty.call(message, "pyGenericServices"))
+                        writer.uint32(/* id 18, wireType 0 =*/144).bool(message.pyGenericServices);
+                    if (message.javaGenerateEqualsAndHash != null && Object.hasOwnProperty.call(message, "javaGenerateEqualsAndHash"))
+                        writer.uint32(/* id 20, wireType 0 =*/160).bool(message.javaGenerateEqualsAndHash);
+                    if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated"))
+                        writer.uint32(/* id 23, wireType 0 =*/184).bool(message.deprecated);
+                    if (message.javaStringCheckUtf8 != null && Object.hasOwnProperty.call(message, "javaStringCheckUtf8"))
+                        writer.uint32(/* id 27, wireType 0 =*/216).bool(message.javaStringCheckUtf8);
+                    if (message.ccEnableArenas != null && Object.hasOwnProperty.call(message, "ccEnableArenas"))
+                        writer.uint32(/* id 31, wireType 0 =*/248).bool(message.ccEnableArenas);
+                    if (message.objcClassPrefix != null && Object.hasOwnProperty.call(message, "objcClassPrefix"))
+                        writer.uint32(/* id 36, wireType 2 =*/290).string(message.objcClassPrefix);
+                    if (message.csharpNamespace != null && Object.hasOwnProperty.call(message, "csharpNamespace"))
+                        writer.uint32(/* id 37, wireType 2 =*/298).string(message.csharpNamespace);
+                    if (message.swiftPrefix != null && Object.hasOwnProperty.call(message, "swiftPrefix"))
+                        writer.uint32(/* id 39, wireType 2 =*/314).string(message.swiftPrefix);
+                    if (message.phpClassPrefix != null && Object.hasOwnProperty.call(message, "phpClassPrefix"))
+                        writer.uint32(/* id 40, wireType 2 =*/322).string(message.phpClassPrefix);
+                    if (message.phpNamespace != null && Object.hasOwnProperty.call(message, "phpNamespace"))
+                        writer.uint32(/* id 41, wireType 2 =*/330).string(message.phpNamespace);
+                    if (message.phpMetadataNamespace != null && Object.hasOwnProperty.call(message, "phpMetadataNamespace"))
+                        writer.uint32(/* id 44, wireType 2 =*/354).string(message.phpMetadataNamespace);
+                    if (message.rubyPackage != null && Object.hasOwnProperty.call(message, "rubyPackage"))
+                        writer.uint32(/* id 45, wireType 2 =*/362).string(message.rubyPackage);
+                    if (message.features != null && Object.hasOwnProperty.call(message, "features"))
+                        $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 50, wireType 2 =*/402).fork()).ldelim();
+                    if (message.uninterpretedOption != null && message.uninterpretedOption.length)
+                        for (var i = 0; i < message.uninterpretedOption.length; ++i)
+                            $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim();
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified FileOptions message, length delimited. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.FileOptions
+                 * @static
+                 * @param {google.protobuf.IFileOptions} message FileOptions message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                FileOptions.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a FileOptions message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.FileOptions
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.FileOptions} FileOptions
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                FileOptions.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileOptions();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.javaPackage = reader.string();
+                                break;
+                            }
+                        case 8: {
+                                message.javaOuterClassname = reader.string();
+                                break;
+                            }
+                        case 10: {
+                                message.javaMultipleFiles = reader.bool();
+                                break;
+                            }
+                        case 20: {
+                                message.javaGenerateEqualsAndHash = reader.bool();
+                                break;
+                            }
+                        case 27: {
+                                message.javaStringCheckUtf8 = reader.bool();
+                                break;
+                            }
+                        case 9: {
+                                message.optimizeFor = reader.int32();
+                                break;
+                            }
+                        case 11: {
+                                message.goPackage = reader.string();
+                                break;
+                            }
+                        case 16: {
+                                message.ccGenericServices = reader.bool();
+                                break;
+                            }
+                        case 17: {
+                                message.javaGenericServices = reader.bool();
+                                break;
+                            }
+                        case 18: {
+                                message.pyGenericServices = reader.bool();
+                                break;
+                            }
+                        case 23: {
+                                message.deprecated = reader.bool();
+                                break;
+                            }
+                        case 31: {
+                                message.ccEnableArenas = reader.bool();
+                                break;
+                            }
+                        case 36: {
+                                message.objcClassPrefix = reader.string();
+                                break;
+                            }
+                        case 37: {
+                                message.csharpNamespace = reader.string();
+                                break;
+                            }
+                        case 39: {
+                                message.swiftPrefix = reader.string();
+                                break;
+                            }
+                        case 40: {
+                                message.phpClassPrefix = reader.string();
+                                break;
+                            }
+                        case 41: {
+                                message.phpNamespace = reader.string();
+                                break;
+                            }
+                        case 44: {
+                                message.phpMetadataNamespace = reader.string();
+                                break;
+                            }
+                        case 45: {
+                                message.rubyPackage = reader.string();
+                                break;
+                            }
+                        case 50: {
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                break;
+                            }
+                        case 999: {
+                                if (!(message.uninterpretedOption && message.uninterpretedOption.length))
+                                    message.uninterpretedOption = [];
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a FileOptions message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.FileOptions
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.FileOptions} FileOptions
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                FileOptions.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a FileOptions message.
+                 * @function verify
+                 * @memberof google.protobuf.FileOptions
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                FileOptions.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.javaPackage != null && message.hasOwnProperty("javaPackage"))
+                        if (!$util.isString(message.javaPackage))
+                            return "javaPackage: string expected";
+                    if (message.javaOuterClassname != null && message.hasOwnProperty("javaOuterClassname"))
+                        if (!$util.isString(message.javaOuterClassname))
+                            return "javaOuterClassname: string expected";
+                    if (message.javaMultipleFiles != null && message.hasOwnProperty("javaMultipleFiles"))
+                        if (typeof message.javaMultipleFiles !== "boolean")
+                            return "javaMultipleFiles: boolean expected";
+                    if (message.javaGenerateEqualsAndHash != null && message.hasOwnProperty("javaGenerateEqualsAndHash"))
+                        if (typeof message.javaGenerateEqualsAndHash !== "boolean")
+                            return "javaGenerateEqualsAndHash: boolean expected";
+                    if (message.javaStringCheckUtf8 != null && message.hasOwnProperty("javaStringCheckUtf8"))
+                        if (typeof message.javaStringCheckUtf8 !== "boolean")
+                            return "javaStringCheckUtf8: boolean expected";
+                    if (message.optimizeFor != null && message.hasOwnProperty("optimizeFor"))
+                        switch (message.optimizeFor) {
+                        default:
+                            return "optimizeFor: enum value expected";
+                        case 1:
+                        case 2:
+                        case 3:
+                            break;
+                        }
+                    if (message.goPackage != null && message.hasOwnProperty("goPackage"))
+                        if (!$util.isString(message.goPackage))
+                            return "goPackage: string expected";
+                    if (message.ccGenericServices != null && message.hasOwnProperty("ccGenericServices"))
+                        if (typeof message.ccGenericServices !== "boolean")
+                            return "ccGenericServices: boolean expected";
+                    if (message.javaGenericServices != null && message.hasOwnProperty("javaGenericServices"))
+                        if (typeof message.javaGenericServices !== "boolean")
+                            return "javaGenericServices: boolean expected";
+                    if (message.pyGenericServices != null && message.hasOwnProperty("pyGenericServices"))
+                        if (typeof message.pyGenericServices !== "boolean")
+                            return "pyGenericServices: boolean expected";
+                    if (message.deprecated != null && message.hasOwnProperty("deprecated"))
+                        if (typeof message.deprecated !== "boolean")
+                            return "deprecated: boolean expected";
+                    if (message.ccEnableArenas != null && message.hasOwnProperty("ccEnableArenas"))
+                        if (typeof message.ccEnableArenas !== "boolean")
+                            return "ccEnableArenas: boolean expected";
+                    if (message.objcClassPrefix != null && message.hasOwnProperty("objcClassPrefix"))
+                        if (!$util.isString(message.objcClassPrefix))
+                            return "objcClassPrefix: string expected";
+                    if (message.csharpNamespace != null && message.hasOwnProperty("csharpNamespace"))
+                        if (!$util.isString(message.csharpNamespace))
+                            return "csharpNamespace: string expected";
+                    if (message.swiftPrefix != null && message.hasOwnProperty("swiftPrefix"))
+                        if (!$util.isString(message.swiftPrefix))
+                            return "swiftPrefix: string expected";
+                    if (message.phpClassPrefix != null && message.hasOwnProperty("phpClassPrefix"))
+                        if (!$util.isString(message.phpClassPrefix))
+                            return "phpClassPrefix: string expected";
+                    if (message.phpNamespace != null && message.hasOwnProperty("phpNamespace"))
+                        if (!$util.isString(message.phpNamespace))
+                            return "phpNamespace: string expected";
+                    if (message.phpMetadataNamespace != null && message.hasOwnProperty("phpMetadataNamespace"))
+                        if (!$util.isString(message.phpMetadataNamespace))
+                            return "phpMetadataNamespace: string expected";
+                    if (message.rubyPackage != null && message.hasOwnProperty("rubyPackage"))
+                        if (!$util.isString(message.rubyPackage))
+                            return "rubyPackage: string expected";
+                    if (message.features != null && message.hasOwnProperty("features")) {
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        if (error)
+                            return "features." + error;
+                    }
+                    if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) {
+                        if (!Array.isArray(message.uninterpretedOption))
+                            return "uninterpretedOption: array expected";
+                        for (var i = 0; i < message.uninterpretedOption.length; ++i) {
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            if (error)
+                                return "uninterpretedOption." + error;
+                        }
+                    }
+                    return null;
+                };
+    
+                /**
+                 * Creates a FileOptions message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.FileOptions
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.FileOptions} FileOptions
+                 */
+                FileOptions.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.FileOptions)
+                        return object;
+                    var message = new $root.google.protobuf.FileOptions();
+                    if (object.javaPackage != null)
+                        message.javaPackage = String(object.javaPackage);
+                    if (object.javaOuterClassname != null)
+                        message.javaOuterClassname = String(object.javaOuterClassname);
+                    if (object.javaMultipleFiles != null)
+                        message.javaMultipleFiles = Boolean(object.javaMultipleFiles);
+                    if (object.javaGenerateEqualsAndHash != null)
+                        message.javaGenerateEqualsAndHash = Boolean(object.javaGenerateEqualsAndHash);
+                    if (object.javaStringCheckUtf8 != null)
+                        message.javaStringCheckUtf8 = Boolean(object.javaStringCheckUtf8);
+                    switch (object.optimizeFor) {
+                    default:
+                        if (typeof object.optimizeFor === "number") {
+                            message.optimizeFor = object.optimizeFor;
+                            break;
+                        }
+                        break;
+                    case "SPEED":
+                    case 1:
+                        message.optimizeFor = 1;
+                        break;
+                    case "CODE_SIZE":
+                    case 2:
+                        message.optimizeFor = 2;
+                        break;
+                    case "LITE_RUNTIME":
+                    case 3:
+                        message.optimizeFor = 3;
+                        break;
+                    }
+                    if (object.goPackage != null)
+                        message.goPackage = String(object.goPackage);
+                    if (object.ccGenericServices != null)
+                        message.ccGenericServices = Boolean(object.ccGenericServices);
+                    if (object.javaGenericServices != null)
+                        message.javaGenericServices = Boolean(object.javaGenericServices);
+                    if (object.pyGenericServices != null)
+                        message.pyGenericServices = Boolean(object.pyGenericServices);
+                    if (object.deprecated != null)
+                        message.deprecated = Boolean(object.deprecated);
+                    if (object.ccEnableArenas != null)
+                        message.ccEnableArenas = Boolean(object.ccEnableArenas);
+                    if (object.objcClassPrefix != null)
+                        message.objcClassPrefix = String(object.objcClassPrefix);
+                    if (object.csharpNamespace != null)
+                        message.csharpNamespace = String(object.csharpNamespace);
+                    if (object.swiftPrefix != null)
+                        message.swiftPrefix = String(object.swiftPrefix);
+                    if (object.phpClassPrefix != null)
+                        message.phpClassPrefix = String(object.phpClassPrefix);
+                    if (object.phpNamespace != null)
+                        message.phpNamespace = String(object.phpNamespace);
+                    if (object.phpMetadataNamespace != null)
+                        message.phpMetadataNamespace = String(object.phpMetadataNamespace);
+                    if (object.rubyPackage != null)
+                        message.rubyPackage = String(object.rubyPackage);
+                    if (object.features != null) {
+                        if (typeof object.features !== "object")
+                            throw TypeError(".google.protobuf.FileOptions.features: object expected");
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                    }
+                    if (object.uninterpretedOption) {
+                        if (!Array.isArray(object.uninterpretedOption))
+                            throw TypeError(".google.protobuf.FileOptions.uninterpretedOption: array expected");
+                        message.uninterpretedOption = [];
+                        for (var i = 0; i < object.uninterpretedOption.length; ++i) {
+                            if (typeof object.uninterpretedOption[i] !== "object")
+                                throw TypeError(".google.protobuf.FileOptions.uninterpretedOption: object expected");
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a FileOptions message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.FileOptions
+                 * @static
+                 * @param {google.protobuf.FileOptions} message FileOptions
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                FileOptions.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults)
+                        object.uninterpretedOption = [];
+                    if (options.defaults) {
+                        object.javaPackage = "";
+                        object.javaOuterClassname = "";
+                        object.optimizeFor = options.enums === String ? "SPEED" : 1;
+                        object.javaMultipleFiles = false;
+                        object.goPackage = "";
+                        object.ccGenericServices = false;
+                        object.javaGenericServices = false;
+                        object.pyGenericServices = false;
+                        object.javaGenerateEqualsAndHash = false;
+                        object.deprecated = false;
+                        object.javaStringCheckUtf8 = false;
+                        object.ccEnableArenas = true;
+                        object.objcClassPrefix = "";
+                        object.csharpNamespace = "";
+                        object.swiftPrefix = "";
+                        object.phpClassPrefix = "";
+                        object.phpNamespace = "";
+                        object.phpMetadataNamespace = "";
+                        object.rubyPackage = "";
+                        object.features = null;
+                    }
+                    if (message.javaPackage != null && message.hasOwnProperty("javaPackage"))
+                        object.javaPackage = message.javaPackage;
+                    if (message.javaOuterClassname != null && message.hasOwnProperty("javaOuterClassname"))
+                        object.javaOuterClassname = message.javaOuterClassname;
+                    if (message.optimizeFor != null && message.hasOwnProperty("optimizeFor"))
+                        object.optimizeFor = options.enums === String ? $root.google.protobuf.FileOptions.OptimizeMode[message.optimizeFor] === undefined ? message.optimizeFor : $root.google.protobuf.FileOptions.OptimizeMode[message.optimizeFor] : message.optimizeFor;
+                    if (message.javaMultipleFiles != null && message.hasOwnProperty("javaMultipleFiles"))
+                        object.javaMultipleFiles = message.javaMultipleFiles;
+                    if (message.goPackage != null && message.hasOwnProperty("goPackage"))
+                        object.goPackage = message.goPackage;
+                    if (message.ccGenericServices != null && message.hasOwnProperty("ccGenericServices"))
+                        object.ccGenericServices = message.ccGenericServices;
+                    if (message.javaGenericServices != null && message.hasOwnProperty("javaGenericServices"))
+                        object.javaGenericServices = message.javaGenericServices;
+                    if (message.pyGenericServices != null && message.hasOwnProperty("pyGenericServices"))
+                        object.pyGenericServices = message.pyGenericServices;
+                    if (message.javaGenerateEqualsAndHash != null && message.hasOwnProperty("javaGenerateEqualsAndHash"))
+                        object.javaGenerateEqualsAndHash = message.javaGenerateEqualsAndHash;
+                    if (message.deprecated != null && message.hasOwnProperty("deprecated"))
+                        object.deprecated = message.deprecated;
+                    if (message.javaStringCheckUtf8 != null && message.hasOwnProperty("javaStringCheckUtf8"))
+                        object.javaStringCheckUtf8 = message.javaStringCheckUtf8;
+                    if (message.ccEnableArenas != null && message.hasOwnProperty("ccEnableArenas"))
+                        object.ccEnableArenas = message.ccEnableArenas;
+                    if (message.objcClassPrefix != null && message.hasOwnProperty("objcClassPrefix"))
+                        object.objcClassPrefix = message.objcClassPrefix;
+                    if (message.csharpNamespace != null && message.hasOwnProperty("csharpNamespace"))
+                        object.csharpNamespace = message.csharpNamespace;
+                    if (message.swiftPrefix != null && message.hasOwnProperty("swiftPrefix"))
+                        object.swiftPrefix = message.swiftPrefix;
+                    if (message.phpClassPrefix != null && message.hasOwnProperty("phpClassPrefix"))
+                        object.phpClassPrefix = message.phpClassPrefix;
+                    if (message.phpNamespace != null && message.hasOwnProperty("phpNamespace"))
+                        object.phpNamespace = message.phpNamespace;
+                    if (message.phpMetadataNamespace != null && message.hasOwnProperty("phpMetadataNamespace"))
+                        object.phpMetadataNamespace = message.phpMetadataNamespace;
+                    if (message.rubyPackage != null && message.hasOwnProperty("rubyPackage"))
+                        object.rubyPackage = message.rubyPackage;
+                    if (message.features != null && message.hasOwnProperty("features"))
+                        object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options);
+                    if (message.uninterpretedOption && message.uninterpretedOption.length) {
+                        object.uninterpretedOption = [];
+                        for (var j = 0; j < message.uninterpretedOption.length; ++j)
+                            object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options);
+                    }
+                    return object;
+                };
+    
+                /**
+                 * Converts this FileOptions to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.FileOptions
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                FileOptions.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for FileOptions
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.FileOptions
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                FileOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.FileOptions";
+                };
+    
+                /**
+                 * OptimizeMode enum.
+                 * @name google.protobuf.FileOptions.OptimizeMode
+                 * @enum {number}
+                 * @property {number} SPEED=1 SPEED value
+                 * @property {number} CODE_SIZE=2 CODE_SIZE value
+                 * @property {number} LITE_RUNTIME=3 LITE_RUNTIME value
+                 */
+                FileOptions.OptimizeMode = (function() {
+                    var valuesById = {}, values = Object.create(valuesById);
+                    values[valuesById[1] = "SPEED"] = 1;
+                    values[valuesById[2] = "CODE_SIZE"] = 2;
+                    values[valuesById[3] = "LITE_RUNTIME"] = 3;
+                    return values;
+                })();
+    
+                return FileOptions;
+            })();
+    
+            protobuf.MessageOptions = (function() {
+    
+                /**
+                 * Properties of a MessageOptions.
+                 * @memberof google.protobuf
+                 * @interface IMessageOptions
+                 * @property {boolean|null} [messageSetWireFormat] MessageOptions messageSetWireFormat
+                 * @property {boolean|null} [noStandardDescriptorAccessor] MessageOptions noStandardDescriptorAccessor
+                 * @property {boolean|null} [deprecated] MessageOptions deprecated
+                 * @property {boolean|null} [mapEntry] MessageOptions mapEntry
+                 * @property {boolean|null} [deprecatedLegacyJsonFieldConflicts] MessageOptions deprecatedLegacyJsonFieldConflicts
+                 * @property {google.protobuf.IFeatureSet|null} [features] MessageOptions features
+                 * @property {Array.<google.protobuf.IUninterpretedOption>|null} [uninterpretedOption] MessageOptions uninterpretedOption
+                 */
+    
+                /**
+                 * Constructs a new MessageOptions.
+                 * @memberof google.protobuf
+                 * @classdesc Represents a MessageOptions.
+                 * @implements IMessageOptions
+                 * @constructor
+                 * @param {google.protobuf.IMessageOptions=} [properties] Properties to set
+                 */
+                function MessageOptions(properties) {
+                    this.uninterpretedOption = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * MessageOptions messageSetWireFormat.
+                 * @member {boolean} messageSetWireFormat
+                 * @memberof google.protobuf.MessageOptions
+                 * @instance
+                 */
+                MessageOptions.prototype.messageSetWireFormat = false;
+    
+                /**
+                 * MessageOptions noStandardDescriptorAccessor.
+                 * @member {boolean} noStandardDescriptorAccessor
+                 * @memberof google.protobuf.MessageOptions
+                 * @instance
+                 */
+                MessageOptions.prototype.noStandardDescriptorAccessor = false;
+    
+                /**
+                 * MessageOptions deprecated.
+                 * @member {boolean} deprecated
+                 * @memberof google.protobuf.MessageOptions
+                 * @instance
+                 */
+                MessageOptions.prototype.deprecated = false;
+    
+                /**
+                 * MessageOptions mapEntry.
+                 * @member {boolean} mapEntry
+                 * @memberof google.protobuf.MessageOptions
+                 * @instance
+                 */
+                MessageOptions.prototype.mapEntry = false;
+    
+                /**
+                 * MessageOptions deprecatedLegacyJsonFieldConflicts.
+                 * @member {boolean} deprecatedLegacyJsonFieldConflicts
+                 * @memberof google.protobuf.MessageOptions
+                 * @instance
+                 */
+                MessageOptions.prototype.deprecatedLegacyJsonFieldConflicts = false;
+    
+                /**
+                 * MessageOptions features.
+                 * @member {google.protobuf.IFeatureSet|null|undefined} features
+                 * @memberof google.protobuf.MessageOptions
+                 * @instance
+                 */
+                MessageOptions.prototype.features = null;
+    
+                /**
+                 * MessageOptions uninterpretedOption.
+                 * @member {Array.<google.protobuf.IUninterpretedOption>} uninterpretedOption
+                 * @memberof google.protobuf.MessageOptions
+                 * @instance
+                 */
+                MessageOptions.prototype.uninterpretedOption = $util.emptyArray;
+    
+                /**
+                 * Creates a new MessageOptions instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.MessageOptions
+                 * @static
+                 * @param {google.protobuf.IMessageOptions=} [properties] Properties to set
+                 * @returns {google.protobuf.MessageOptions} MessageOptions instance
+                 */
+                MessageOptions.create = function create(properties) {
+                    return new MessageOptions(properties);
+                };
+    
+                /**
+                 * Encodes the specified MessageOptions message. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.MessageOptions
+                 * @static
+                 * @param {google.protobuf.IMessageOptions} message MessageOptions message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                MessageOptions.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.messageSetWireFormat != null && Object.hasOwnProperty.call(message, "messageSetWireFormat"))
+                        writer.uint32(/* id 1, wireType 0 =*/8).bool(message.messageSetWireFormat);
+                    if (message.noStandardDescriptorAccessor != null && Object.hasOwnProperty.call(message, "noStandardDescriptorAccessor"))
+                        writer.uint32(/* id 2, wireType 0 =*/16).bool(message.noStandardDescriptorAccessor);
+                    if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated"))
+                        writer.uint32(/* id 3, wireType 0 =*/24).bool(message.deprecated);
+                    if (message.mapEntry != null && Object.hasOwnProperty.call(message, "mapEntry"))
+                        writer.uint32(/* id 7, wireType 0 =*/56).bool(message.mapEntry);
+                    if (message.deprecatedLegacyJsonFieldConflicts != null && Object.hasOwnProperty.call(message, "deprecatedLegacyJsonFieldConflicts"))
+                        writer.uint32(/* id 11, wireType 0 =*/88).bool(message.deprecatedLegacyJsonFieldConflicts);
+                    if (message.features != null && Object.hasOwnProperty.call(message, "features"))
+                        $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim();
+                    if (message.uninterpretedOption != null && message.uninterpretedOption.length)
+                        for (var i = 0; i < message.uninterpretedOption.length; ++i)
+                            $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim();
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified MessageOptions message, length delimited. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.MessageOptions
+                 * @static
+                 * @param {google.protobuf.IMessageOptions} message MessageOptions message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                MessageOptions.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a MessageOptions message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.MessageOptions
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.MessageOptions} MessageOptions
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                MessageOptions.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MessageOptions();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.messageSetWireFormat = reader.bool();
+                                break;
+                            }
+                        case 2: {
+                                message.noStandardDescriptorAccessor = reader.bool();
+                                break;
+                            }
+                        case 3: {
+                                message.deprecated = reader.bool();
+                                break;
+                            }
+                        case 7: {
+                                message.mapEntry = reader.bool();
+                                break;
+                            }
+                        case 11: {
+                                message.deprecatedLegacyJsonFieldConflicts = reader.bool();
+                                break;
+                            }
+                        case 12: {
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                break;
+                            }
+                        case 999: {
+                                if (!(message.uninterpretedOption && message.uninterpretedOption.length))
+                                    message.uninterpretedOption = [];
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a MessageOptions message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.MessageOptions
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.MessageOptions} MessageOptions
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                MessageOptions.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a MessageOptions message.
+                 * @function verify
+                 * @memberof google.protobuf.MessageOptions
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                MessageOptions.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.messageSetWireFormat != null && message.hasOwnProperty("messageSetWireFormat"))
+                        if (typeof message.messageSetWireFormat !== "boolean")
+                            return "messageSetWireFormat: boolean expected";
+                    if (message.noStandardDescriptorAccessor != null && message.hasOwnProperty("noStandardDescriptorAccessor"))
+                        if (typeof message.noStandardDescriptorAccessor !== "boolean")
+                            return "noStandardDescriptorAccessor: boolean expected";
+                    if (message.deprecated != null && message.hasOwnProperty("deprecated"))
+                        if (typeof message.deprecated !== "boolean")
+                            return "deprecated: boolean expected";
+                    if (message.mapEntry != null && message.hasOwnProperty("mapEntry"))
+                        if (typeof message.mapEntry !== "boolean")
+                            return "mapEntry: boolean expected";
+                    if (message.deprecatedLegacyJsonFieldConflicts != null && message.hasOwnProperty("deprecatedLegacyJsonFieldConflicts"))
+                        if (typeof message.deprecatedLegacyJsonFieldConflicts !== "boolean")
+                            return "deprecatedLegacyJsonFieldConflicts: boolean expected";
+                    if (message.features != null && message.hasOwnProperty("features")) {
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        if (error)
+                            return "features." + error;
+                    }
+                    if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) {
+                        if (!Array.isArray(message.uninterpretedOption))
+                            return "uninterpretedOption: array expected";
+                        for (var i = 0; i < message.uninterpretedOption.length; ++i) {
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            if (error)
+                                return "uninterpretedOption." + error;
+                        }
+                    }
+                    return null;
+                };
+    
+                /**
+                 * Creates a MessageOptions message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.MessageOptions
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.MessageOptions} MessageOptions
+                 */
+                MessageOptions.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.MessageOptions)
+                        return object;
+                    var message = new $root.google.protobuf.MessageOptions();
+                    if (object.messageSetWireFormat != null)
+                        message.messageSetWireFormat = Boolean(object.messageSetWireFormat);
+                    if (object.noStandardDescriptorAccessor != null)
+                        message.noStandardDescriptorAccessor = Boolean(object.noStandardDescriptorAccessor);
+                    if (object.deprecated != null)
+                        message.deprecated = Boolean(object.deprecated);
+                    if (object.mapEntry != null)
+                        message.mapEntry = Boolean(object.mapEntry);
+                    if (object.deprecatedLegacyJsonFieldConflicts != null)
+                        message.deprecatedLegacyJsonFieldConflicts = Boolean(object.deprecatedLegacyJsonFieldConflicts);
+                    if (object.features != null) {
+                        if (typeof object.features !== "object")
+                            throw TypeError(".google.protobuf.MessageOptions.features: object expected");
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                    }
+                    if (object.uninterpretedOption) {
+                        if (!Array.isArray(object.uninterpretedOption))
+                            throw TypeError(".google.protobuf.MessageOptions.uninterpretedOption: array expected");
+                        message.uninterpretedOption = [];
+                        for (var i = 0; i < object.uninterpretedOption.length; ++i) {
+                            if (typeof object.uninterpretedOption[i] !== "object")
+                                throw TypeError(".google.protobuf.MessageOptions.uninterpretedOption: object expected");
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a MessageOptions message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.MessageOptions
+                 * @static
+                 * @param {google.protobuf.MessageOptions} message MessageOptions
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                MessageOptions.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults)
+                        object.uninterpretedOption = [];
+                    if (options.defaults) {
+                        object.messageSetWireFormat = false;
+                        object.noStandardDescriptorAccessor = false;
+                        object.deprecated = false;
+                        object.mapEntry = false;
+                        object.deprecatedLegacyJsonFieldConflicts = false;
+                        object.features = null;
+                    }
+                    if (message.messageSetWireFormat != null && message.hasOwnProperty("messageSetWireFormat"))
+                        object.messageSetWireFormat = message.messageSetWireFormat;
+                    if (message.noStandardDescriptorAccessor != null && message.hasOwnProperty("noStandardDescriptorAccessor"))
+                        object.noStandardDescriptorAccessor = message.noStandardDescriptorAccessor;
+                    if (message.deprecated != null && message.hasOwnProperty("deprecated"))
+                        object.deprecated = message.deprecated;
+                    if (message.mapEntry != null && message.hasOwnProperty("mapEntry"))
+                        object.mapEntry = message.mapEntry;
+                    if (message.deprecatedLegacyJsonFieldConflicts != null && message.hasOwnProperty("deprecatedLegacyJsonFieldConflicts"))
+                        object.deprecatedLegacyJsonFieldConflicts = message.deprecatedLegacyJsonFieldConflicts;
+                    if (message.features != null && message.hasOwnProperty("features"))
+                        object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options);
+                    if (message.uninterpretedOption && message.uninterpretedOption.length) {
+                        object.uninterpretedOption = [];
+                        for (var j = 0; j < message.uninterpretedOption.length; ++j)
+                            object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options);
+                    }
+                    return object;
+                };
+    
+                /**
+                 * Converts this MessageOptions to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.MessageOptions
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                MessageOptions.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for MessageOptions
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.MessageOptions
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                MessageOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.MessageOptions";
+                };
+    
+                return MessageOptions;
+            })();
+    
+            protobuf.FieldOptions = (function() {
+    
+                /**
+                 * Properties of a FieldOptions.
+                 * @memberof google.protobuf
+                 * @interface IFieldOptions
+                 * @property {google.protobuf.FieldOptions.CType|null} [ctype] FieldOptions ctype
+                 * @property {boolean|null} [packed] FieldOptions packed
+                 * @property {google.protobuf.FieldOptions.JSType|null} [jstype] FieldOptions jstype
+                 * @property {boolean|null} [lazy] FieldOptions lazy
+                 * @property {boolean|null} [unverifiedLazy] FieldOptions unverifiedLazy
+                 * @property {boolean|null} [deprecated] FieldOptions deprecated
+                 * @property {boolean|null} [weak] FieldOptions weak
+                 * @property {boolean|null} [debugRedact] FieldOptions debugRedact
+                 * @property {google.protobuf.FieldOptions.OptionRetention|null} [retention] FieldOptions retention
+                 * @property {Array.<google.protobuf.FieldOptions.OptionTargetType>|null} [targets] FieldOptions targets
+                 * @property {Array.<google.protobuf.FieldOptions.IEditionDefault>|null} [editionDefaults] FieldOptions editionDefaults
+                 * @property {google.protobuf.IFeatureSet|null} [features] FieldOptions features
+                 * @property {Array.<google.protobuf.IUninterpretedOption>|null} [uninterpretedOption] FieldOptions uninterpretedOption
+                 * @property {Array.<google.api.FieldBehavior>|null} [".google.api.fieldBehavior"] FieldOptions .google.api.fieldBehavior
+                 */
+    
+                /**
+                 * Constructs a new FieldOptions.
+                 * @memberof google.protobuf
+                 * @classdesc Represents a FieldOptions.
+                 * @implements IFieldOptions
+                 * @constructor
+                 * @param {google.protobuf.IFieldOptions=} [properties] Properties to set
+                 */
+                function FieldOptions(properties) {
+                    this.targets = [];
+                    this.editionDefaults = [];
+                    this.uninterpretedOption = [];
+                    this[".google.api.fieldBehavior"] = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * FieldOptions ctype.
+                 * @member {google.protobuf.FieldOptions.CType} ctype
+                 * @memberof google.protobuf.FieldOptions
+                 * @instance
+                 */
+                FieldOptions.prototype.ctype = 0;
+    
+                /**
+                 * FieldOptions packed.
+                 * @member {boolean} packed
+                 * @memberof google.protobuf.FieldOptions
+                 * @instance
+                 */
+                FieldOptions.prototype.packed = false;
+    
+                /**
+                 * FieldOptions jstype.
+                 * @member {google.protobuf.FieldOptions.JSType} jstype
+                 * @memberof google.protobuf.FieldOptions
+                 * @instance
+                 */
+                FieldOptions.prototype.jstype = 0;
+    
+                /**
+                 * FieldOptions lazy.
+                 * @member {boolean} lazy
+                 * @memberof google.protobuf.FieldOptions
+                 * @instance
+                 */
+                FieldOptions.prototype.lazy = false;
+    
+                /**
+                 * FieldOptions unverifiedLazy.
+                 * @member {boolean} unverifiedLazy
+                 * @memberof google.protobuf.FieldOptions
+                 * @instance
+                 */
+                FieldOptions.prototype.unverifiedLazy = false;
+    
+                /**
+                 * FieldOptions deprecated.
+                 * @member {boolean} deprecated
+                 * @memberof google.protobuf.FieldOptions
+                 * @instance
+                 */
+                FieldOptions.prototype.deprecated = false;
+    
+                /**
+                 * FieldOptions weak.
+                 * @member {boolean} weak
+                 * @memberof google.protobuf.FieldOptions
+                 * @instance
+                 */
+                FieldOptions.prototype.weak = false;
+    
+                /**
+                 * FieldOptions debugRedact.
+                 * @member {boolean} debugRedact
+                 * @memberof google.protobuf.FieldOptions
+                 * @instance
+                 */
+                FieldOptions.prototype.debugRedact = false;
+    
+                /**
+                 * FieldOptions retention.
+                 * @member {google.protobuf.FieldOptions.OptionRetention} retention
+                 * @memberof google.protobuf.FieldOptions
+                 * @instance
+                 */
+                FieldOptions.prototype.retention = 0;
+    
+                /**
+                 * FieldOptions targets.
+                 * @member {Array.<google.protobuf.FieldOptions.OptionTargetType>} targets
+                 * @memberof google.protobuf.FieldOptions
+                 * @instance
+                 */
+                FieldOptions.prototype.targets = $util.emptyArray;
+    
+                /**
+                 * FieldOptions editionDefaults.
+                 * @member {Array.<google.protobuf.FieldOptions.IEditionDefault>} editionDefaults
+                 * @memberof google.protobuf.FieldOptions
+                 * @instance
+                 */
+                FieldOptions.prototype.editionDefaults = $util.emptyArray;
+    
+                /**
+                 * FieldOptions features.
+                 * @member {google.protobuf.IFeatureSet|null|undefined} features
+                 * @memberof google.protobuf.FieldOptions
+                 * @instance
+                 */
+                FieldOptions.prototype.features = null;
+    
+                /**
+                 * FieldOptions uninterpretedOption.
+                 * @member {Array.<google.protobuf.IUninterpretedOption>} uninterpretedOption
+                 * @memberof google.protobuf.FieldOptions
+                 * @instance
+                 */
+                FieldOptions.prototype.uninterpretedOption = $util.emptyArray;
+    
+                /**
+                 * FieldOptions .google.api.fieldBehavior.
+                 * @member {Array.<google.api.FieldBehavior>} .google.api.fieldBehavior
+                 * @memberof google.protobuf.FieldOptions
+                 * @instance
+                 */
+                FieldOptions.prototype[".google.api.fieldBehavior"] = $util.emptyArray;
+    
+                /**
+                 * Creates a new FieldOptions instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.FieldOptions
+                 * @static
+                 * @param {google.protobuf.IFieldOptions=} [properties] Properties to set
+                 * @returns {google.protobuf.FieldOptions} FieldOptions instance
+                 */
+                FieldOptions.create = function create(properties) {
+                    return new FieldOptions(properties);
+                };
+    
+                /**
+                 * Encodes the specified FieldOptions message. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.FieldOptions
+                 * @static
+                 * @param {google.protobuf.IFieldOptions} message FieldOptions message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                FieldOptions.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.ctype != null && Object.hasOwnProperty.call(message, "ctype"))
+                        writer.uint32(/* id 1, wireType 0 =*/8).int32(message.ctype);
+                    if (message.packed != null && Object.hasOwnProperty.call(message, "packed"))
+                        writer.uint32(/* id 2, wireType 0 =*/16).bool(message.packed);
+                    if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated"))
+                        writer.uint32(/* id 3, wireType 0 =*/24).bool(message.deprecated);
+                    if (message.lazy != null && Object.hasOwnProperty.call(message, "lazy"))
+                        writer.uint32(/* id 5, wireType 0 =*/40).bool(message.lazy);
+                    if (message.jstype != null && Object.hasOwnProperty.call(message, "jstype"))
+                        writer.uint32(/* id 6, wireType 0 =*/48).int32(message.jstype);
+                    if (message.weak != null && Object.hasOwnProperty.call(message, "weak"))
+                        writer.uint32(/* id 10, wireType 0 =*/80).bool(message.weak);
+                    if (message.unverifiedLazy != null && Object.hasOwnProperty.call(message, "unverifiedLazy"))
+                        writer.uint32(/* id 15, wireType 0 =*/120).bool(message.unverifiedLazy);
+                    if (message.debugRedact != null && Object.hasOwnProperty.call(message, "debugRedact"))
+                        writer.uint32(/* id 16, wireType 0 =*/128).bool(message.debugRedact);
+                    if (message.retention != null && Object.hasOwnProperty.call(message, "retention"))
+                        writer.uint32(/* id 17, wireType 0 =*/136).int32(message.retention);
+                    if (message.targets != null && message.targets.length)
+                        for (var i = 0; i < message.targets.length; ++i)
+                            writer.uint32(/* id 19, wireType 0 =*/152).int32(message.targets[i]);
+                    if (message.editionDefaults != null && message.editionDefaults.length)
+                        for (var i = 0; i < message.editionDefaults.length; ++i)
+                            $root.google.protobuf.FieldOptions.EditionDefault.encode(message.editionDefaults[i], writer.uint32(/* id 20, wireType 2 =*/162).fork()).ldelim();
+                    if (message.features != null && Object.hasOwnProperty.call(message, "features"))
+                        $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 21, wireType 2 =*/170).fork()).ldelim();
+                    if (message.uninterpretedOption != null && message.uninterpretedOption.length)
+                        for (var i = 0; i < message.uninterpretedOption.length; ++i)
+                            $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim();
+                    if (message[".google.api.fieldBehavior"] != null && message[".google.api.fieldBehavior"].length)
+                        for (var i = 0; i < message[".google.api.fieldBehavior"].length; ++i)
+                            writer.uint32(/* id 1052, wireType 0 =*/8416).int32(message[".google.api.fieldBehavior"][i]);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified FieldOptions message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.FieldOptions
+                 * @static
+                 * @param {google.protobuf.IFieldOptions} message FieldOptions message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                FieldOptions.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a FieldOptions message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.FieldOptions
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.FieldOptions} FieldOptions
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                FieldOptions.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldOptions();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.ctype = reader.int32();
+                                break;
+                            }
+                        case 2: {
+                                message.packed = reader.bool();
+                                break;
+                            }
+                        case 6: {
+                                message.jstype = reader.int32();
+                                break;
+                            }
+                        case 5: {
+                                message.lazy = reader.bool();
+                                break;
+                            }
+                        case 15: {
+                                message.unverifiedLazy = reader.bool();
+                                break;
+                            }
+                        case 3: {
+                                message.deprecated = reader.bool();
+                                break;
+                            }
+                        case 10: {
+                                message.weak = reader.bool();
+                                break;
+                            }
+                        case 16: {
+                                message.debugRedact = reader.bool();
+                                break;
+                            }
+                        case 17: {
+                                message.retention = reader.int32();
+                                break;
+                            }
+                        case 19: {
+                                if (!(message.targets && message.targets.length))
+                                    message.targets = [];
+                                if ((tag & 7) === 2) {
+                                    var end2 = reader.uint32() + reader.pos;
+                                    while (reader.pos < end2)
+                                        message.targets.push(reader.int32());
+                                } else
+                                    message.targets.push(reader.int32());
+                                break;
+                            }
+                        case 20: {
+                                if (!(message.editionDefaults && message.editionDefaults.length))
+                                    message.editionDefaults = [];
+                                message.editionDefaults.push($root.google.protobuf.FieldOptions.EditionDefault.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        case 21: {
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                break;
+                            }
+                        case 999: {
+                                if (!(message.uninterpretedOption && message.uninterpretedOption.length))
+                                    message.uninterpretedOption = [];
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        case 1052: {
+                                if (!(message[".google.api.fieldBehavior"] && message[".google.api.fieldBehavior"].length))
+                                    message[".google.api.fieldBehavior"] = [];
+                                if ((tag & 7) === 2) {
+                                    var end2 = reader.uint32() + reader.pos;
+                                    while (reader.pos < end2)
+                                        message[".google.api.fieldBehavior"].push(reader.int32());
+                                } else
+                                    message[".google.api.fieldBehavior"].push(reader.int32());
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a FieldOptions message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.FieldOptions
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.FieldOptions} FieldOptions
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                FieldOptions.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a FieldOptions message.
+                 * @function verify
+                 * @memberof google.protobuf.FieldOptions
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                FieldOptions.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.ctype != null && message.hasOwnProperty("ctype"))
+                        switch (message.ctype) {
+                        default:
+                            return "ctype: enum value expected";
+                        case 0:
+                        case 1:
+                        case 2:
+                            break;
+                        }
+                    if (message.packed != null && message.hasOwnProperty("packed"))
+                        if (typeof message.packed !== "boolean")
+                            return "packed: boolean expected";
+                    if (message.jstype != null && message.hasOwnProperty("jstype"))
+                        switch (message.jstype) {
+                        default:
+                            return "jstype: enum value expected";
+                        case 0:
+                        case 1:
+                        case 2:
+                            break;
+                        }
+                    if (message.lazy != null && message.hasOwnProperty("lazy"))
+                        if (typeof message.lazy !== "boolean")
+                            return "lazy: boolean expected";
+                    if (message.unverifiedLazy != null && message.hasOwnProperty("unverifiedLazy"))
+                        if (typeof message.unverifiedLazy !== "boolean")
+                            return "unverifiedLazy: boolean expected";
+                    if (message.deprecated != null && message.hasOwnProperty("deprecated"))
+                        if (typeof message.deprecated !== "boolean")
+                            return "deprecated: boolean expected";
+                    if (message.weak != null && message.hasOwnProperty("weak"))
+                        if (typeof message.weak !== "boolean")
+                            return "weak: boolean expected";
+                    if (message.debugRedact != null && message.hasOwnProperty("debugRedact"))
+                        if (typeof message.debugRedact !== "boolean")
+                            return "debugRedact: boolean expected";
+                    if (message.retention != null && message.hasOwnProperty("retention"))
+                        switch (message.retention) {
+                        default:
+                            return "retention: enum value expected";
+                        case 0:
+                        case 1:
+                        case 2:
+                            break;
+                        }
+                    if (message.targets != null && message.hasOwnProperty("targets")) {
+                        if (!Array.isArray(message.targets))
+                            return "targets: array expected";
+                        for (var i = 0; i < message.targets.length; ++i)
+                            switch (message.targets[i]) {
+                            default:
+                                return "targets: enum value[] expected";
+                            case 0:
+                            case 1:
+                            case 2:
+                            case 3:
+                            case 4:
+                            case 5:
+                            case 6:
+                            case 7:
+                            case 8:
+                            case 9:
+                                break;
+                            }
+                    }
+                    if (message.editionDefaults != null && message.hasOwnProperty("editionDefaults")) {
+                        if (!Array.isArray(message.editionDefaults))
+                            return "editionDefaults: array expected";
+                        for (var i = 0; i < message.editionDefaults.length; ++i) {
+                            var error = $root.google.protobuf.FieldOptions.EditionDefault.verify(message.editionDefaults[i]);
+                            if (error)
+                                return "editionDefaults." + error;
+                        }
+                    }
+                    if (message.features != null && message.hasOwnProperty("features")) {
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        if (error)
+                            return "features." + error;
+                    }
+                    if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) {
+                        if (!Array.isArray(message.uninterpretedOption))
+                            return "uninterpretedOption: array expected";
+                        for (var i = 0; i < message.uninterpretedOption.length; ++i) {
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            if (error)
+                                return "uninterpretedOption." + error;
+                        }
+                    }
+                    if (message[".google.api.fieldBehavior"] != null && message.hasOwnProperty(".google.api.fieldBehavior")) {
+                        if (!Array.isArray(message[".google.api.fieldBehavior"]))
+                            return ".google.api.fieldBehavior: array expected";
+                        for (var i = 0; i < message[".google.api.fieldBehavior"].length; ++i)
+                            switch (message[".google.api.fieldBehavior"][i]) {
+                            default:
+                                return ".google.api.fieldBehavior: enum value[] expected";
+                            case 0:
+                            case 1:
+                            case 2:
+                            case 3:
+                            case 4:
+                            case 5:
+                            case 6:
+                            case 7:
+                            case 8:
+                                break;
+                            }
+                    }
+                    return null;
+                };
+    
+                /**
+                 * Creates a FieldOptions message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.FieldOptions
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.FieldOptions} FieldOptions
+                 */
+                FieldOptions.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.FieldOptions)
+                        return object;
+                    var message = new $root.google.protobuf.FieldOptions();
+                    switch (object.ctype) {
+                    default:
+                        if (typeof object.ctype === "number") {
+                            message.ctype = object.ctype;
+                            break;
+                        }
+                        break;
+                    case "STRING":
+                    case 0:
+                        message.ctype = 0;
+                        break;
+                    case "CORD":
+                    case 1:
+                        message.ctype = 1;
+                        break;
+                    case "STRING_PIECE":
+                    case 2:
+                        message.ctype = 2;
+                        break;
+                    }
+                    if (object.packed != null)
+                        message.packed = Boolean(object.packed);
+                    switch (object.jstype) {
+                    default:
+                        if (typeof object.jstype === "number") {
+                            message.jstype = object.jstype;
+                            break;
+                        }
+                        break;
+                    case "JS_NORMAL":
+                    case 0:
+                        message.jstype = 0;
+                        break;
+                    case "JS_STRING":
+                    case 1:
+                        message.jstype = 1;
+                        break;
+                    case "JS_NUMBER":
+                    case 2:
+                        message.jstype = 2;
+                        break;
+                    }
+                    if (object.lazy != null)
+                        message.lazy = Boolean(object.lazy);
+                    if (object.unverifiedLazy != null)
+                        message.unverifiedLazy = Boolean(object.unverifiedLazy);
+                    if (object.deprecated != null)
+                        message.deprecated = Boolean(object.deprecated);
+                    if (object.weak != null)
+                        message.weak = Boolean(object.weak);
+                    if (object.debugRedact != null)
+                        message.debugRedact = Boolean(object.debugRedact);
+                    switch (object.retention) {
+                    default:
+                        if (typeof object.retention === "number") {
+                            message.retention = object.retention;
+                            break;
+                        }
+                        break;
+                    case "RETENTION_UNKNOWN":
+                    case 0:
+                        message.retention = 0;
+                        break;
+                    case "RETENTION_RUNTIME":
+                    case 1:
+                        message.retention = 1;
+                        break;
+                    case "RETENTION_SOURCE":
+                    case 2:
+                        message.retention = 2;
+                        break;
+                    }
+                    if (object.targets) {
+                        if (!Array.isArray(object.targets))
+                            throw TypeError(".google.protobuf.FieldOptions.targets: array expected");
+                        message.targets = [];
+                        for (var i = 0; i < object.targets.length; ++i)
+                            switch (object.targets[i]) {
+                            default:
+                                if (typeof object.targets[i] === "number") {
+                                    message.targets[i] = object.targets[i];
+                                    break;
+                                }
+                            case "TARGET_TYPE_UNKNOWN":
+                            case 0:
+                                message.targets[i] = 0;
+                                break;
+                            case "TARGET_TYPE_FILE":
+                            case 1:
+                                message.targets[i] = 1;
+                                break;
+                            case "TARGET_TYPE_EXTENSION_RANGE":
+                            case 2:
+                                message.targets[i] = 2;
+                                break;
+                            case "TARGET_TYPE_MESSAGE":
+                            case 3:
+                                message.targets[i] = 3;
+                                break;
+                            case "TARGET_TYPE_FIELD":
+                            case 4:
+                                message.targets[i] = 4;
+                                break;
+                            case "TARGET_TYPE_ONEOF":
+                            case 5:
+                                message.targets[i] = 5;
+                                break;
+                            case "TARGET_TYPE_ENUM":
+                            case 6:
+                                message.targets[i] = 6;
+                                break;
+                            case "TARGET_TYPE_ENUM_ENTRY":
+                            case 7:
+                                message.targets[i] = 7;
+                                break;
+                            case "TARGET_TYPE_SERVICE":
+                            case 8:
+                                message.targets[i] = 8;
+                                break;
+                            case "TARGET_TYPE_METHOD":
+                            case 9:
+                                message.targets[i] = 9;
+                                break;
+                            }
+                    }
+                    if (object.editionDefaults) {
+                        if (!Array.isArray(object.editionDefaults))
+                            throw TypeError(".google.protobuf.FieldOptions.editionDefaults: array expected");
+                        message.editionDefaults = [];
+                        for (var i = 0; i < object.editionDefaults.length; ++i) {
+                            if (typeof object.editionDefaults[i] !== "object")
+                                throw TypeError(".google.protobuf.FieldOptions.editionDefaults: object expected");
+                            message.editionDefaults[i] = $root.google.protobuf.FieldOptions.EditionDefault.fromObject(object.editionDefaults[i]);
+                        }
+                    }
+                    if (object.features != null) {
+                        if (typeof object.features !== "object")
+                            throw TypeError(".google.protobuf.FieldOptions.features: object expected");
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                    }
+                    if (object.uninterpretedOption) {
+                        if (!Array.isArray(object.uninterpretedOption))
+                            throw TypeError(".google.protobuf.FieldOptions.uninterpretedOption: array expected");
+                        message.uninterpretedOption = [];
+                        for (var i = 0; i < object.uninterpretedOption.length; ++i) {
+                            if (typeof object.uninterpretedOption[i] !== "object")
+                                throw TypeError(".google.protobuf.FieldOptions.uninterpretedOption: object expected");
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                        }
+                    }
+                    if (object[".google.api.fieldBehavior"]) {
+                        if (!Array.isArray(object[".google.api.fieldBehavior"]))
+                            throw TypeError(".google.protobuf.FieldOptions..google.api.fieldBehavior: array expected");
+                        message[".google.api.fieldBehavior"] = [];
+                        for (var i = 0; i < object[".google.api.fieldBehavior"].length; ++i)
+                            switch (object[".google.api.fieldBehavior"][i]) {
+                            default:
+                                if (typeof object[".google.api.fieldBehavior"][i] === "number") {
+                                    message[".google.api.fieldBehavior"][i] = object[".google.api.fieldBehavior"][i];
+                                    break;
+                                }
+                            case "FIELD_BEHAVIOR_UNSPECIFIED":
+                            case 0:
+                                message[".google.api.fieldBehavior"][i] = 0;
+                                break;
+                            case "OPTIONAL":
+                            case 1:
+                                message[".google.api.fieldBehavior"][i] = 1;
+                                break;
+                            case "REQUIRED":
+                            case 2:
+                                message[".google.api.fieldBehavior"][i] = 2;
+                                break;
+                            case "OUTPUT_ONLY":
+                            case 3:
+                                message[".google.api.fieldBehavior"][i] = 3;
+                                break;
+                            case "INPUT_ONLY":
+                            case 4:
+                                message[".google.api.fieldBehavior"][i] = 4;
+                                break;
+                            case "IMMUTABLE":
+                            case 5:
+                                message[".google.api.fieldBehavior"][i] = 5;
+                                break;
+                            case "UNORDERED_LIST":
+                            case 6:
+                                message[".google.api.fieldBehavior"][i] = 6;
+                                break;
+                            case "NON_EMPTY_DEFAULT":
+                            case 7:
+                                message[".google.api.fieldBehavior"][i] = 7;
+                                break;
+                            case "IDENTIFIER":
+                            case 8:
+                                message[".google.api.fieldBehavior"][i] = 8;
+                                break;
+                            }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a FieldOptions message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.FieldOptions
+                 * @static
+                 * @param {google.protobuf.FieldOptions} message FieldOptions
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                FieldOptions.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults) {
+                        object.targets = [];
+                        object.editionDefaults = [];
+                        object.uninterpretedOption = [];
+                        object[".google.api.fieldBehavior"] = [];
+                    }
+                    if (options.defaults) {
+                        object.ctype = options.enums === String ? "STRING" : 0;
+                        object.packed = false;
+                        object.deprecated = false;
+                        object.lazy = false;
+                        object.jstype = options.enums === String ? "JS_NORMAL" : 0;
+                        object.weak = false;
+                        object.unverifiedLazy = false;
+                        object.debugRedact = false;
+                        object.retention = options.enums === String ? "RETENTION_UNKNOWN" : 0;
+                        object.features = null;
+                    }
+                    if (message.ctype != null && message.hasOwnProperty("ctype"))
+                        object.ctype = options.enums === String ? $root.google.protobuf.FieldOptions.CType[message.ctype] === undefined ? message.ctype : $root.google.protobuf.FieldOptions.CType[message.ctype] : message.ctype;
+                    if (message.packed != null && message.hasOwnProperty("packed"))
+                        object.packed = message.packed;
+                    if (message.deprecated != null && message.hasOwnProperty("deprecated"))
+                        object.deprecated = message.deprecated;
+                    if (message.lazy != null && message.hasOwnProperty("lazy"))
+                        object.lazy = message.lazy;
+                    if (message.jstype != null && message.hasOwnProperty("jstype"))
+                        object.jstype = options.enums === String ? $root.google.protobuf.FieldOptions.JSType[message.jstype] === undefined ? message.jstype : $root.google.protobuf.FieldOptions.JSType[message.jstype] : message.jstype;
+                    if (message.weak != null && message.hasOwnProperty("weak"))
+                        object.weak = message.weak;
+                    if (message.unverifiedLazy != null && message.hasOwnProperty("unverifiedLazy"))
+                        object.unverifiedLazy = message.unverifiedLazy;
+                    if (message.debugRedact != null && message.hasOwnProperty("debugRedact"))
+                        object.debugRedact = message.debugRedact;
+                    if (message.retention != null && message.hasOwnProperty("retention"))
+                        object.retention = options.enums === String ? $root.google.protobuf.FieldOptions.OptionRetention[message.retention] === undefined ? message.retention : $root.google.protobuf.FieldOptions.OptionRetention[message.retention] : message.retention;
+                    if (message.targets && message.targets.length) {
+                        object.targets = [];
+                        for (var j = 0; j < message.targets.length; ++j)
+                            object.targets[j] = options.enums === String ? $root.google.protobuf.FieldOptions.OptionTargetType[message.targets[j]] === undefined ? message.targets[j] : $root.google.protobuf.FieldOptions.OptionTargetType[message.targets[j]] : message.targets[j];
+                    }
+                    if (message.editionDefaults && message.editionDefaults.length) {
+                        object.editionDefaults = [];
+                        for (var j = 0; j < message.editionDefaults.length; ++j)
+                            object.editionDefaults[j] = $root.google.protobuf.FieldOptions.EditionDefault.toObject(message.editionDefaults[j], options);
+                    }
+                    if (message.features != null && message.hasOwnProperty("features"))
+                        object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options);
+                    if (message.uninterpretedOption && message.uninterpretedOption.length) {
+                        object.uninterpretedOption = [];
+                        for (var j = 0; j < message.uninterpretedOption.length; ++j)
+                            object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options);
+                    }
+                    if (message[".google.api.fieldBehavior"] && message[".google.api.fieldBehavior"].length) {
+                        object[".google.api.fieldBehavior"] = [];
+                        for (var j = 0; j < message[".google.api.fieldBehavior"].length; ++j)
+                            object[".google.api.fieldBehavior"][j] = options.enums === String ? $root.google.api.FieldBehavior[message[".google.api.fieldBehavior"][j]] === undefined ? message[".google.api.fieldBehavior"][j] : $root.google.api.FieldBehavior[message[".google.api.fieldBehavior"][j]] : message[".google.api.fieldBehavior"][j];
+                    }
+                    return object;
+                };
+    
+                /**
+                 * Converts this FieldOptions to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.FieldOptions
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                FieldOptions.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for FieldOptions
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.FieldOptions
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                FieldOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.FieldOptions";
+                };
+    
+                /**
+                 * CType enum.
+                 * @name google.protobuf.FieldOptions.CType
+                 * @enum {number}
+                 * @property {number} STRING=0 STRING value
+                 * @property {number} CORD=1 CORD value
+                 * @property {number} STRING_PIECE=2 STRING_PIECE value
+                 */
+                FieldOptions.CType = (function() {
+                    var valuesById = {}, values = Object.create(valuesById);
+                    values[valuesById[0] = "STRING"] = 0;
+                    values[valuesById[1] = "CORD"] = 1;
+                    values[valuesById[2] = "STRING_PIECE"] = 2;
+                    return values;
+                })();
+    
+                /**
+                 * JSType enum.
+                 * @name google.protobuf.FieldOptions.JSType
+                 * @enum {number}
+                 * @property {number} JS_NORMAL=0 JS_NORMAL value
+                 * @property {number} JS_STRING=1 JS_STRING value
+                 * @property {number} JS_NUMBER=2 JS_NUMBER value
+                 */
+                FieldOptions.JSType = (function() {
+                    var valuesById = {}, values = Object.create(valuesById);
+                    values[valuesById[0] = "JS_NORMAL"] = 0;
+                    values[valuesById[1] = "JS_STRING"] = 1;
+                    values[valuesById[2] = "JS_NUMBER"] = 2;
+                    return values;
+                })();
+    
+                /**
+                 * OptionRetention enum.
+                 * @name google.protobuf.FieldOptions.OptionRetention
+                 * @enum {number}
+                 * @property {number} RETENTION_UNKNOWN=0 RETENTION_UNKNOWN value
+                 * @property {number} RETENTION_RUNTIME=1 RETENTION_RUNTIME value
+                 * @property {number} RETENTION_SOURCE=2 RETENTION_SOURCE value
+                 */
+                FieldOptions.OptionRetention = (function() {
+                    var valuesById = {}, values = Object.create(valuesById);
+                    values[valuesById[0] = "RETENTION_UNKNOWN"] = 0;
+                    values[valuesById[1] = "RETENTION_RUNTIME"] = 1;
+                    values[valuesById[2] = "RETENTION_SOURCE"] = 2;
+                    return values;
+                })();
+    
+                /**
+                 * OptionTargetType enum.
+                 * @name google.protobuf.FieldOptions.OptionTargetType
+                 * @enum {number}
+                 * @property {number} TARGET_TYPE_UNKNOWN=0 TARGET_TYPE_UNKNOWN value
+                 * @property {number} TARGET_TYPE_FILE=1 TARGET_TYPE_FILE value
+                 * @property {number} TARGET_TYPE_EXTENSION_RANGE=2 TARGET_TYPE_EXTENSION_RANGE value
+                 * @property {number} TARGET_TYPE_MESSAGE=3 TARGET_TYPE_MESSAGE value
+                 * @property {number} TARGET_TYPE_FIELD=4 TARGET_TYPE_FIELD value
+                 * @property {number} TARGET_TYPE_ONEOF=5 TARGET_TYPE_ONEOF value
+                 * @property {number} TARGET_TYPE_ENUM=6 TARGET_TYPE_ENUM value
+                 * @property {number} TARGET_TYPE_ENUM_ENTRY=7 TARGET_TYPE_ENUM_ENTRY value
+                 * @property {number} TARGET_TYPE_SERVICE=8 TARGET_TYPE_SERVICE value
+                 * @property {number} TARGET_TYPE_METHOD=9 TARGET_TYPE_METHOD value
+                 */
+                FieldOptions.OptionTargetType = (function() {
+                    var valuesById = {}, values = Object.create(valuesById);
+                    values[valuesById[0] = "TARGET_TYPE_UNKNOWN"] = 0;
+                    values[valuesById[1] = "TARGET_TYPE_FILE"] = 1;
+                    values[valuesById[2] = "TARGET_TYPE_EXTENSION_RANGE"] = 2;
+                    values[valuesById[3] = "TARGET_TYPE_MESSAGE"] = 3;
+                    values[valuesById[4] = "TARGET_TYPE_FIELD"] = 4;
+                    values[valuesById[5] = "TARGET_TYPE_ONEOF"] = 5;
+                    values[valuesById[6] = "TARGET_TYPE_ENUM"] = 6;
+                    values[valuesById[7] = "TARGET_TYPE_ENUM_ENTRY"] = 7;
+                    values[valuesById[8] = "TARGET_TYPE_SERVICE"] = 8;
+                    values[valuesById[9] = "TARGET_TYPE_METHOD"] = 9;
+                    return values;
+                })();
+    
+                FieldOptions.EditionDefault = (function() {
+    
+                    /**
+                     * Properties of an EditionDefault.
+                     * @memberof google.protobuf.FieldOptions
+                     * @interface IEditionDefault
+                     * @property {google.protobuf.Edition|null} [edition] EditionDefault edition
+                     * @property {string|null} [value] EditionDefault value
+                     */
+    
+                    /**
+                     * Constructs a new EditionDefault.
+                     * @memberof google.protobuf.FieldOptions
+                     * @classdesc Represents an EditionDefault.
+                     * @implements IEditionDefault
+                     * @constructor
+                     * @param {google.protobuf.FieldOptions.IEditionDefault=} [properties] Properties to set
+                     */
+                    function EditionDefault(properties) {
+                        if (properties)
+                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                if (properties[keys[i]] != null)
+                                    this[keys[i]] = properties[keys[i]];
+                    }
+    
+                    /**
+                     * EditionDefault edition.
+                     * @member {google.protobuf.Edition} edition
+                     * @memberof google.protobuf.FieldOptions.EditionDefault
+                     * @instance
+                     */
+                    EditionDefault.prototype.edition = 0;
+    
+                    /**
+                     * EditionDefault value.
+                     * @member {string} value
+                     * @memberof google.protobuf.FieldOptions.EditionDefault
+                     * @instance
+                     */
+                    EditionDefault.prototype.value = "";
+    
+                    /**
+                     * Creates a new EditionDefault instance using the specified properties.
+                     * @function create
+                     * @memberof google.protobuf.FieldOptions.EditionDefault
+                     * @static
+                     * @param {google.protobuf.FieldOptions.IEditionDefault=} [properties] Properties to set
+                     * @returns {google.protobuf.FieldOptions.EditionDefault} EditionDefault instance
+                     */
+                    EditionDefault.create = function create(properties) {
+                        return new EditionDefault(properties);
+                    };
+    
+                    /**
+                     * Encodes the specified EditionDefault message. Does not implicitly {@link google.protobuf.FieldOptions.EditionDefault.verify|verify} messages.
+                     * @function encode
+                     * @memberof google.protobuf.FieldOptions.EditionDefault
+                     * @static
+                     * @param {google.protobuf.FieldOptions.IEditionDefault} message EditionDefault message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    EditionDefault.encode = function encode(message, writer) {
+                        if (!writer)
+                            writer = $Writer.create();
+                        if (message.value != null && Object.hasOwnProperty.call(message, "value"))
+                            writer.uint32(/* id 2, wireType 2 =*/18).string(message.value);
+                        if (message.edition != null && Object.hasOwnProperty.call(message, "edition"))
+                            writer.uint32(/* id 3, wireType 0 =*/24).int32(message.edition);
+                        return writer;
+                    };
+    
+                    /**
+                     * Encodes the specified EditionDefault message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.EditionDefault.verify|verify} messages.
+                     * @function encodeDelimited
+                     * @memberof google.protobuf.FieldOptions.EditionDefault
+                     * @static
+                     * @param {google.protobuf.FieldOptions.IEditionDefault} message EditionDefault message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    EditionDefault.encodeDelimited = function encodeDelimited(message, writer) {
+                        return this.encode(message, writer).ldelim();
+                    };
+    
+                    /**
+                     * Decodes an EditionDefault message from the specified reader or buffer.
+                     * @function decode
+                     * @memberof google.protobuf.FieldOptions.EditionDefault
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @param {number} [length] Message length if known beforehand
+                     * @returns {google.protobuf.FieldOptions.EditionDefault} EditionDefault
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    EditionDefault.decode = function decode(reader, length, error) {
+                        if (!(reader instanceof $Reader))
+                            reader = $Reader.create(reader);
+                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldOptions.EditionDefault();
+                        while (reader.pos < end) {
+                            var tag = reader.uint32();
+                            if (tag === error)
+                                break;
+                            switch (tag >>> 3) {
+                            case 3: {
+                                    message.edition = reader.int32();
+                                    break;
+                                }
+                            case 2: {
+                                    message.value = reader.string();
+                                    break;
+                                }
+                            default:
+                                reader.skipType(tag & 7);
+                                break;
+                            }
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Decodes an EditionDefault message from the specified reader or buffer, length delimited.
+                     * @function decodeDelimited
+                     * @memberof google.protobuf.FieldOptions.EditionDefault
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @returns {google.protobuf.FieldOptions.EditionDefault} EditionDefault
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    EditionDefault.decodeDelimited = function decodeDelimited(reader) {
+                        if (!(reader instanceof $Reader))
+                            reader = new $Reader(reader);
+                        return this.decode(reader, reader.uint32());
+                    };
+    
+                    /**
+                     * Verifies an EditionDefault message.
+                     * @function verify
+                     * @memberof google.protobuf.FieldOptions.EditionDefault
+                     * @static
+                     * @param {Object.<string,*>} message Plain object to verify
+                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                     */
+                    EditionDefault.verify = function verify(message) {
+                        if (typeof message !== "object" || message === null)
+                            return "object expected";
+                        if (message.edition != null && message.hasOwnProperty("edition"))
+                            switch (message.edition) {
+                            default:
+                                return "edition: enum value expected";
+                            case 0:
+                            case 998:
+                            case 999:
+                            case 1000:
+                            case 1001:
+                            case 1:
+                            case 2:
+                            case 99997:
+                            case 99998:
+                            case 99999:
+                            case 2147483647:
+                                break;
+                            }
+                        if (message.value != null && message.hasOwnProperty("value"))
+                            if (!$util.isString(message.value))
+                                return "value: string expected";
+                        return null;
+                    };
+    
+                    /**
+                     * Creates an EditionDefault message from a plain object. Also converts values to their respective internal types.
+                     * @function fromObject
+                     * @memberof google.protobuf.FieldOptions.EditionDefault
+                     * @static
+                     * @param {Object.<string,*>} object Plain object
+                     * @returns {google.protobuf.FieldOptions.EditionDefault} EditionDefault
+                     */
+                    EditionDefault.fromObject = function fromObject(object) {
+                        if (object instanceof $root.google.protobuf.FieldOptions.EditionDefault)
+                            return object;
+                        var message = new $root.google.protobuf.FieldOptions.EditionDefault();
+                        switch (object.edition) {
+                        default:
+                            if (typeof object.edition === "number") {
+                                message.edition = object.edition;
+                                break;
+                            }
+                            break;
+                        case "EDITION_UNKNOWN":
+                        case 0:
+                            message.edition = 0;
+                            break;
+                        case "EDITION_PROTO2":
+                        case 998:
+                            message.edition = 998;
+                            break;
+                        case "EDITION_PROTO3":
+                        case 999:
+                            message.edition = 999;
+                            break;
+                        case "EDITION_2023":
+                        case 1000:
+                            message.edition = 1000;
+                            break;
+                        case "EDITION_2024":
+                        case 1001:
+                            message.edition = 1001;
+                            break;
+                        case "EDITION_1_TEST_ONLY":
+                        case 1:
+                            message.edition = 1;
+                            break;
+                        case "EDITION_2_TEST_ONLY":
+                        case 2:
+                            message.edition = 2;
+                            break;
+                        case "EDITION_99997_TEST_ONLY":
+                        case 99997:
+                            message.edition = 99997;
+                            break;
+                        case "EDITION_99998_TEST_ONLY":
+                        case 99998:
+                            message.edition = 99998;
+                            break;
+                        case "EDITION_99999_TEST_ONLY":
+                        case 99999:
+                            message.edition = 99999;
+                            break;
+                        case "EDITION_MAX":
+                        case 2147483647:
+                            message.edition = 2147483647;
+                            break;
+                        }
+                        if (object.value != null)
+                            message.value = String(object.value);
+                        return message;
+                    };
+    
+                    /**
+                     * Creates a plain object from an EditionDefault message. Also converts values to other types if specified.
+                     * @function toObject
+                     * @memberof google.protobuf.FieldOptions.EditionDefault
+                     * @static
+                     * @param {google.protobuf.FieldOptions.EditionDefault} message EditionDefault
+                     * @param {$protobuf.IConversionOptions} [options] Conversion options
+                     * @returns {Object.<string,*>} Plain object
+                     */
+                    EditionDefault.toObject = function toObject(message, options) {
+                        if (!options)
+                            options = {};
+                        var object = {};
+                        if (options.defaults) {
+                            object.value = "";
+                            object.edition = options.enums === String ? "EDITION_UNKNOWN" : 0;
+                        }
+                        if (message.value != null && message.hasOwnProperty("value"))
+                            object.value = message.value;
+                        if (message.edition != null && message.hasOwnProperty("edition"))
+                            object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] === undefined ? message.edition : $root.google.protobuf.Edition[message.edition] : message.edition;
+                        return object;
+                    };
+    
+                    /**
+                     * Converts this EditionDefault to JSON.
+                     * @function toJSON
+                     * @memberof google.protobuf.FieldOptions.EditionDefault
+                     * @instance
+                     * @returns {Object.<string,*>} JSON object
+                     */
+                    EditionDefault.prototype.toJSON = function toJSON() {
+                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                    };
+    
+                    /**
+                     * Gets the default type url for EditionDefault
+                     * @function getTypeUrl
+                     * @memberof google.protobuf.FieldOptions.EditionDefault
+                     * @static
+                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns {string} The default type url
+                     */
+                    EditionDefault.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                        if (typeUrlPrefix === undefined) {
+                            typeUrlPrefix = "type.googleapis.com";
+                        }
+                        return typeUrlPrefix + "/google.protobuf.FieldOptions.EditionDefault";
+                    };
+    
+                    return EditionDefault;
+                })();
+    
+                return FieldOptions;
+            })();
+    
+            protobuf.OneofOptions = (function() {
+    
+                /**
+                 * Properties of an OneofOptions.
+                 * @memberof google.protobuf
+                 * @interface IOneofOptions
+                 * @property {google.protobuf.IFeatureSet|null} [features] OneofOptions features
+                 * @property {Array.<google.protobuf.IUninterpretedOption>|null} [uninterpretedOption] OneofOptions uninterpretedOption
+                 */
+    
+                /**
+                 * Constructs a new OneofOptions.
+                 * @memberof google.protobuf
+                 * @classdesc Represents an OneofOptions.
+                 * @implements IOneofOptions
+                 * @constructor
+                 * @param {google.protobuf.IOneofOptions=} [properties] Properties to set
+                 */
+                function OneofOptions(properties) {
+                    this.uninterpretedOption = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * OneofOptions features.
+                 * @member {google.protobuf.IFeatureSet|null|undefined} features
+                 * @memberof google.protobuf.OneofOptions
+                 * @instance
+                 */
+                OneofOptions.prototype.features = null;
+    
+                /**
+                 * OneofOptions uninterpretedOption.
+                 * @member {Array.<google.protobuf.IUninterpretedOption>} uninterpretedOption
+                 * @memberof google.protobuf.OneofOptions
+                 * @instance
+                 */
+                OneofOptions.prototype.uninterpretedOption = $util.emptyArray;
+    
+                /**
+                 * Creates a new OneofOptions instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.OneofOptions
+                 * @static
+                 * @param {google.protobuf.IOneofOptions=} [properties] Properties to set
+                 * @returns {google.protobuf.OneofOptions} OneofOptions instance
+                 */
+                OneofOptions.create = function create(properties) {
+                    return new OneofOptions(properties);
+                };
+    
+                /**
+                 * Encodes the specified OneofOptions message. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.OneofOptions
+                 * @static
+                 * @param {google.protobuf.IOneofOptions} message OneofOptions message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                OneofOptions.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.features != null && Object.hasOwnProperty.call(message, "features"))
+                        $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                    if (message.uninterpretedOption != null && message.uninterpretedOption.length)
+                        for (var i = 0; i < message.uninterpretedOption.length; ++i)
+                            $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim();
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified OneofOptions message, length delimited. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.OneofOptions
+                 * @static
+                 * @param {google.protobuf.IOneofOptions} message OneofOptions message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                OneofOptions.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes an OneofOptions message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.OneofOptions
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.OneofOptions} OneofOptions
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                OneofOptions.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.OneofOptions();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                break;
+                            }
+                        case 999: {
+                                if (!(message.uninterpretedOption && message.uninterpretedOption.length))
+                                    message.uninterpretedOption = [];
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes an OneofOptions message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.OneofOptions
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.OneofOptions} OneofOptions
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                OneofOptions.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies an OneofOptions message.
+                 * @function verify
+                 * @memberof google.protobuf.OneofOptions
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                OneofOptions.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.features != null && message.hasOwnProperty("features")) {
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        if (error)
+                            return "features." + error;
+                    }
+                    if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) {
+                        if (!Array.isArray(message.uninterpretedOption))
+                            return "uninterpretedOption: array expected";
+                        for (var i = 0; i < message.uninterpretedOption.length; ++i) {
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            if (error)
+                                return "uninterpretedOption." + error;
+                        }
+                    }
+                    return null;
+                };
+    
+                /**
+                 * Creates an OneofOptions message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.OneofOptions
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.OneofOptions} OneofOptions
+                 */
+                OneofOptions.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.OneofOptions)
+                        return object;
+                    var message = new $root.google.protobuf.OneofOptions();
+                    if (object.features != null) {
+                        if (typeof object.features !== "object")
+                            throw TypeError(".google.protobuf.OneofOptions.features: object expected");
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                    }
+                    if (object.uninterpretedOption) {
+                        if (!Array.isArray(object.uninterpretedOption))
+                            throw TypeError(".google.protobuf.OneofOptions.uninterpretedOption: array expected");
+                        message.uninterpretedOption = [];
+                        for (var i = 0; i < object.uninterpretedOption.length; ++i) {
+                            if (typeof object.uninterpretedOption[i] !== "object")
+                                throw TypeError(".google.protobuf.OneofOptions.uninterpretedOption: object expected");
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from an OneofOptions message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.OneofOptions
+                 * @static
+                 * @param {google.protobuf.OneofOptions} message OneofOptions
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                OneofOptions.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults)
+                        object.uninterpretedOption = [];
+                    if (options.defaults)
+                        object.features = null;
+                    if (message.features != null && message.hasOwnProperty("features"))
+                        object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options);
+                    if (message.uninterpretedOption && message.uninterpretedOption.length) {
+                        object.uninterpretedOption = [];
+                        for (var j = 0; j < message.uninterpretedOption.length; ++j)
+                            object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options);
+                    }
+                    return object;
+                };
+    
+                /**
+                 * Converts this OneofOptions to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.OneofOptions
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                OneofOptions.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for OneofOptions
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.OneofOptions
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                OneofOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.OneofOptions";
+                };
+    
+                return OneofOptions;
+            })();
+    
+            protobuf.EnumOptions = (function() {
+    
+                /**
+                 * Properties of an EnumOptions.
+                 * @memberof google.protobuf
+                 * @interface IEnumOptions
+                 * @property {boolean|null} [allowAlias] EnumOptions allowAlias
+                 * @property {boolean|null} [deprecated] EnumOptions deprecated
+                 * @property {boolean|null} [deprecatedLegacyJsonFieldConflicts] EnumOptions deprecatedLegacyJsonFieldConflicts
+                 * @property {google.protobuf.IFeatureSet|null} [features] EnumOptions features
+                 * @property {Array.<google.protobuf.IUninterpretedOption>|null} [uninterpretedOption] EnumOptions uninterpretedOption
+                 */
+    
+                /**
+                 * Constructs a new EnumOptions.
+                 * @memberof google.protobuf
+                 * @classdesc Represents an EnumOptions.
+                 * @implements IEnumOptions
+                 * @constructor
+                 * @param {google.protobuf.IEnumOptions=} [properties] Properties to set
+                 */
+                function EnumOptions(properties) {
+                    this.uninterpretedOption = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * EnumOptions allowAlias.
+                 * @member {boolean} allowAlias
+                 * @memberof google.protobuf.EnumOptions
+                 * @instance
+                 */
+                EnumOptions.prototype.allowAlias = false;
+    
+                /**
+                 * EnumOptions deprecated.
+                 * @member {boolean} deprecated
+                 * @memberof google.protobuf.EnumOptions
+                 * @instance
+                 */
+                EnumOptions.prototype.deprecated = false;
+    
+                /**
+                 * EnumOptions deprecatedLegacyJsonFieldConflicts.
+                 * @member {boolean} deprecatedLegacyJsonFieldConflicts
+                 * @memberof google.protobuf.EnumOptions
+                 * @instance
+                 */
+                EnumOptions.prototype.deprecatedLegacyJsonFieldConflicts = false;
+    
+                /**
+                 * EnumOptions features.
+                 * @member {google.protobuf.IFeatureSet|null|undefined} features
+                 * @memberof google.protobuf.EnumOptions
+                 * @instance
+                 */
+                EnumOptions.prototype.features = null;
+    
+                /**
+                 * EnumOptions uninterpretedOption.
+                 * @member {Array.<google.protobuf.IUninterpretedOption>} uninterpretedOption
+                 * @memberof google.protobuf.EnumOptions
+                 * @instance
+                 */
+                EnumOptions.prototype.uninterpretedOption = $util.emptyArray;
+    
+                /**
+                 * Creates a new EnumOptions instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.EnumOptions
+                 * @static
+                 * @param {google.protobuf.IEnumOptions=} [properties] Properties to set
+                 * @returns {google.protobuf.EnumOptions} EnumOptions instance
+                 */
+                EnumOptions.create = function create(properties) {
+                    return new EnumOptions(properties);
+                };
+    
+                /**
+                 * Encodes the specified EnumOptions message. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.EnumOptions
+                 * @static
+                 * @param {google.protobuf.IEnumOptions} message EnumOptions message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                EnumOptions.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.allowAlias != null && Object.hasOwnProperty.call(message, "allowAlias"))
+                        writer.uint32(/* id 2, wireType 0 =*/16).bool(message.allowAlias);
+                    if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated"))
+                        writer.uint32(/* id 3, wireType 0 =*/24).bool(message.deprecated);
+                    if (message.deprecatedLegacyJsonFieldConflicts != null && Object.hasOwnProperty.call(message, "deprecatedLegacyJsonFieldConflicts"))
+                        writer.uint32(/* id 6, wireType 0 =*/48).bool(message.deprecatedLegacyJsonFieldConflicts);
+                    if (message.features != null && Object.hasOwnProperty.call(message, "features"))
+                        $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();
+                    if (message.uninterpretedOption != null && message.uninterpretedOption.length)
+                        for (var i = 0; i < message.uninterpretedOption.length; ++i)
+                            $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim();
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified EnumOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.EnumOptions
+                 * @static
+                 * @param {google.protobuf.IEnumOptions} message EnumOptions message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                EnumOptions.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes an EnumOptions message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.EnumOptions
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.EnumOptions} EnumOptions
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                EnumOptions.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumOptions();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 2: {
+                                message.allowAlias = reader.bool();
+                                break;
+                            }
+                        case 3: {
+                                message.deprecated = reader.bool();
+                                break;
+                            }
+                        case 6: {
+                                message.deprecatedLegacyJsonFieldConflicts = reader.bool();
+                                break;
+                            }
+                        case 7: {
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                break;
+                            }
+                        case 999: {
+                                if (!(message.uninterpretedOption && message.uninterpretedOption.length))
+                                    message.uninterpretedOption = [];
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes an EnumOptions message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.EnumOptions
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.EnumOptions} EnumOptions
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                EnumOptions.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies an EnumOptions message.
+                 * @function verify
+                 * @memberof google.protobuf.EnumOptions
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                EnumOptions.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.allowAlias != null && message.hasOwnProperty("allowAlias"))
+                        if (typeof message.allowAlias !== "boolean")
+                            return "allowAlias: boolean expected";
+                    if (message.deprecated != null && message.hasOwnProperty("deprecated"))
+                        if (typeof message.deprecated !== "boolean")
+                            return "deprecated: boolean expected";
+                    if (message.deprecatedLegacyJsonFieldConflicts != null && message.hasOwnProperty("deprecatedLegacyJsonFieldConflicts"))
+                        if (typeof message.deprecatedLegacyJsonFieldConflicts !== "boolean")
+                            return "deprecatedLegacyJsonFieldConflicts: boolean expected";
+                    if (message.features != null && message.hasOwnProperty("features")) {
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        if (error)
+                            return "features." + error;
+                    }
+                    if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) {
+                        if (!Array.isArray(message.uninterpretedOption))
+                            return "uninterpretedOption: array expected";
+                        for (var i = 0; i < message.uninterpretedOption.length; ++i) {
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            if (error)
+                                return "uninterpretedOption." + error;
+                        }
+                    }
+                    return null;
+                };
+    
+                /**
+                 * Creates an EnumOptions message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.EnumOptions
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.EnumOptions} EnumOptions
+                 */
+                EnumOptions.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.EnumOptions)
+                        return object;
+                    var message = new $root.google.protobuf.EnumOptions();
+                    if (object.allowAlias != null)
+                        message.allowAlias = Boolean(object.allowAlias);
+                    if (object.deprecated != null)
+                        message.deprecated = Boolean(object.deprecated);
+                    if (object.deprecatedLegacyJsonFieldConflicts != null)
+                        message.deprecatedLegacyJsonFieldConflicts = Boolean(object.deprecatedLegacyJsonFieldConflicts);
+                    if (object.features != null) {
+                        if (typeof object.features !== "object")
+                            throw TypeError(".google.protobuf.EnumOptions.features: object expected");
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                    }
+                    if (object.uninterpretedOption) {
+                        if (!Array.isArray(object.uninterpretedOption))
+                            throw TypeError(".google.protobuf.EnumOptions.uninterpretedOption: array expected");
+                        message.uninterpretedOption = [];
+                        for (var i = 0; i < object.uninterpretedOption.length; ++i) {
+                            if (typeof object.uninterpretedOption[i] !== "object")
+                                throw TypeError(".google.protobuf.EnumOptions.uninterpretedOption: object expected");
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from an EnumOptions message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.EnumOptions
+                 * @static
+                 * @param {google.protobuf.EnumOptions} message EnumOptions
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                EnumOptions.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults)
+                        object.uninterpretedOption = [];
+                    if (options.defaults) {
+                        object.allowAlias = false;
+                        object.deprecated = false;
+                        object.deprecatedLegacyJsonFieldConflicts = false;
+                        object.features = null;
+                    }
+                    if (message.allowAlias != null && message.hasOwnProperty("allowAlias"))
+                        object.allowAlias = message.allowAlias;
+                    if (message.deprecated != null && message.hasOwnProperty("deprecated"))
+                        object.deprecated = message.deprecated;
+                    if (message.deprecatedLegacyJsonFieldConflicts != null && message.hasOwnProperty("deprecatedLegacyJsonFieldConflicts"))
+                        object.deprecatedLegacyJsonFieldConflicts = message.deprecatedLegacyJsonFieldConflicts;
+                    if (message.features != null && message.hasOwnProperty("features"))
+                        object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options);
+                    if (message.uninterpretedOption && message.uninterpretedOption.length) {
+                        object.uninterpretedOption = [];
+                        for (var j = 0; j < message.uninterpretedOption.length; ++j)
+                            object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options);
+                    }
+                    return object;
+                };
+    
+                /**
+                 * Converts this EnumOptions to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.EnumOptions
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                EnumOptions.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for EnumOptions
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.EnumOptions
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                EnumOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.EnumOptions";
+                };
+    
+                return EnumOptions;
+            })();
+    
+            protobuf.EnumValueOptions = (function() {
+    
+                /**
+                 * Properties of an EnumValueOptions.
+                 * @memberof google.protobuf
+                 * @interface IEnumValueOptions
+                 * @property {boolean|null} [deprecated] EnumValueOptions deprecated
+                 * @property {google.protobuf.IFeatureSet|null} [features] EnumValueOptions features
+                 * @property {boolean|null} [debugRedact] EnumValueOptions debugRedact
+                 * @property {Array.<google.protobuf.IUninterpretedOption>|null} [uninterpretedOption] EnumValueOptions uninterpretedOption
+                 */
+    
+                /**
+                 * Constructs a new EnumValueOptions.
+                 * @memberof google.protobuf
+                 * @classdesc Represents an EnumValueOptions.
+                 * @implements IEnumValueOptions
+                 * @constructor
+                 * @param {google.protobuf.IEnumValueOptions=} [properties] Properties to set
+                 */
+                function EnumValueOptions(properties) {
+                    this.uninterpretedOption = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * EnumValueOptions deprecated.
+                 * @member {boolean} deprecated
+                 * @memberof google.protobuf.EnumValueOptions
+                 * @instance
+                 */
+                EnumValueOptions.prototype.deprecated = false;
+    
+                /**
+                 * EnumValueOptions features.
+                 * @member {google.protobuf.IFeatureSet|null|undefined} features
+                 * @memberof google.protobuf.EnumValueOptions
+                 * @instance
+                 */
+                EnumValueOptions.prototype.features = null;
+    
+                /**
+                 * EnumValueOptions debugRedact.
+                 * @member {boolean} debugRedact
+                 * @memberof google.protobuf.EnumValueOptions
+                 * @instance
+                 */
+                EnumValueOptions.prototype.debugRedact = false;
+    
+                /**
+                 * EnumValueOptions uninterpretedOption.
+                 * @member {Array.<google.protobuf.IUninterpretedOption>} uninterpretedOption
+                 * @memberof google.protobuf.EnumValueOptions
+                 * @instance
+                 */
+                EnumValueOptions.prototype.uninterpretedOption = $util.emptyArray;
+    
+                /**
+                 * Creates a new EnumValueOptions instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.EnumValueOptions
+                 * @static
+                 * @param {google.protobuf.IEnumValueOptions=} [properties] Properties to set
+                 * @returns {google.protobuf.EnumValueOptions} EnumValueOptions instance
+                 */
+                EnumValueOptions.create = function create(properties) {
+                    return new EnumValueOptions(properties);
+                };
+    
+                /**
+                 * Encodes the specified EnumValueOptions message. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.EnumValueOptions
+                 * @static
+                 * @param {google.protobuf.IEnumValueOptions} message EnumValueOptions message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                EnumValueOptions.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated"))
+                        writer.uint32(/* id 1, wireType 0 =*/8).bool(message.deprecated);
+                    if (message.features != null && Object.hasOwnProperty.call(message, "features"))
+                        $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+                    if (message.debugRedact != null && Object.hasOwnProperty.call(message, "debugRedact"))
+                        writer.uint32(/* id 3, wireType 0 =*/24).bool(message.debugRedact);
+                    if (message.uninterpretedOption != null && message.uninterpretedOption.length)
+                        for (var i = 0; i < message.uninterpretedOption.length; ++i)
+                            $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim();
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified EnumValueOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.EnumValueOptions
+                 * @static
+                 * @param {google.protobuf.IEnumValueOptions} message EnumValueOptions message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                EnumValueOptions.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes an EnumValueOptions message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.EnumValueOptions
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.EnumValueOptions} EnumValueOptions
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                EnumValueOptions.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumValueOptions();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.deprecated = reader.bool();
+                                break;
+                            }
+                        case 2: {
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                break;
+                            }
+                        case 3: {
+                                message.debugRedact = reader.bool();
+                                break;
+                            }
+                        case 999: {
+                                if (!(message.uninterpretedOption && message.uninterpretedOption.length))
+                                    message.uninterpretedOption = [];
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes an EnumValueOptions message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.EnumValueOptions
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.EnumValueOptions} EnumValueOptions
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                EnumValueOptions.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies an EnumValueOptions message.
+                 * @function verify
+                 * @memberof google.protobuf.EnumValueOptions
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                EnumValueOptions.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.deprecated != null && message.hasOwnProperty("deprecated"))
+                        if (typeof message.deprecated !== "boolean")
+                            return "deprecated: boolean expected";
+                    if (message.features != null && message.hasOwnProperty("features")) {
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        if (error)
+                            return "features." + error;
+                    }
+                    if (message.debugRedact != null && message.hasOwnProperty("debugRedact"))
+                        if (typeof message.debugRedact !== "boolean")
+                            return "debugRedact: boolean expected";
+                    if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) {
+                        if (!Array.isArray(message.uninterpretedOption))
+                            return "uninterpretedOption: array expected";
+                        for (var i = 0; i < message.uninterpretedOption.length; ++i) {
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            if (error)
+                                return "uninterpretedOption." + error;
+                        }
+                    }
+                    return null;
+                };
+    
+                /**
+                 * Creates an EnumValueOptions message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.EnumValueOptions
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.EnumValueOptions} EnumValueOptions
+                 */
+                EnumValueOptions.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.EnumValueOptions)
+                        return object;
+                    var message = new $root.google.protobuf.EnumValueOptions();
+                    if (object.deprecated != null)
+                        message.deprecated = Boolean(object.deprecated);
+                    if (object.features != null) {
+                        if (typeof object.features !== "object")
+                            throw TypeError(".google.protobuf.EnumValueOptions.features: object expected");
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                    }
+                    if (object.debugRedact != null)
+                        message.debugRedact = Boolean(object.debugRedact);
+                    if (object.uninterpretedOption) {
+                        if (!Array.isArray(object.uninterpretedOption))
+                            throw TypeError(".google.protobuf.EnumValueOptions.uninterpretedOption: array expected");
+                        message.uninterpretedOption = [];
+                        for (var i = 0; i < object.uninterpretedOption.length; ++i) {
+                            if (typeof object.uninterpretedOption[i] !== "object")
+                                throw TypeError(".google.protobuf.EnumValueOptions.uninterpretedOption: object expected");
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from an EnumValueOptions message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.EnumValueOptions
+                 * @static
+                 * @param {google.protobuf.EnumValueOptions} message EnumValueOptions
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                EnumValueOptions.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults)
+                        object.uninterpretedOption = [];
+                    if (options.defaults) {
+                        object.deprecated = false;
+                        object.features = null;
+                        object.debugRedact = false;
+                    }
+                    if (message.deprecated != null && message.hasOwnProperty("deprecated"))
+                        object.deprecated = message.deprecated;
+                    if (message.features != null && message.hasOwnProperty("features"))
+                        object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options);
+                    if (message.debugRedact != null && message.hasOwnProperty("debugRedact"))
+                        object.debugRedact = message.debugRedact;
+                    if (message.uninterpretedOption && message.uninterpretedOption.length) {
+                        object.uninterpretedOption = [];
+                        for (var j = 0; j < message.uninterpretedOption.length; ++j)
+                            object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options);
+                    }
+                    return object;
+                };
+    
+                /**
+                 * Converts this EnumValueOptions to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.EnumValueOptions
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                EnumValueOptions.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for EnumValueOptions
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.EnumValueOptions
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                EnumValueOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.EnumValueOptions";
+                };
+    
+                return EnumValueOptions;
+            })();
+    
+            protobuf.ServiceOptions = (function() {
+    
+                /**
+                 * Properties of a ServiceOptions.
+                 * @memberof google.protobuf
+                 * @interface IServiceOptions
+                 * @property {google.protobuf.IFeatureSet|null} [features] ServiceOptions features
+                 * @property {boolean|null} [deprecated] ServiceOptions deprecated
+                 * @property {Array.<google.protobuf.IUninterpretedOption>|null} [uninterpretedOption] ServiceOptions uninterpretedOption
+                 * @property {string|null} [".google.api.defaultHost"] ServiceOptions .google.api.defaultHost
+                 * @property {string|null} [".google.api.oauthScopes"] ServiceOptions .google.api.oauthScopes
+                 * @property {string|null} [".google.api.apiVersion"] ServiceOptions .google.api.apiVersion
+                 */
+    
+                /**
+                 * Constructs a new ServiceOptions.
+                 * @memberof google.protobuf
+                 * @classdesc Represents a ServiceOptions.
+                 * @implements IServiceOptions
+                 * @constructor
+                 * @param {google.protobuf.IServiceOptions=} [properties] Properties to set
+                 */
+                function ServiceOptions(properties) {
+                    this.uninterpretedOption = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * ServiceOptions features.
+                 * @member {google.protobuf.IFeatureSet|null|undefined} features
+                 * @memberof google.protobuf.ServiceOptions
+                 * @instance
+                 */
+                ServiceOptions.prototype.features = null;
+    
+                /**
+                 * ServiceOptions deprecated.
+                 * @member {boolean} deprecated
+                 * @memberof google.protobuf.ServiceOptions
+                 * @instance
+                 */
+                ServiceOptions.prototype.deprecated = false;
+    
+                /**
+                 * ServiceOptions uninterpretedOption.
+                 * @member {Array.<google.protobuf.IUninterpretedOption>} uninterpretedOption
+                 * @memberof google.protobuf.ServiceOptions
+                 * @instance
+                 */
+                ServiceOptions.prototype.uninterpretedOption = $util.emptyArray;
+    
+                /**
+                 * ServiceOptions .google.api.defaultHost.
+                 * @member {string} .google.api.defaultHost
+                 * @memberof google.protobuf.ServiceOptions
+                 * @instance
+                 */
+                ServiceOptions.prototype[".google.api.defaultHost"] = "";
+    
+                /**
+                 * ServiceOptions .google.api.oauthScopes.
+                 * @member {string} .google.api.oauthScopes
+                 * @memberof google.protobuf.ServiceOptions
+                 * @instance
+                 */
+                ServiceOptions.prototype[".google.api.oauthScopes"] = "";
+    
+                /**
+                 * ServiceOptions .google.api.apiVersion.
+                 * @member {string} .google.api.apiVersion
+                 * @memberof google.protobuf.ServiceOptions
+                 * @instance
+                 */
+                ServiceOptions.prototype[".google.api.apiVersion"] = "";
+    
+                /**
+                 * Creates a new ServiceOptions instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.ServiceOptions
+                 * @static
+                 * @param {google.protobuf.IServiceOptions=} [properties] Properties to set
+                 * @returns {google.protobuf.ServiceOptions} ServiceOptions instance
+                 */
+                ServiceOptions.create = function create(properties) {
+                    return new ServiceOptions(properties);
+                };
+    
+                /**
+                 * Encodes the specified ServiceOptions message. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.ServiceOptions
+                 * @static
+                 * @param {google.protobuf.IServiceOptions} message ServiceOptions message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                ServiceOptions.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated"))
+                        writer.uint32(/* id 33, wireType 0 =*/264).bool(message.deprecated);
+                    if (message.features != null && Object.hasOwnProperty.call(message, "features"))
+                        $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 34, wireType 2 =*/274).fork()).ldelim();
+                    if (message.uninterpretedOption != null && message.uninterpretedOption.length)
+                        for (var i = 0; i < message.uninterpretedOption.length; ++i)
+                            $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim();
+                    if (message[".google.api.defaultHost"] != null && Object.hasOwnProperty.call(message, ".google.api.defaultHost"))
+                        writer.uint32(/* id 1049, wireType 2 =*/8394).string(message[".google.api.defaultHost"]);
+                    if (message[".google.api.oauthScopes"] != null && Object.hasOwnProperty.call(message, ".google.api.oauthScopes"))
+                        writer.uint32(/* id 1050, wireType 2 =*/8402).string(message[".google.api.oauthScopes"]);
+                    if (message[".google.api.apiVersion"] != null && Object.hasOwnProperty.call(message, ".google.api.apiVersion"))
+                        writer.uint32(/* id 525000001, wireType 2 =*/4200000010).string(message[".google.api.apiVersion"]);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified ServiceOptions message, length delimited. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.ServiceOptions
+                 * @static
+                 * @param {google.protobuf.IServiceOptions} message ServiceOptions message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                ServiceOptions.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a ServiceOptions message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.ServiceOptions
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.ServiceOptions} ServiceOptions
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                ServiceOptions.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ServiceOptions();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 34: {
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                break;
+                            }
+                        case 33: {
+                                message.deprecated = reader.bool();
+                                break;
+                            }
+                        case 999: {
+                                if (!(message.uninterpretedOption && message.uninterpretedOption.length))
+                                    message.uninterpretedOption = [];
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        case 1049: {
+                                message[".google.api.defaultHost"] = reader.string();
+                                break;
+                            }
+                        case 1050: {
+                                message[".google.api.oauthScopes"] = reader.string();
+                                break;
+                            }
+                        case 525000001: {
+                                message[".google.api.apiVersion"] = reader.string();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a ServiceOptions message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.ServiceOptions
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.ServiceOptions} ServiceOptions
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                ServiceOptions.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a ServiceOptions message.
+                 * @function verify
+                 * @memberof google.protobuf.ServiceOptions
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                ServiceOptions.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.features != null && message.hasOwnProperty("features")) {
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        if (error)
+                            return "features." + error;
+                    }
+                    if (message.deprecated != null && message.hasOwnProperty("deprecated"))
+                        if (typeof message.deprecated !== "boolean")
+                            return "deprecated: boolean expected";
+                    if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) {
+                        if (!Array.isArray(message.uninterpretedOption))
+                            return "uninterpretedOption: array expected";
+                        for (var i = 0; i < message.uninterpretedOption.length; ++i) {
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            if (error)
+                                return "uninterpretedOption." + error;
+                        }
+                    }
+                    if (message[".google.api.defaultHost"] != null && message.hasOwnProperty(".google.api.defaultHost"))
+                        if (!$util.isString(message[".google.api.defaultHost"]))
+                            return ".google.api.defaultHost: string expected";
+                    if (message[".google.api.oauthScopes"] != null && message.hasOwnProperty(".google.api.oauthScopes"))
+                        if (!$util.isString(message[".google.api.oauthScopes"]))
+                            return ".google.api.oauthScopes: string expected";
+                    if (message[".google.api.apiVersion"] != null && message.hasOwnProperty(".google.api.apiVersion"))
+                        if (!$util.isString(message[".google.api.apiVersion"]))
+                            return ".google.api.apiVersion: string expected";
+                    return null;
+                };
+    
+                /**
+                 * Creates a ServiceOptions message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.ServiceOptions
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.ServiceOptions} ServiceOptions
+                 */
+                ServiceOptions.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.ServiceOptions)
+                        return object;
+                    var message = new $root.google.protobuf.ServiceOptions();
+                    if (object.features != null) {
+                        if (typeof object.features !== "object")
+                            throw TypeError(".google.protobuf.ServiceOptions.features: object expected");
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                    }
+                    if (object.deprecated != null)
+                        message.deprecated = Boolean(object.deprecated);
+                    if (object.uninterpretedOption) {
+                        if (!Array.isArray(object.uninterpretedOption))
+                            throw TypeError(".google.protobuf.ServiceOptions.uninterpretedOption: array expected");
+                        message.uninterpretedOption = [];
+                        for (var i = 0; i < object.uninterpretedOption.length; ++i) {
+                            if (typeof object.uninterpretedOption[i] !== "object")
+                                throw TypeError(".google.protobuf.ServiceOptions.uninterpretedOption: object expected");
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                        }
+                    }
+                    if (object[".google.api.defaultHost"] != null)
+                        message[".google.api.defaultHost"] = String(object[".google.api.defaultHost"]);
+                    if (object[".google.api.oauthScopes"] != null)
+                        message[".google.api.oauthScopes"] = String(object[".google.api.oauthScopes"]);
+                    if (object[".google.api.apiVersion"] != null)
+                        message[".google.api.apiVersion"] = String(object[".google.api.apiVersion"]);
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a ServiceOptions message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.ServiceOptions
+                 * @static
+                 * @param {google.protobuf.ServiceOptions} message ServiceOptions
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                ServiceOptions.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults)
+                        object.uninterpretedOption = [];
+                    if (options.defaults) {
+                        object.deprecated = false;
+                        object.features = null;
+                        object[".google.api.defaultHost"] = "";
+                        object[".google.api.oauthScopes"] = "";
+                        object[".google.api.apiVersion"] = "";
+                    }
+                    if (message.deprecated != null && message.hasOwnProperty("deprecated"))
+                        object.deprecated = message.deprecated;
+                    if (message.features != null && message.hasOwnProperty("features"))
+                        object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options);
+                    if (message.uninterpretedOption && message.uninterpretedOption.length) {
+                        object.uninterpretedOption = [];
+                        for (var j = 0; j < message.uninterpretedOption.length; ++j)
+                            object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options);
+                    }
+                    if (message[".google.api.defaultHost"] != null && message.hasOwnProperty(".google.api.defaultHost"))
+                        object[".google.api.defaultHost"] = message[".google.api.defaultHost"];
+                    if (message[".google.api.oauthScopes"] != null && message.hasOwnProperty(".google.api.oauthScopes"))
+                        object[".google.api.oauthScopes"] = message[".google.api.oauthScopes"];
+                    if (message[".google.api.apiVersion"] != null && message.hasOwnProperty(".google.api.apiVersion"))
+                        object[".google.api.apiVersion"] = message[".google.api.apiVersion"];
+                    return object;
+                };
+    
+                /**
+                 * Converts this ServiceOptions to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.ServiceOptions
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                ServiceOptions.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for ServiceOptions
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.ServiceOptions
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                ServiceOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.ServiceOptions";
+                };
+    
+                return ServiceOptions;
+            })();
+    
+            protobuf.MethodOptions = (function() {
+    
+                /**
+                 * Properties of a MethodOptions.
+                 * @memberof google.protobuf
+                 * @interface IMethodOptions
+                 * @property {boolean|null} [deprecated] MethodOptions deprecated
+                 * @property {google.protobuf.MethodOptions.IdempotencyLevel|null} [idempotencyLevel] MethodOptions idempotencyLevel
+                 * @property {google.protobuf.IFeatureSet|null} [features] MethodOptions features
+                 * @property {Array.<google.protobuf.IUninterpretedOption>|null} [uninterpretedOption] MethodOptions uninterpretedOption
+                 * @property {google.api.IHttpRule|null} [".google.api.http"] MethodOptions .google.api.http
+                 * @property {Array.<string>|null} [".google.api.methodSignature"] MethodOptions .google.api.methodSignature
+                 */
+    
+                /**
+                 * Constructs a new MethodOptions.
+                 * @memberof google.protobuf
+                 * @classdesc Represents a MethodOptions.
+                 * @implements IMethodOptions
+                 * @constructor
+                 * @param {google.protobuf.IMethodOptions=} [properties] Properties to set
+                 */
+                function MethodOptions(properties) {
+                    this.uninterpretedOption = [];
+                    this[".google.api.methodSignature"] = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * MethodOptions deprecated.
+                 * @member {boolean} deprecated
+                 * @memberof google.protobuf.MethodOptions
+                 * @instance
+                 */
+                MethodOptions.prototype.deprecated = false;
+    
+                /**
+                 * MethodOptions idempotencyLevel.
+                 * @member {google.protobuf.MethodOptions.IdempotencyLevel} idempotencyLevel
+                 * @memberof google.protobuf.MethodOptions
+                 * @instance
+                 */
+                MethodOptions.prototype.idempotencyLevel = 0;
+    
+                /**
+                 * MethodOptions features.
+                 * @member {google.protobuf.IFeatureSet|null|undefined} features
+                 * @memberof google.protobuf.MethodOptions
+                 * @instance
+                 */
+                MethodOptions.prototype.features = null;
+    
+                /**
+                 * MethodOptions uninterpretedOption.
+                 * @member {Array.<google.protobuf.IUninterpretedOption>} uninterpretedOption
+                 * @memberof google.protobuf.MethodOptions
+                 * @instance
+                 */
+                MethodOptions.prototype.uninterpretedOption = $util.emptyArray;
+    
+                /**
+                 * MethodOptions .google.api.http.
+                 * @member {google.api.IHttpRule|null|undefined} .google.api.http
+                 * @memberof google.protobuf.MethodOptions
+                 * @instance
+                 */
+                MethodOptions.prototype[".google.api.http"] = null;
+    
+                /**
+                 * MethodOptions .google.api.methodSignature.
+                 * @member {Array.<string>} .google.api.methodSignature
+                 * @memberof google.protobuf.MethodOptions
+                 * @instance
+                 */
+                MethodOptions.prototype[".google.api.methodSignature"] = $util.emptyArray;
+    
+                /**
+                 * Creates a new MethodOptions instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.MethodOptions
+                 * @static
+                 * @param {google.protobuf.IMethodOptions=} [properties] Properties to set
+                 * @returns {google.protobuf.MethodOptions} MethodOptions instance
+                 */
+                MethodOptions.create = function create(properties) {
+                    return new MethodOptions(properties);
+                };
+    
+                /**
+                 * Encodes the specified MethodOptions message. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.MethodOptions
+                 * @static
+                 * @param {google.protobuf.IMethodOptions} message MethodOptions message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                MethodOptions.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.deprecated != null && Object.hasOwnProperty.call(message, "deprecated"))
+                        writer.uint32(/* id 33, wireType 0 =*/264).bool(message.deprecated);
+                    if (message.idempotencyLevel != null && Object.hasOwnProperty.call(message, "idempotencyLevel"))
+                        writer.uint32(/* id 34, wireType 0 =*/272).int32(message.idempotencyLevel);
+                    if (message.features != null && Object.hasOwnProperty.call(message, "features"))
+                        $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 35, wireType 2 =*/282).fork()).ldelim();
+                    if (message.uninterpretedOption != null && message.uninterpretedOption.length)
+                        for (var i = 0; i < message.uninterpretedOption.length; ++i)
+                            $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim();
+                    if (message[".google.api.methodSignature"] != null && message[".google.api.methodSignature"].length)
+                        for (var i = 0; i < message[".google.api.methodSignature"].length; ++i)
+                            writer.uint32(/* id 1051, wireType 2 =*/8410).string(message[".google.api.methodSignature"][i]);
+                    if (message[".google.api.http"] != null && Object.hasOwnProperty.call(message, ".google.api.http"))
+                        $root.google.api.HttpRule.encode(message[".google.api.http"], writer.uint32(/* id 72295728, wireType 2 =*/578365826).fork()).ldelim();
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified MethodOptions message, length delimited. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.MethodOptions
+                 * @static
+                 * @param {google.protobuf.IMethodOptions} message MethodOptions message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                MethodOptions.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a MethodOptions message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.MethodOptions
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.MethodOptions} MethodOptions
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                MethodOptions.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MethodOptions();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 33: {
+                                message.deprecated = reader.bool();
+                                break;
+                            }
+                        case 34: {
+                                message.idempotencyLevel = reader.int32();
+                                break;
+                            }
+                        case 35: {
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                break;
+                            }
+                        case 999: {
+                                if (!(message.uninterpretedOption && message.uninterpretedOption.length))
+                                    message.uninterpretedOption = [];
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        case 72295728: {
+                                message[".google.api.http"] = $root.google.api.HttpRule.decode(reader, reader.uint32());
+                                break;
+                            }
+                        case 1051: {
+                                if (!(message[".google.api.methodSignature"] && message[".google.api.methodSignature"].length))
+                                    message[".google.api.methodSignature"] = [];
+                                message[".google.api.methodSignature"].push(reader.string());
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a MethodOptions message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.MethodOptions
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.MethodOptions} MethodOptions
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                MethodOptions.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a MethodOptions message.
+                 * @function verify
+                 * @memberof google.protobuf.MethodOptions
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                MethodOptions.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.deprecated != null && message.hasOwnProperty("deprecated"))
+                        if (typeof message.deprecated !== "boolean")
+                            return "deprecated: boolean expected";
+                    if (message.idempotencyLevel != null && message.hasOwnProperty("idempotencyLevel"))
+                        switch (message.idempotencyLevel) {
+                        default:
+                            return "idempotencyLevel: enum value expected";
+                        case 0:
+                        case 1:
+                        case 2:
+                            break;
+                        }
+                    if (message.features != null && message.hasOwnProperty("features")) {
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        if (error)
+                            return "features." + error;
+                    }
+                    if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) {
+                        if (!Array.isArray(message.uninterpretedOption))
+                            return "uninterpretedOption: array expected";
+                        for (var i = 0; i < message.uninterpretedOption.length; ++i) {
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            if (error)
+                                return "uninterpretedOption." + error;
+                        }
+                    }
+                    if (message[".google.api.http"] != null && message.hasOwnProperty(".google.api.http")) {
+                        var error = $root.google.api.HttpRule.verify(message[".google.api.http"]);
+                        if (error)
+                            return ".google.api.http." + error;
+                    }
+                    if (message[".google.api.methodSignature"] != null && message.hasOwnProperty(".google.api.methodSignature")) {
+                        if (!Array.isArray(message[".google.api.methodSignature"]))
+                            return ".google.api.methodSignature: array expected";
+                        for (var i = 0; i < message[".google.api.methodSignature"].length; ++i)
+                            if (!$util.isString(message[".google.api.methodSignature"][i]))
+                                return ".google.api.methodSignature: string[] expected";
+                    }
+                    return null;
+                };
+    
+                /**
+                 * Creates a MethodOptions message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.MethodOptions
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.MethodOptions} MethodOptions
+                 */
+                MethodOptions.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.MethodOptions)
+                        return object;
+                    var message = new $root.google.protobuf.MethodOptions();
+                    if (object.deprecated != null)
+                        message.deprecated = Boolean(object.deprecated);
+                    switch (object.idempotencyLevel) {
+                    default:
+                        if (typeof object.idempotencyLevel === "number") {
+                            message.idempotencyLevel = object.idempotencyLevel;
+                            break;
+                        }
+                        break;
+                    case "IDEMPOTENCY_UNKNOWN":
+                    case 0:
+                        message.idempotencyLevel = 0;
+                        break;
+                    case "NO_SIDE_EFFECTS":
+                    case 1:
+                        message.idempotencyLevel = 1;
+                        break;
+                    case "IDEMPOTENT":
+                    case 2:
+                        message.idempotencyLevel = 2;
+                        break;
+                    }
+                    if (object.features != null) {
+                        if (typeof object.features !== "object")
+                            throw TypeError(".google.protobuf.MethodOptions.features: object expected");
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                    }
+                    if (object.uninterpretedOption) {
+                        if (!Array.isArray(object.uninterpretedOption))
+                            throw TypeError(".google.protobuf.MethodOptions.uninterpretedOption: array expected");
+                        message.uninterpretedOption = [];
+                        for (var i = 0; i < object.uninterpretedOption.length; ++i) {
+                            if (typeof object.uninterpretedOption[i] !== "object")
+                                throw TypeError(".google.protobuf.MethodOptions.uninterpretedOption: object expected");
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                        }
+                    }
+                    if (object[".google.api.http"] != null) {
+                        if (typeof object[".google.api.http"] !== "object")
+                            throw TypeError(".google.protobuf.MethodOptions..google.api.http: object expected");
+                        message[".google.api.http"] = $root.google.api.HttpRule.fromObject(object[".google.api.http"]);
+                    }
+                    if (object[".google.api.methodSignature"]) {
+                        if (!Array.isArray(object[".google.api.methodSignature"]))
+                            throw TypeError(".google.protobuf.MethodOptions..google.api.methodSignature: array expected");
+                        message[".google.api.methodSignature"] = [];
+                        for (var i = 0; i < object[".google.api.methodSignature"].length; ++i)
+                            message[".google.api.methodSignature"][i] = String(object[".google.api.methodSignature"][i]);
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a MethodOptions message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.MethodOptions
+                 * @static
+                 * @param {google.protobuf.MethodOptions} message MethodOptions
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                MethodOptions.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults) {
+                        object.uninterpretedOption = [];
+                        object[".google.api.methodSignature"] = [];
+                    }
+                    if (options.defaults) {
+                        object.deprecated = false;
+                        object.idempotencyLevel = options.enums === String ? "IDEMPOTENCY_UNKNOWN" : 0;
+                        object.features = null;
+                        object[".google.api.http"] = null;
+                    }
+                    if (message.deprecated != null && message.hasOwnProperty("deprecated"))
+                        object.deprecated = message.deprecated;
+                    if (message.idempotencyLevel != null && message.hasOwnProperty("idempotencyLevel"))
+                        object.idempotencyLevel = options.enums === String ? $root.google.protobuf.MethodOptions.IdempotencyLevel[message.idempotencyLevel] === undefined ? message.idempotencyLevel : $root.google.protobuf.MethodOptions.IdempotencyLevel[message.idempotencyLevel] : message.idempotencyLevel;
+                    if (message.features != null && message.hasOwnProperty("features"))
+                        object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options);
+                    if (message.uninterpretedOption && message.uninterpretedOption.length) {
+                        object.uninterpretedOption = [];
+                        for (var j = 0; j < message.uninterpretedOption.length; ++j)
+                            object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options);
+                    }
+                    if (message[".google.api.methodSignature"] && message[".google.api.methodSignature"].length) {
+                        object[".google.api.methodSignature"] = [];
+                        for (var j = 0; j < message[".google.api.methodSignature"].length; ++j)
+                            object[".google.api.methodSignature"][j] = message[".google.api.methodSignature"][j];
+                    }
+                    if (message[".google.api.http"] != null && message.hasOwnProperty(".google.api.http"))
+                        object[".google.api.http"] = $root.google.api.HttpRule.toObject(message[".google.api.http"], options);
+                    return object;
+                };
+    
+                /**
+                 * Converts this MethodOptions to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.MethodOptions
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                MethodOptions.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for MethodOptions
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.MethodOptions
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                MethodOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.MethodOptions";
+                };
+    
+                /**
+                 * IdempotencyLevel enum.
+                 * @name google.protobuf.MethodOptions.IdempotencyLevel
+                 * @enum {number}
+                 * @property {number} IDEMPOTENCY_UNKNOWN=0 IDEMPOTENCY_UNKNOWN value
+                 * @property {number} NO_SIDE_EFFECTS=1 NO_SIDE_EFFECTS value
+                 * @property {number} IDEMPOTENT=2 IDEMPOTENT value
+                 */
+                MethodOptions.IdempotencyLevel = (function() {
+                    var valuesById = {}, values = Object.create(valuesById);
+                    values[valuesById[0] = "IDEMPOTENCY_UNKNOWN"] = 0;
+                    values[valuesById[1] = "NO_SIDE_EFFECTS"] = 1;
+                    values[valuesById[2] = "IDEMPOTENT"] = 2;
+                    return values;
+                })();
+    
+                return MethodOptions;
+            })();
+    
+            protobuf.UninterpretedOption = (function() {
+    
+                /**
+                 * Properties of an UninterpretedOption.
+                 * @memberof google.protobuf
+                 * @interface IUninterpretedOption
+                 * @property {Array.<google.protobuf.UninterpretedOption.INamePart>|null} [name] UninterpretedOption name
+                 * @property {string|null} [identifierValue] UninterpretedOption identifierValue
+                 * @property {number|Long|null} [positiveIntValue] UninterpretedOption positiveIntValue
+                 * @property {number|Long|null} [negativeIntValue] UninterpretedOption negativeIntValue
+                 * @property {number|null} [doubleValue] UninterpretedOption doubleValue
+                 * @property {Uint8Array|null} [stringValue] UninterpretedOption stringValue
+                 * @property {string|null} [aggregateValue] UninterpretedOption aggregateValue
+                 */
+    
+                /**
+                 * Constructs a new UninterpretedOption.
+                 * @memberof google.protobuf
+                 * @classdesc Represents an UninterpretedOption.
+                 * @implements IUninterpretedOption
+                 * @constructor
+                 * @param {google.protobuf.IUninterpretedOption=} [properties] Properties to set
+                 */
+                function UninterpretedOption(properties) {
+                    this.name = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * UninterpretedOption name.
+                 * @member {Array.<google.protobuf.UninterpretedOption.INamePart>} name
+                 * @memberof google.protobuf.UninterpretedOption
+                 * @instance
+                 */
+                UninterpretedOption.prototype.name = $util.emptyArray;
+    
+                /**
+                 * UninterpretedOption identifierValue.
+                 * @member {string} identifierValue
+                 * @memberof google.protobuf.UninterpretedOption
+                 * @instance
+                 */
+                UninterpretedOption.prototype.identifierValue = "";
+    
+                /**
+                 * UninterpretedOption positiveIntValue.
+                 * @member {number|Long} positiveIntValue
+                 * @memberof google.protobuf.UninterpretedOption
+                 * @instance
+                 */
+                UninterpretedOption.prototype.positiveIntValue = $util.Long ? $util.Long.fromBits(0,0,true) : 0;
+    
+                /**
+                 * UninterpretedOption negativeIntValue.
+                 * @member {number|Long} negativeIntValue
+                 * @memberof google.protobuf.UninterpretedOption
+                 * @instance
+                 */
+                UninterpretedOption.prototype.negativeIntValue = $util.Long ? $util.Long.fromBits(0,0,false) : 0;
+    
+                /**
+                 * UninterpretedOption doubleValue.
+                 * @member {number} doubleValue
+                 * @memberof google.protobuf.UninterpretedOption
+                 * @instance
+                 */
+                UninterpretedOption.prototype.doubleValue = 0;
+    
+                /**
+                 * UninterpretedOption stringValue.
+                 * @member {Uint8Array} stringValue
+                 * @memberof google.protobuf.UninterpretedOption
+                 * @instance
+                 */
+                UninterpretedOption.prototype.stringValue = $util.newBuffer([]);
+    
+                /**
+                 * UninterpretedOption aggregateValue.
+                 * @member {string} aggregateValue
+                 * @memberof google.protobuf.UninterpretedOption
+                 * @instance
+                 */
+                UninterpretedOption.prototype.aggregateValue = "";
+    
+                /**
+                 * Creates a new UninterpretedOption instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.UninterpretedOption
+                 * @static
+                 * @param {google.protobuf.IUninterpretedOption=} [properties] Properties to set
+                 * @returns {google.protobuf.UninterpretedOption} UninterpretedOption instance
+                 */
+                UninterpretedOption.create = function create(properties) {
+                    return new UninterpretedOption(properties);
+                };
+    
+                /**
+                 * Encodes the specified UninterpretedOption message. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.UninterpretedOption
+                 * @static
+                 * @param {google.protobuf.IUninterpretedOption} message UninterpretedOption message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                UninterpretedOption.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.name != null && message.name.length)
+                        for (var i = 0; i < message.name.length; ++i)
+                            $root.google.protobuf.UninterpretedOption.NamePart.encode(message.name[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+                    if (message.identifierValue != null && Object.hasOwnProperty.call(message, "identifierValue"))
+                        writer.uint32(/* id 3, wireType 2 =*/26).string(message.identifierValue);
+                    if (message.positiveIntValue != null && Object.hasOwnProperty.call(message, "positiveIntValue"))
+                        writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.positiveIntValue);
+                    if (message.negativeIntValue != null && Object.hasOwnProperty.call(message, "negativeIntValue"))
+                        writer.uint32(/* id 5, wireType 0 =*/40).int64(message.negativeIntValue);
+                    if (message.doubleValue != null && Object.hasOwnProperty.call(message, "doubleValue"))
+                        writer.uint32(/* id 6, wireType 1 =*/49).double(message.doubleValue);
+                    if (message.stringValue != null && Object.hasOwnProperty.call(message, "stringValue"))
+                        writer.uint32(/* id 7, wireType 2 =*/58).bytes(message.stringValue);
+                    if (message.aggregateValue != null && Object.hasOwnProperty.call(message, "aggregateValue"))
+                        writer.uint32(/* id 8, wireType 2 =*/66).string(message.aggregateValue);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified UninterpretedOption message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.UninterpretedOption
+                 * @static
+                 * @param {google.protobuf.IUninterpretedOption} message UninterpretedOption message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                UninterpretedOption.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes an UninterpretedOption message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.UninterpretedOption
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.UninterpretedOption} UninterpretedOption
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                UninterpretedOption.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UninterpretedOption();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 2: {
+                                if (!(message.name && message.name.length))
+                                    message.name = [];
+                                message.name.push($root.google.protobuf.UninterpretedOption.NamePart.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        case 3: {
+                                message.identifierValue = reader.string();
+                                break;
+                            }
+                        case 4: {
+                                message.positiveIntValue = reader.uint64();
+                                break;
+                            }
+                        case 5: {
+                                message.negativeIntValue = reader.int64();
+                                break;
+                            }
+                        case 6: {
+                                message.doubleValue = reader.double();
+                                break;
+                            }
+                        case 7: {
+                                message.stringValue = reader.bytes();
+                                break;
+                            }
+                        case 8: {
+                                message.aggregateValue = reader.string();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes an UninterpretedOption message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.UninterpretedOption
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.UninterpretedOption} UninterpretedOption
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                UninterpretedOption.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies an UninterpretedOption message.
+                 * @function verify
+                 * @memberof google.protobuf.UninterpretedOption
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                UninterpretedOption.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.name != null && message.hasOwnProperty("name")) {
+                        if (!Array.isArray(message.name))
+                            return "name: array expected";
+                        for (var i = 0; i < message.name.length; ++i) {
+                            var error = $root.google.protobuf.UninterpretedOption.NamePart.verify(message.name[i]);
+                            if (error)
+                                return "name." + error;
+                        }
+                    }
+                    if (message.identifierValue != null && message.hasOwnProperty("identifierValue"))
+                        if (!$util.isString(message.identifierValue))
+                            return "identifierValue: string expected";
+                    if (message.positiveIntValue != null && message.hasOwnProperty("positiveIntValue"))
+                        if (!$util.isInteger(message.positiveIntValue) && !(message.positiveIntValue && $util.isInteger(message.positiveIntValue.low) && $util.isInteger(message.positiveIntValue.high)))
+                            return "positiveIntValue: integer|Long expected";
+                    if (message.negativeIntValue != null && message.hasOwnProperty("negativeIntValue"))
+                        if (!$util.isInteger(message.negativeIntValue) && !(message.negativeIntValue && $util.isInteger(message.negativeIntValue.low) && $util.isInteger(message.negativeIntValue.high)))
+                            return "negativeIntValue: integer|Long expected";
+                    if (message.doubleValue != null && message.hasOwnProperty("doubleValue"))
+                        if (typeof message.doubleValue !== "number")
+                            return "doubleValue: number expected";
+                    if (message.stringValue != null && message.hasOwnProperty("stringValue"))
+                        if (!(message.stringValue && typeof message.stringValue.length === "number" || $util.isString(message.stringValue)))
+                            return "stringValue: buffer expected";
+                    if (message.aggregateValue != null && message.hasOwnProperty("aggregateValue"))
+                        if (!$util.isString(message.aggregateValue))
+                            return "aggregateValue: string expected";
+                    return null;
+                };
+    
+                /**
+                 * Creates an UninterpretedOption message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.UninterpretedOption
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.UninterpretedOption} UninterpretedOption
+                 */
+                UninterpretedOption.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.UninterpretedOption)
+                        return object;
+                    var message = new $root.google.protobuf.UninterpretedOption();
+                    if (object.name) {
+                        if (!Array.isArray(object.name))
+                            throw TypeError(".google.protobuf.UninterpretedOption.name: array expected");
+                        message.name = [];
+                        for (var i = 0; i < object.name.length; ++i) {
+                            if (typeof object.name[i] !== "object")
+                                throw TypeError(".google.protobuf.UninterpretedOption.name: object expected");
+                            message.name[i] = $root.google.protobuf.UninterpretedOption.NamePart.fromObject(object.name[i]);
+                        }
+                    }
+                    if (object.identifierValue != null)
+                        message.identifierValue = String(object.identifierValue);
+                    if (object.positiveIntValue != null)
+                        if ($util.Long)
+                            (message.positiveIntValue = $util.Long.fromValue(object.positiveIntValue)).unsigned = true;
+                        else if (typeof object.positiveIntValue === "string")
+                            message.positiveIntValue = parseInt(object.positiveIntValue, 10);
+                        else if (typeof object.positiveIntValue === "number")
+                            message.positiveIntValue = object.positiveIntValue;
+                        else if (typeof object.positiveIntValue === "object")
+                            message.positiveIntValue = new $util.LongBits(object.positiveIntValue.low >>> 0, object.positiveIntValue.high >>> 0).toNumber(true);
+                    if (object.negativeIntValue != null)
+                        if ($util.Long)
+                            (message.negativeIntValue = $util.Long.fromValue(object.negativeIntValue)).unsigned = false;
+                        else if (typeof object.negativeIntValue === "string")
+                            message.negativeIntValue = parseInt(object.negativeIntValue, 10);
+                        else if (typeof object.negativeIntValue === "number")
+                            message.negativeIntValue = object.negativeIntValue;
+                        else if (typeof object.negativeIntValue === "object")
+                            message.negativeIntValue = new $util.LongBits(object.negativeIntValue.low >>> 0, object.negativeIntValue.high >>> 0).toNumber();
+                    if (object.doubleValue != null)
+                        message.doubleValue = Number(object.doubleValue);
+                    if (object.stringValue != null)
+                        if (typeof object.stringValue === "string")
+                            $util.base64.decode(object.stringValue, message.stringValue = $util.newBuffer($util.base64.length(object.stringValue)), 0);
+                        else if (object.stringValue.length >= 0)
+                            message.stringValue = object.stringValue;
+                    if (object.aggregateValue != null)
+                        message.aggregateValue = String(object.aggregateValue);
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from an UninterpretedOption message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.UninterpretedOption
+                 * @static
+                 * @param {google.protobuf.UninterpretedOption} message UninterpretedOption
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                UninterpretedOption.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults)
+                        object.name = [];
+                    if (options.defaults) {
+                        object.identifierValue = "";
+                        if ($util.Long) {
+                            var long = new $util.Long(0, 0, true);
+                            object.positiveIntValue = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
+                        } else
+                            object.positiveIntValue = options.longs === String ? "0" : 0;
+                        if ($util.Long) {
+                            var long = new $util.Long(0, 0, false);
+                            object.negativeIntValue = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
+                        } else
+                            object.negativeIntValue = options.longs === String ? "0" : 0;
+                        object.doubleValue = 0;
+                        if (options.bytes === String)
+                            object.stringValue = "";
+                        else {
+                            object.stringValue = [];
+                            if (options.bytes !== Array)
+                                object.stringValue = $util.newBuffer(object.stringValue);
+                        }
+                        object.aggregateValue = "";
+                    }
+                    if (message.name && message.name.length) {
+                        object.name = [];
+                        for (var j = 0; j < message.name.length; ++j)
+                            object.name[j] = $root.google.protobuf.UninterpretedOption.NamePart.toObject(message.name[j], options);
+                    }
+                    if (message.identifierValue != null && message.hasOwnProperty("identifierValue"))
+                        object.identifierValue = message.identifierValue;
+                    if (message.positiveIntValue != null && message.hasOwnProperty("positiveIntValue"))
+                        if (typeof message.positiveIntValue === "number")
+                            object.positiveIntValue = options.longs === String ? String(message.positiveIntValue) : message.positiveIntValue;
+                        else
+                            object.positiveIntValue = options.longs === String ? $util.Long.prototype.toString.call(message.positiveIntValue) : options.longs === Number ? new $util.LongBits(message.positiveIntValue.low >>> 0, message.positiveIntValue.high >>> 0).toNumber(true) : message.positiveIntValue;
+                    if (message.negativeIntValue != null && message.hasOwnProperty("negativeIntValue"))
+                        if (typeof message.negativeIntValue === "number")
+                            object.negativeIntValue = options.longs === String ? String(message.negativeIntValue) : message.negativeIntValue;
+                        else
+                            object.negativeIntValue = options.longs === String ? $util.Long.prototype.toString.call(message.negativeIntValue) : options.longs === Number ? new $util.LongBits(message.negativeIntValue.low >>> 0, message.negativeIntValue.high >>> 0).toNumber() : message.negativeIntValue;
+                    if (message.doubleValue != null && message.hasOwnProperty("doubleValue"))
+                        object.doubleValue = options.json && !isFinite(message.doubleValue) ? String(message.doubleValue) : message.doubleValue;
+                    if (message.stringValue != null && message.hasOwnProperty("stringValue"))
+                        object.stringValue = options.bytes === String ? $util.base64.encode(message.stringValue, 0, message.stringValue.length) : options.bytes === Array ? Array.prototype.slice.call(message.stringValue) : message.stringValue;
+                    if (message.aggregateValue != null && message.hasOwnProperty("aggregateValue"))
+                        object.aggregateValue = message.aggregateValue;
+                    return object;
+                };
+    
+                /**
+                 * Converts this UninterpretedOption to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.UninterpretedOption
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                UninterpretedOption.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for UninterpretedOption
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.UninterpretedOption
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                UninterpretedOption.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.UninterpretedOption";
+                };
+    
+                UninterpretedOption.NamePart = (function() {
+    
+                    /**
+                     * Properties of a NamePart.
+                     * @memberof google.protobuf.UninterpretedOption
+                     * @interface INamePart
+                     * @property {string} namePart NamePart namePart
+                     * @property {boolean} isExtension NamePart isExtension
+                     */
+    
+                    /**
+                     * Constructs a new NamePart.
+                     * @memberof google.protobuf.UninterpretedOption
+                     * @classdesc Represents a NamePart.
+                     * @implements INamePart
+                     * @constructor
+                     * @param {google.protobuf.UninterpretedOption.INamePart=} [properties] Properties to set
+                     */
+                    function NamePart(properties) {
+                        if (properties)
+                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                if (properties[keys[i]] != null)
+                                    this[keys[i]] = properties[keys[i]];
+                    }
+    
+                    /**
+                     * NamePart namePart.
+                     * @member {string} namePart
+                     * @memberof google.protobuf.UninterpretedOption.NamePart
+                     * @instance
+                     */
+                    NamePart.prototype.namePart = "";
+    
+                    /**
+                     * NamePart isExtension.
+                     * @member {boolean} isExtension
+                     * @memberof google.protobuf.UninterpretedOption.NamePart
+                     * @instance
+                     */
+                    NamePart.prototype.isExtension = false;
+    
+                    /**
+                     * Creates a new NamePart instance using the specified properties.
+                     * @function create
+                     * @memberof google.protobuf.UninterpretedOption.NamePart
+                     * @static
+                     * @param {google.protobuf.UninterpretedOption.INamePart=} [properties] Properties to set
+                     * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart instance
+                     */
+                    NamePart.create = function create(properties) {
+                        return new NamePart(properties);
+                    };
+    
+                    /**
+                     * Encodes the specified NamePart message. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages.
+                     * @function encode
+                     * @memberof google.protobuf.UninterpretedOption.NamePart
+                     * @static
+                     * @param {google.protobuf.UninterpretedOption.INamePart} message NamePart message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    NamePart.encode = function encode(message, writer) {
+                        if (!writer)
+                            writer = $Writer.create();
+                        writer.uint32(/* id 1, wireType 2 =*/10).string(message.namePart);
+                        writer.uint32(/* id 2, wireType 0 =*/16).bool(message.isExtension);
+                        return writer;
+                    };
+    
+                    /**
+                     * Encodes the specified NamePart message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages.
+                     * @function encodeDelimited
+                     * @memberof google.protobuf.UninterpretedOption.NamePart
+                     * @static
+                     * @param {google.protobuf.UninterpretedOption.INamePart} message NamePart message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    NamePart.encodeDelimited = function encodeDelimited(message, writer) {
+                        return this.encode(message, writer).ldelim();
+                    };
+    
+                    /**
+                     * Decodes a NamePart message from the specified reader or buffer.
+                     * @function decode
+                     * @memberof google.protobuf.UninterpretedOption.NamePart
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @param {number} [length] Message length if known beforehand
+                     * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    NamePart.decode = function decode(reader, length, error) {
+                        if (!(reader instanceof $Reader))
+                            reader = $Reader.create(reader);
+                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UninterpretedOption.NamePart();
+                        while (reader.pos < end) {
+                            var tag = reader.uint32();
+                            if (tag === error)
+                                break;
+                            switch (tag >>> 3) {
+                            case 1: {
+                                    message.namePart = reader.string();
+                                    break;
+                                }
+                            case 2: {
+                                    message.isExtension = reader.bool();
+                                    break;
+                                }
+                            default:
+                                reader.skipType(tag & 7);
+                                break;
+                            }
+                        }
+                        if (!message.hasOwnProperty("namePart"))
+                            throw $util.ProtocolError("missing required 'namePart'", { instance: message });
+                        if (!message.hasOwnProperty("isExtension"))
+                            throw $util.ProtocolError("missing required 'isExtension'", { instance: message });
+                        return message;
+                    };
+    
+                    /**
+                     * Decodes a NamePart message from the specified reader or buffer, length delimited.
+                     * @function decodeDelimited
+                     * @memberof google.protobuf.UninterpretedOption.NamePart
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    NamePart.decodeDelimited = function decodeDelimited(reader) {
+                        if (!(reader instanceof $Reader))
+                            reader = new $Reader(reader);
+                        return this.decode(reader, reader.uint32());
+                    };
+    
+                    /**
+                     * Verifies a NamePart message.
+                     * @function verify
+                     * @memberof google.protobuf.UninterpretedOption.NamePart
+                     * @static
+                     * @param {Object.<string,*>} message Plain object to verify
+                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                     */
+                    NamePart.verify = function verify(message) {
+                        if (typeof message !== "object" || message === null)
+                            return "object expected";
+                        if (!$util.isString(message.namePart))
+                            return "namePart: string expected";
+                        if (typeof message.isExtension !== "boolean")
+                            return "isExtension: boolean expected";
+                        return null;
+                    };
+    
+                    /**
+                     * Creates a NamePart message from a plain object. Also converts values to their respective internal types.
+                     * @function fromObject
+                     * @memberof google.protobuf.UninterpretedOption.NamePart
+                     * @static
+                     * @param {Object.<string,*>} object Plain object
+                     * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart
+                     */
+                    NamePart.fromObject = function fromObject(object) {
+                        if (object instanceof $root.google.protobuf.UninterpretedOption.NamePart)
+                            return object;
+                        var message = new $root.google.protobuf.UninterpretedOption.NamePart();
+                        if (object.namePart != null)
+                            message.namePart = String(object.namePart);
+                        if (object.isExtension != null)
+                            message.isExtension = Boolean(object.isExtension);
+                        return message;
+                    };
+    
+                    /**
+                     * Creates a plain object from a NamePart message. Also converts values to other types if specified.
+                     * @function toObject
+                     * @memberof google.protobuf.UninterpretedOption.NamePart
+                     * @static
+                     * @param {google.protobuf.UninterpretedOption.NamePart} message NamePart
+                     * @param {$protobuf.IConversionOptions} [options] Conversion options
+                     * @returns {Object.<string,*>} Plain object
+                     */
+                    NamePart.toObject = function toObject(message, options) {
+                        if (!options)
+                            options = {};
+                        var object = {};
+                        if (options.defaults) {
+                            object.namePart = "";
+                            object.isExtension = false;
+                        }
+                        if (message.namePart != null && message.hasOwnProperty("namePart"))
+                            object.namePart = message.namePart;
+                        if (message.isExtension != null && message.hasOwnProperty("isExtension"))
+                            object.isExtension = message.isExtension;
+                        return object;
+                    };
+    
+                    /**
+                     * Converts this NamePart to JSON.
+                     * @function toJSON
+                     * @memberof google.protobuf.UninterpretedOption.NamePart
+                     * @instance
+                     * @returns {Object.<string,*>} JSON object
+                     */
+                    NamePart.prototype.toJSON = function toJSON() {
+                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                    };
+    
+                    /**
+                     * Gets the default type url for NamePart
+                     * @function getTypeUrl
+                     * @memberof google.protobuf.UninterpretedOption.NamePart
+                     * @static
+                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns {string} The default type url
+                     */
+                    NamePart.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                        if (typeUrlPrefix === undefined) {
+                            typeUrlPrefix = "type.googleapis.com";
+                        }
+                        return typeUrlPrefix + "/google.protobuf.UninterpretedOption.NamePart";
+                    };
+    
+                    return NamePart;
+                })();
+    
+                return UninterpretedOption;
+            })();
+    
+            protobuf.FeatureSet = (function() {
+    
+                /**
+                 * Properties of a FeatureSet.
+                 * @memberof google.protobuf
+                 * @interface IFeatureSet
+                 * @property {google.protobuf.FeatureSet.FieldPresence|null} [fieldPresence] FeatureSet fieldPresence
+                 * @property {google.protobuf.FeatureSet.EnumType|null} [enumType] FeatureSet enumType
+                 * @property {google.protobuf.FeatureSet.RepeatedFieldEncoding|null} [repeatedFieldEncoding] FeatureSet repeatedFieldEncoding
+                 * @property {google.protobuf.FeatureSet.Utf8Validation|null} [utf8Validation] FeatureSet utf8Validation
+                 * @property {google.protobuf.FeatureSet.MessageEncoding|null} [messageEncoding] FeatureSet messageEncoding
+                 * @property {google.protobuf.FeatureSet.JsonFormat|null} [jsonFormat] FeatureSet jsonFormat
+                 */
+    
+                /**
+                 * Constructs a new FeatureSet.
+                 * @memberof google.protobuf
+                 * @classdesc Represents a FeatureSet.
+                 * @implements IFeatureSet
+                 * @constructor
+                 * @param {google.protobuf.IFeatureSet=} [properties] Properties to set
+                 */
+                function FeatureSet(properties) {
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * FeatureSet fieldPresence.
+                 * @member {google.protobuf.FeatureSet.FieldPresence} fieldPresence
+                 * @memberof google.protobuf.FeatureSet
+                 * @instance
+                 */
+                FeatureSet.prototype.fieldPresence = 0;
+    
+                /**
+                 * FeatureSet enumType.
+                 * @member {google.protobuf.FeatureSet.EnumType} enumType
+                 * @memberof google.protobuf.FeatureSet
+                 * @instance
+                 */
+                FeatureSet.prototype.enumType = 0;
+    
+                /**
+                 * FeatureSet repeatedFieldEncoding.
+                 * @member {google.protobuf.FeatureSet.RepeatedFieldEncoding} repeatedFieldEncoding
+                 * @memberof google.protobuf.FeatureSet
+                 * @instance
+                 */
+                FeatureSet.prototype.repeatedFieldEncoding = 0;
+    
+                /**
+                 * FeatureSet utf8Validation.
+                 * @member {google.protobuf.FeatureSet.Utf8Validation} utf8Validation
+                 * @memberof google.protobuf.FeatureSet
+                 * @instance
+                 */
+                FeatureSet.prototype.utf8Validation = 0;
+    
+                /**
+                 * FeatureSet messageEncoding.
+                 * @member {google.protobuf.FeatureSet.MessageEncoding} messageEncoding
+                 * @memberof google.protobuf.FeatureSet
+                 * @instance
+                 */
+                FeatureSet.prototype.messageEncoding = 0;
+    
+                /**
+                 * FeatureSet jsonFormat.
+                 * @member {google.protobuf.FeatureSet.JsonFormat} jsonFormat
+                 * @memberof google.protobuf.FeatureSet
+                 * @instance
+                 */
+                FeatureSet.prototype.jsonFormat = 0;
+    
+                /**
+                 * Creates a new FeatureSet instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.FeatureSet
+                 * @static
+                 * @param {google.protobuf.IFeatureSet=} [properties] Properties to set
+                 * @returns {google.protobuf.FeatureSet} FeatureSet instance
+                 */
+                FeatureSet.create = function create(properties) {
+                    return new FeatureSet(properties);
+                };
+    
+                /**
+                 * Encodes the specified FeatureSet message. Does not implicitly {@link google.protobuf.FeatureSet.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.FeatureSet
+                 * @static
+                 * @param {google.protobuf.IFeatureSet} message FeatureSet message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                FeatureSet.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.fieldPresence != null && Object.hasOwnProperty.call(message, "fieldPresence"))
+                        writer.uint32(/* id 1, wireType 0 =*/8).int32(message.fieldPresence);
+                    if (message.enumType != null && Object.hasOwnProperty.call(message, "enumType"))
+                        writer.uint32(/* id 2, wireType 0 =*/16).int32(message.enumType);
+                    if (message.repeatedFieldEncoding != null && Object.hasOwnProperty.call(message, "repeatedFieldEncoding"))
+                        writer.uint32(/* id 3, wireType 0 =*/24).int32(message.repeatedFieldEncoding);
+                    if (message.utf8Validation != null && Object.hasOwnProperty.call(message, "utf8Validation"))
+                        writer.uint32(/* id 4, wireType 0 =*/32).int32(message.utf8Validation);
+                    if (message.messageEncoding != null && Object.hasOwnProperty.call(message, "messageEncoding"))
+                        writer.uint32(/* id 5, wireType 0 =*/40).int32(message.messageEncoding);
+                    if (message.jsonFormat != null && Object.hasOwnProperty.call(message, "jsonFormat"))
+                        writer.uint32(/* id 6, wireType 0 =*/48).int32(message.jsonFormat);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified FeatureSet message, length delimited. Does not implicitly {@link google.protobuf.FeatureSet.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.FeatureSet
+                 * @static
+                 * @param {google.protobuf.IFeatureSet} message FeatureSet message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                FeatureSet.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a FeatureSet message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.FeatureSet
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.FeatureSet} FeatureSet
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                FeatureSet.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSet();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.fieldPresence = reader.int32();
+                                break;
+                            }
+                        case 2: {
+                                message.enumType = reader.int32();
+                                break;
+                            }
+                        case 3: {
+                                message.repeatedFieldEncoding = reader.int32();
+                                break;
+                            }
+                        case 4: {
+                                message.utf8Validation = reader.int32();
+                                break;
+                            }
+                        case 5: {
+                                message.messageEncoding = reader.int32();
+                                break;
+                            }
+                        case 6: {
+                                message.jsonFormat = reader.int32();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a FeatureSet message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.FeatureSet
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.FeatureSet} FeatureSet
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                FeatureSet.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a FeatureSet message.
+                 * @function verify
+                 * @memberof google.protobuf.FeatureSet
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                FeatureSet.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.fieldPresence != null && message.hasOwnProperty("fieldPresence"))
+                        switch (message.fieldPresence) {
+                        default:
+                            return "fieldPresence: enum value expected";
+                        case 0:
+                        case 1:
+                        case 2:
+                        case 3:
+                            break;
+                        }
+                    if (message.enumType != null && message.hasOwnProperty("enumType"))
+                        switch (message.enumType) {
+                        default:
+                            return "enumType: enum value expected";
+                        case 0:
+                        case 1:
+                        case 2:
+                            break;
+                        }
+                    if (message.repeatedFieldEncoding != null && message.hasOwnProperty("repeatedFieldEncoding"))
+                        switch (message.repeatedFieldEncoding) {
+                        default:
+                            return "repeatedFieldEncoding: enum value expected";
+                        case 0:
+                        case 1:
+                        case 2:
+                            break;
+                        }
+                    if (message.utf8Validation != null && message.hasOwnProperty("utf8Validation"))
+                        switch (message.utf8Validation) {
+                        default:
+                            return "utf8Validation: enum value expected";
+                        case 0:
+                        case 2:
+                        case 3:
+                            break;
+                        }
+                    if (message.messageEncoding != null && message.hasOwnProperty("messageEncoding"))
+                        switch (message.messageEncoding) {
+                        default:
+                            return "messageEncoding: enum value expected";
+                        case 0:
+                        case 1:
+                        case 2:
+                            break;
+                        }
+                    if (message.jsonFormat != null && message.hasOwnProperty("jsonFormat"))
+                        switch (message.jsonFormat) {
+                        default:
+                            return "jsonFormat: enum value expected";
+                        case 0:
+                        case 1:
+                        case 2:
+                            break;
+                        }
+                    return null;
+                };
+    
+                /**
+                 * Creates a FeatureSet message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.FeatureSet
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.FeatureSet} FeatureSet
+                 */
+                FeatureSet.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.FeatureSet)
+                        return object;
+                    var message = new $root.google.protobuf.FeatureSet();
+                    switch (object.fieldPresence) {
+                    default:
+                        if (typeof object.fieldPresence === "number") {
+                            message.fieldPresence = object.fieldPresence;
+                            break;
+                        }
+                        break;
+                    case "FIELD_PRESENCE_UNKNOWN":
+                    case 0:
+                        message.fieldPresence = 0;
+                        break;
+                    case "EXPLICIT":
+                    case 1:
+                        message.fieldPresence = 1;
+                        break;
+                    case "IMPLICIT":
+                    case 2:
+                        message.fieldPresence = 2;
+                        break;
+                    case "LEGACY_REQUIRED":
+                    case 3:
+                        message.fieldPresence = 3;
+                        break;
+                    }
+                    switch (object.enumType) {
+                    default:
+                        if (typeof object.enumType === "number") {
+                            message.enumType = object.enumType;
+                            break;
+                        }
+                        break;
+                    case "ENUM_TYPE_UNKNOWN":
+                    case 0:
+                        message.enumType = 0;
+                        break;
+                    case "OPEN":
+                    case 1:
+                        message.enumType = 1;
+                        break;
+                    case "CLOSED":
+                    case 2:
+                        message.enumType = 2;
+                        break;
+                    }
+                    switch (object.repeatedFieldEncoding) {
+                    default:
+                        if (typeof object.repeatedFieldEncoding === "number") {
+                            message.repeatedFieldEncoding = object.repeatedFieldEncoding;
+                            break;
+                        }
+                        break;
+                    case "REPEATED_FIELD_ENCODING_UNKNOWN":
+                    case 0:
+                        message.repeatedFieldEncoding = 0;
+                        break;
+                    case "PACKED":
+                    case 1:
+                        message.repeatedFieldEncoding = 1;
+                        break;
+                    case "EXPANDED":
+                    case 2:
+                        message.repeatedFieldEncoding = 2;
+                        break;
+                    }
+                    switch (object.utf8Validation) {
+                    default:
+                        if (typeof object.utf8Validation === "number") {
+                            message.utf8Validation = object.utf8Validation;
+                            break;
+                        }
+                        break;
+                    case "UTF8_VALIDATION_UNKNOWN":
+                    case 0:
+                        message.utf8Validation = 0;
+                        break;
+                    case "VERIFY":
+                    case 2:
+                        message.utf8Validation = 2;
+                        break;
+                    case "NONE":
+                    case 3:
+                        message.utf8Validation = 3;
+                        break;
+                    }
+                    switch (object.messageEncoding) {
+                    default:
+                        if (typeof object.messageEncoding === "number") {
+                            message.messageEncoding = object.messageEncoding;
+                            break;
+                        }
+                        break;
+                    case "MESSAGE_ENCODING_UNKNOWN":
+                    case 0:
+                        message.messageEncoding = 0;
+                        break;
+                    case "LENGTH_PREFIXED":
+                    case 1:
+                        message.messageEncoding = 1;
+                        break;
+                    case "DELIMITED":
+                    case 2:
+                        message.messageEncoding = 2;
+                        break;
+                    }
+                    switch (object.jsonFormat) {
+                    default:
+                        if (typeof object.jsonFormat === "number") {
+                            message.jsonFormat = object.jsonFormat;
+                            break;
+                        }
+                        break;
+                    case "JSON_FORMAT_UNKNOWN":
+                    case 0:
+                        message.jsonFormat = 0;
+                        break;
+                    case "ALLOW":
+                    case 1:
+                        message.jsonFormat = 1;
+                        break;
+                    case "LEGACY_BEST_EFFORT":
+                    case 2:
+                        message.jsonFormat = 2;
+                        break;
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a FeatureSet message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.FeatureSet
+                 * @static
+                 * @param {google.protobuf.FeatureSet} message FeatureSet
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                FeatureSet.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.defaults) {
+                        object.fieldPresence = options.enums === String ? "FIELD_PRESENCE_UNKNOWN" : 0;
+                        object.enumType = options.enums === String ? "ENUM_TYPE_UNKNOWN" : 0;
+                        object.repeatedFieldEncoding = options.enums === String ? "REPEATED_FIELD_ENCODING_UNKNOWN" : 0;
+                        object.utf8Validation = options.enums === String ? "UTF8_VALIDATION_UNKNOWN" : 0;
+                        object.messageEncoding = options.enums === String ? "MESSAGE_ENCODING_UNKNOWN" : 0;
+                        object.jsonFormat = options.enums === String ? "JSON_FORMAT_UNKNOWN" : 0;
+                    }
+                    if (message.fieldPresence != null && message.hasOwnProperty("fieldPresence"))
+                        object.fieldPresence = options.enums === String ? $root.google.protobuf.FeatureSet.FieldPresence[message.fieldPresence] === undefined ? message.fieldPresence : $root.google.protobuf.FeatureSet.FieldPresence[message.fieldPresence] : message.fieldPresence;
+                    if (message.enumType != null && message.hasOwnProperty("enumType"))
+                        object.enumType = options.enums === String ? $root.google.protobuf.FeatureSet.EnumType[message.enumType] === undefined ? message.enumType : $root.google.protobuf.FeatureSet.EnumType[message.enumType] : message.enumType;
+                    if (message.repeatedFieldEncoding != null && message.hasOwnProperty("repeatedFieldEncoding"))
+                        object.repeatedFieldEncoding = options.enums === String ? $root.google.protobuf.FeatureSet.RepeatedFieldEncoding[message.repeatedFieldEncoding] === undefined ? message.repeatedFieldEncoding : $root.google.protobuf.FeatureSet.RepeatedFieldEncoding[message.repeatedFieldEncoding] : message.repeatedFieldEncoding;
+                    if (message.utf8Validation != null && message.hasOwnProperty("utf8Validation"))
+                        object.utf8Validation = options.enums === String ? $root.google.protobuf.FeatureSet.Utf8Validation[message.utf8Validation] === undefined ? message.utf8Validation : $root.google.protobuf.FeatureSet.Utf8Validation[message.utf8Validation] : message.utf8Validation;
+                    if (message.messageEncoding != null && message.hasOwnProperty("messageEncoding"))
+                        object.messageEncoding = options.enums === String ? $root.google.protobuf.FeatureSet.MessageEncoding[message.messageEncoding] === undefined ? message.messageEncoding : $root.google.protobuf.FeatureSet.MessageEncoding[message.messageEncoding] : message.messageEncoding;
+                    if (message.jsonFormat != null && message.hasOwnProperty("jsonFormat"))
+                        object.jsonFormat = options.enums === String ? $root.google.protobuf.FeatureSet.JsonFormat[message.jsonFormat] === undefined ? message.jsonFormat : $root.google.protobuf.FeatureSet.JsonFormat[message.jsonFormat] : message.jsonFormat;
+                    return object;
+                };
+    
+                /**
+                 * Converts this FeatureSet to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.FeatureSet
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                FeatureSet.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for FeatureSet
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.FeatureSet
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                FeatureSet.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.FeatureSet";
+                };
+    
+                /**
+                 * FieldPresence enum.
+                 * @name google.protobuf.FeatureSet.FieldPresence
+                 * @enum {number}
+                 * @property {number} FIELD_PRESENCE_UNKNOWN=0 FIELD_PRESENCE_UNKNOWN value
+                 * @property {number} EXPLICIT=1 EXPLICIT value
+                 * @property {number} IMPLICIT=2 IMPLICIT value
+                 * @property {number} LEGACY_REQUIRED=3 LEGACY_REQUIRED value
+                 */
+                FeatureSet.FieldPresence = (function() {
+                    var valuesById = {}, values = Object.create(valuesById);
+                    values[valuesById[0] = "FIELD_PRESENCE_UNKNOWN"] = 0;
+                    values[valuesById[1] = "EXPLICIT"] = 1;
+                    values[valuesById[2] = "IMPLICIT"] = 2;
+                    values[valuesById[3] = "LEGACY_REQUIRED"] = 3;
+                    return values;
+                })();
+    
+                /**
+                 * EnumType enum.
+                 * @name google.protobuf.FeatureSet.EnumType
+                 * @enum {number}
+                 * @property {number} ENUM_TYPE_UNKNOWN=0 ENUM_TYPE_UNKNOWN value
+                 * @property {number} OPEN=1 OPEN value
+                 * @property {number} CLOSED=2 CLOSED value
+                 */
+                FeatureSet.EnumType = (function() {
+                    var valuesById = {}, values = Object.create(valuesById);
+                    values[valuesById[0] = "ENUM_TYPE_UNKNOWN"] = 0;
+                    values[valuesById[1] = "OPEN"] = 1;
+                    values[valuesById[2] = "CLOSED"] = 2;
+                    return values;
+                })();
+    
+                /**
+                 * RepeatedFieldEncoding enum.
+                 * @name google.protobuf.FeatureSet.RepeatedFieldEncoding
+                 * @enum {number}
+                 * @property {number} REPEATED_FIELD_ENCODING_UNKNOWN=0 REPEATED_FIELD_ENCODING_UNKNOWN value
+                 * @property {number} PACKED=1 PACKED value
+                 * @property {number} EXPANDED=2 EXPANDED value
+                 */
+                FeatureSet.RepeatedFieldEncoding = (function() {
+                    var valuesById = {}, values = Object.create(valuesById);
+                    values[valuesById[0] = "REPEATED_FIELD_ENCODING_UNKNOWN"] = 0;
+                    values[valuesById[1] = "PACKED"] = 1;
+                    values[valuesById[2] = "EXPANDED"] = 2;
+                    return values;
+                })();
+    
+                /**
+                 * Utf8Validation enum.
+                 * @name google.protobuf.FeatureSet.Utf8Validation
+                 * @enum {number}
+                 * @property {number} UTF8_VALIDATION_UNKNOWN=0 UTF8_VALIDATION_UNKNOWN value
+                 * @property {number} VERIFY=2 VERIFY value
+                 * @property {number} NONE=3 NONE value
+                 */
+                FeatureSet.Utf8Validation = (function() {
+                    var valuesById = {}, values = Object.create(valuesById);
+                    values[valuesById[0] = "UTF8_VALIDATION_UNKNOWN"] = 0;
+                    values[valuesById[2] = "VERIFY"] = 2;
+                    values[valuesById[3] = "NONE"] = 3;
+                    return values;
+                })();
+    
+                /**
+                 * MessageEncoding enum.
+                 * @name google.protobuf.FeatureSet.MessageEncoding
+                 * @enum {number}
+                 * @property {number} MESSAGE_ENCODING_UNKNOWN=0 MESSAGE_ENCODING_UNKNOWN value
+                 * @property {number} LENGTH_PREFIXED=1 LENGTH_PREFIXED value
+                 * @property {number} DELIMITED=2 DELIMITED value
+                 */
+                FeatureSet.MessageEncoding = (function() {
+                    var valuesById = {}, values = Object.create(valuesById);
+                    values[valuesById[0] = "MESSAGE_ENCODING_UNKNOWN"] = 0;
+                    values[valuesById[1] = "LENGTH_PREFIXED"] = 1;
+                    values[valuesById[2] = "DELIMITED"] = 2;
+                    return values;
+                })();
+    
+                /**
+                 * JsonFormat enum.
+                 * @name google.protobuf.FeatureSet.JsonFormat
+                 * @enum {number}
+                 * @property {number} JSON_FORMAT_UNKNOWN=0 JSON_FORMAT_UNKNOWN value
+                 * @property {number} ALLOW=1 ALLOW value
+                 * @property {number} LEGACY_BEST_EFFORT=2 LEGACY_BEST_EFFORT value
+                 */
+                FeatureSet.JsonFormat = (function() {
+                    var valuesById = {}, values = Object.create(valuesById);
+                    values[valuesById[0] = "JSON_FORMAT_UNKNOWN"] = 0;
+                    values[valuesById[1] = "ALLOW"] = 1;
+                    values[valuesById[2] = "LEGACY_BEST_EFFORT"] = 2;
+                    return values;
+                })();
+    
+                return FeatureSet;
+            })();
+    
+            protobuf.FeatureSetDefaults = (function() {
+    
+                /**
+                 * Properties of a FeatureSetDefaults.
+                 * @memberof google.protobuf
+                 * @interface IFeatureSetDefaults
+                 * @property {Array.<google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault>|null} [defaults] FeatureSetDefaults defaults
+                 * @property {google.protobuf.Edition|null} [minimumEdition] FeatureSetDefaults minimumEdition
+                 * @property {google.protobuf.Edition|null} [maximumEdition] FeatureSetDefaults maximumEdition
+                 */
+    
+                /**
+                 * Constructs a new FeatureSetDefaults.
+                 * @memberof google.protobuf
+                 * @classdesc Represents a FeatureSetDefaults.
+                 * @implements IFeatureSetDefaults
+                 * @constructor
+                 * @param {google.protobuf.IFeatureSetDefaults=} [properties] Properties to set
+                 */
+                function FeatureSetDefaults(properties) {
+                    this.defaults = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * FeatureSetDefaults defaults.
+                 * @member {Array.<google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault>} defaults
+                 * @memberof google.protobuf.FeatureSetDefaults
+                 * @instance
+                 */
+                FeatureSetDefaults.prototype.defaults = $util.emptyArray;
+    
+                /**
+                 * FeatureSetDefaults minimumEdition.
+                 * @member {google.protobuf.Edition} minimumEdition
+                 * @memberof google.protobuf.FeatureSetDefaults
+                 * @instance
+                 */
+                FeatureSetDefaults.prototype.minimumEdition = 0;
+    
+                /**
+                 * FeatureSetDefaults maximumEdition.
+                 * @member {google.protobuf.Edition} maximumEdition
+                 * @memberof google.protobuf.FeatureSetDefaults
+                 * @instance
+                 */
+                FeatureSetDefaults.prototype.maximumEdition = 0;
+    
+                /**
+                 * Creates a new FeatureSetDefaults instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.FeatureSetDefaults
+                 * @static
+                 * @param {google.protobuf.IFeatureSetDefaults=} [properties] Properties to set
+                 * @returns {google.protobuf.FeatureSetDefaults} FeatureSetDefaults instance
+                 */
+                FeatureSetDefaults.create = function create(properties) {
+                    return new FeatureSetDefaults(properties);
+                };
+    
+                /**
+                 * Encodes the specified FeatureSetDefaults message. Does not implicitly {@link google.protobuf.FeatureSetDefaults.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.FeatureSetDefaults
+                 * @static
+                 * @param {google.protobuf.IFeatureSetDefaults} message FeatureSetDefaults message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                FeatureSetDefaults.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.defaults != null && message.defaults.length)
+                        for (var i = 0; i < message.defaults.length; ++i)
+                            $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.encode(message.defaults[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                    if (message.minimumEdition != null && Object.hasOwnProperty.call(message, "minimumEdition"))
+                        writer.uint32(/* id 4, wireType 0 =*/32).int32(message.minimumEdition);
+                    if (message.maximumEdition != null && Object.hasOwnProperty.call(message, "maximumEdition"))
+                        writer.uint32(/* id 5, wireType 0 =*/40).int32(message.maximumEdition);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified FeatureSetDefaults message, length delimited. Does not implicitly {@link google.protobuf.FeatureSetDefaults.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.FeatureSetDefaults
+                 * @static
+                 * @param {google.protobuf.IFeatureSetDefaults} message FeatureSetDefaults message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                FeatureSetDefaults.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a FeatureSetDefaults message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.FeatureSetDefaults
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.FeatureSetDefaults} FeatureSetDefaults
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                FeatureSetDefaults.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSetDefaults();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                if (!(message.defaults && message.defaults.length))
+                                    message.defaults = [];
+                                message.defaults.push($root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        case 4: {
+                                message.minimumEdition = reader.int32();
+                                break;
+                            }
+                        case 5: {
+                                message.maximumEdition = reader.int32();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a FeatureSetDefaults message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.FeatureSetDefaults
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.FeatureSetDefaults} FeatureSetDefaults
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                FeatureSetDefaults.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a FeatureSetDefaults message.
+                 * @function verify
+                 * @memberof google.protobuf.FeatureSetDefaults
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                FeatureSetDefaults.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.defaults != null && message.hasOwnProperty("defaults")) {
+                        if (!Array.isArray(message.defaults))
+                            return "defaults: array expected";
+                        for (var i = 0; i < message.defaults.length; ++i) {
+                            var error = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.verify(message.defaults[i]);
+                            if (error)
+                                return "defaults." + error;
+                        }
+                    }
+                    if (message.minimumEdition != null && message.hasOwnProperty("minimumEdition"))
+                        switch (message.minimumEdition) {
+                        default:
+                            return "minimumEdition: enum value expected";
+                        case 0:
+                        case 998:
+                        case 999:
+                        case 1000:
+                        case 1001:
+                        case 1:
+                        case 2:
+                        case 99997:
+                        case 99998:
+                        case 99999:
+                        case 2147483647:
+                            break;
+                        }
+                    if (message.maximumEdition != null && message.hasOwnProperty("maximumEdition"))
+                        switch (message.maximumEdition) {
+                        default:
+                            return "maximumEdition: enum value expected";
+                        case 0:
+                        case 998:
+                        case 999:
+                        case 1000:
+                        case 1001:
+                        case 1:
+                        case 2:
+                        case 99997:
+                        case 99998:
+                        case 99999:
+                        case 2147483647:
+                            break;
+                        }
+                    return null;
+                };
+    
+                /**
+                 * Creates a FeatureSetDefaults message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.FeatureSetDefaults
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.FeatureSetDefaults} FeatureSetDefaults
+                 */
+                FeatureSetDefaults.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.FeatureSetDefaults)
+                        return object;
+                    var message = new $root.google.protobuf.FeatureSetDefaults();
+                    if (object.defaults) {
+                        if (!Array.isArray(object.defaults))
+                            throw TypeError(".google.protobuf.FeatureSetDefaults.defaults: array expected");
+                        message.defaults = [];
+                        for (var i = 0; i < object.defaults.length; ++i) {
+                            if (typeof object.defaults[i] !== "object")
+                                throw TypeError(".google.protobuf.FeatureSetDefaults.defaults: object expected");
+                            message.defaults[i] = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fromObject(object.defaults[i]);
+                        }
+                    }
+                    switch (object.minimumEdition) {
+                    default:
+                        if (typeof object.minimumEdition === "number") {
+                            message.minimumEdition = object.minimumEdition;
+                            break;
+                        }
+                        break;
+                    case "EDITION_UNKNOWN":
+                    case 0:
+                        message.minimumEdition = 0;
+                        break;
+                    case "EDITION_PROTO2":
+                    case 998:
+                        message.minimumEdition = 998;
+                        break;
+                    case "EDITION_PROTO3":
+                    case 999:
+                        message.minimumEdition = 999;
+                        break;
+                    case "EDITION_2023":
+                    case 1000:
+                        message.minimumEdition = 1000;
+                        break;
+                    case "EDITION_2024":
+                    case 1001:
+                        message.minimumEdition = 1001;
+                        break;
+                    case "EDITION_1_TEST_ONLY":
+                    case 1:
+                        message.minimumEdition = 1;
+                        break;
+                    case "EDITION_2_TEST_ONLY":
+                    case 2:
+                        message.minimumEdition = 2;
+                        break;
+                    case "EDITION_99997_TEST_ONLY":
+                    case 99997:
+                        message.minimumEdition = 99997;
+                        break;
+                    case "EDITION_99998_TEST_ONLY":
+                    case 99998:
+                        message.minimumEdition = 99998;
+                        break;
+                    case "EDITION_99999_TEST_ONLY":
+                    case 99999:
+                        message.minimumEdition = 99999;
+                        break;
+                    case "EDITION_MAX":
+                    case 2147483647:
+                        message.minimumEdition = 2147483647;
+                        break;
+                    }
+                    switch (object.maximumEdition) {
+                    default:
+                        if (typeof object.maximumEdition === "number") {
+                            message.maximumEdition = object.maximumEdition;
+                            break;
+                        }
+                        break;
+                    case "EDITION_UNKNOWN":
+                    case 0:
+                        message.maximumEdition = 0;
+                        break;
+                    case "EDITION_PROTO2":
+                    case 998:
+                        message.maximumEdition = 998;
+                        break;
+                    case "EDITION_PROTO3":
+                    case 999:
+                        message.maximumEdition = 999;
+                        break;
+                    case "EDITION_2023":
+                    case 1000:
+                        message.maximumEdition = 1000;
+                        break;
+                    case "EDITION_2024":
+                    case 1001:
+                        message.maximumEdition = 1001;
+                        break;
+                    case "EDITION_1_TEST_ONLY":
+                    case 1:
+                        message.maximumEdition = 1;
+                        break;
+                    case "EDITION_2_TEST_ONLY":
+                    case 2:
+                        message.maximumEdition = 2;
+                        break;
+                    case "EDITION_99997_TEST_ONLY":
+                    case 99997:
+                        message.maximumEdition = 99997;
+                        break;
+                    case "EDITION_99998_TEST_ONLY":
+                    case 99998:
+                        message.maximumEdition = 99998;
+                        break;
+                    case "EDITION_99999_TEST_ONLY":
+                    case 99999:
+                        message.maximumEdition = 99999;
+                        break;
+                    case "EDITION_MAX":
+                    case 2147483647:
+                        message.maximumEdition = 2147483647;
+                        break;
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a FeatureSetDefaults message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.FeatureSetDefaults
+                 * @static
+                 * @param {google.protobuf.FeatureSetDefaults} message FeatureSetDefaults
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                FeatureSetDefaults.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults)
+                        object.defaults = [];
+                    if (options.defaults) {
+                        object.minimumEdition = options.enums === String ? "EDITION_UNKNOWN" : 0;
+                        object.maximumEdition = options.enums === String ? "EDITION_UNKNOWN" : 0;
+                    }
+                    if (message.defaults && message.defaults.length) {
+                        object.defaults = [];
+                        for (var j = 0; j < message.defaults.length; ++j)
+                            object.defaults[j] = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.toObject(message.defaults[j], options);
+                    }
+                    if (message.minimumEdition != null && message.hasOwnProperty("minimumEdition"))
+                        object.minimumEdition = options.enums === String ? $root.google.protobuf.Edition[message.minimumEdition] === undefined ? message.minimumEdition : $root.google.protobuf.Edition[message.minimumEdition] : message.minimumEdition;
+                    if (message.maximumEdition != null && message.hasOwnProperty("maximumEdition"))
+                        object.maximumEdition = options.enums === String ? $root.google.protobuf.Edition[message.maximumEdition] === undefined ? message.maximumEdition : $root.google.protobuf.Edition[message.maximumEdition] : message.maximumEdition;
+                    return object;
+                };
+    
+                /**
+                 * Converts this FeatureSetDefaults to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.FeatureSetDefaults
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                FeatureSetDefaults.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for FeatureSetDefaults
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.FeatureSetDefaults
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                FeatureSetDefaults.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.FeatureSetDefaults";
+                };
+    
+                FeatureSetDefaults.FeatureSetEditionDefault = (function() {
+    
+                    /**
+                     * Properties of a FeatureSetEditionDefault.
+                     * @memberof google.protobuf.FeatureSetDefaults
+                     * @interface IFeatureSetEditionDefault
+                     * @property {google.protobuf.Edition|null} [edition] FeatureSetEditionDefault edition
+                     * @property {google.protobuf.IFeatureSet|null} [features] FeatureSetEditionDefault features
+                     */
+    
+                    /**
+                     * Constructs a new FeatureSetEditionDefault.
+                     * @memberof google.protobuf.FeatureSetDefaults
+                     * @classdesc Represents a FeatureSetEditionDefault.
+                     * @implements IFeatureSetEditionDefault
+                     * @constructor
+                     * @param {google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault=} [properties] Properties to set
+                     */
+                    function FeatureSetEditionDefault(properties) {
+                        if (properties)
+                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                if (properties[keys[i]] != null)
+                                    this[keys[i]] = properties[keys[i]];
+                    }
+    
+                    /**
+                     * FeatureSetEditionDefault edition.
+                     * @member {google.protobuf.Edition} edition
+                     * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault
+                     * @instance
+                     */
+                    FeatureSetEditionDefault.prototype.edition = 0;
+    
+                    /**
+                     * FeatureSetEditionDefault features.
+                     * @member {google.protobuf.IFeatureSet|null|undefined} features
+                     * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault
+                     * @instance
+                     */
+                    FeatureSetEditionDefault.prototype.features = null;
+    
+                    /**
+                     * Creates a new FeatureSetEditionDefault instance using the specified properties.
+                     * @function create
+                     * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault
+                     * @static
+                     * @param {google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault=} [properties] Properties to set
+                     * @returns {google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault} FeatureSetEditionDefault instance
+                     */
+                    FeatureSetEditionDefault.create = function create(properties) {
+                        return new FeatureSetEditionDefault(properties);
+                    };
+    
+                    /**
+                     * Encodes the specified FeatureSetEditionDefault message. Does not implicitly {@link google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.verify|verify} messages.
+                     * @function encode
+                     * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault
+                     * @static
+                     * @param {google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault} message FeatureSetEditionDefault message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    FeatureSetEditionDefault.encode = function encode(message, writer) {
+                        if (!writer)
+                            writer = $Writer.create();
+                        if (message.features != null && Object.hasOwnProperty.call(message, "features"))
+                            $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+                        if (message.edition != null && Object.hasOwnProperty.call(message, "edition"))
+                            writer.uint32(/* id 3, wireType 0 =*/24).int32(message.edition);
+                        return writer;
+                    };
+    
+                    /**
+                     * Encodes the specified FeatureSetEditionDefault message, length delimited. Does not implicitly {@link google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.verify|verify} messages.
+                     * @function encodeDelimited
+                     * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault
+                     * @static
+                     * @param {google.protobuf.FeatureSetDefaults.IFeatureSetEditionDefault} message FeatureSetEditionDefault message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    FeatureSetEditionDefault.encodeDelimited = function encodeDelimited(message, writer) {
+                        return this.encode(message, writer).ldelim();
+                    };
+    
+                    /**
+                     * Decodes a FeatureSetEditionDefault message from the specified reader or buffer.
+                     * @function decode
+                     * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @param {number} [length] Message length if known beforehand
+                     * @returns {google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault} FeatureSetEditionDefault
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    FeatureSetEditionDefault.decode = function decode(reader, length, error) {
+                        if (!(reader instanceof $Reader))
+                            reader = $Reader.create(reader);
+                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault();
+                        while (reader.pos < end) {
+                            var tag = reader.uint32();
+                            if (tag === error)
+                                break;
+                            switch (tag >>> 3) {
+                            case 3: {
+                                    message.edition = reader.int32();
+                                    break;
+                                }
+                            case 2: {
+                                    message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                    break;
+                                }
+                            default:
+                                reader.skipType(tag & 7);
+                                break;
+                            }
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Decodes a FeatureSetEditionDefault message from the specified reader or buffer, length delimited.
+                     * @function decodeDelimited
+                     * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @returns {google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault} FeatureSetEditionDefault
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    FeatureSetEditionDefault.decodeDelimited = function decodeDelimited(reader) {
+                        if (!(reader instanceof $Reader))
+                            reader = new $Reader(reader);
+                        return this.decode(reader, reader.uint32());
+                    };
+    
+                    /**
+                     * Verifies a FeatureSetEditionDefault message.
+                     * @function verify
+                     * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault
+                     * @static
+                     * @param {Object.<string,*>} message Plain object to verify
+                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                     */
+                    FeatureSetEditionDefault.verify = function verify(message) {
+                        if (typeof message !== "object" || message === null)
+                            return "object expected";
+                        if (message.edition != null && message.hasOwnProperty("edition"))
+                            switch (message.edition) {
+                            default:
+                                return "edition: enum value expected";
+                            case 0:
+                            case 998:
+                            case 999:
+                            case 1000:
+                            case 1001:
+                            case 1:
+                            case 2:
+                            case 99997:
+                            case 99998:
+                            case 99999:
+                            case 2147483647:
+                                break;
+                            }
+                        if (message.features != null && message.hasOwnProperty("features")) {
+                            var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                            if (error)
+                                return "features." + error;
+                        }
+                        return null;
+                    };
+    
+                    /**
+                     * Creates a FeatureSetEditionDefault message from a plain object. Also converts values to their respective internal types.
+                     * @function fromObject
+                     * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault
+                     * @static
+                     * @param {Object.<string,*>} object Plain object
+                     * @returns {google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault} FeatureSetEditionDefault
+                     */
+                    FeatureSetEditionDefault.fromObject = function fromObject(object) {
+                        if (object instanceof $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault)
+                            return object;
+                        var message = new $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault();
+                        switch (object.edition) {
+                        default:
+                            if (typeof object.edition === "number") {
+                                message.edition = object.edition;
+                                break;
+                            }
+                            break;
+                        case "EDITION_UNKNOWN":
+                        case 0:
+                            message.edition = 0;
+                            break;
+                        case "EDITION_PROTO2":
+                        case 998:
+                            message.edition = 998;
+                            break;
+                        case "EDITION_PROTO3":
+                        case 999:
+                            message.edition = 999;
+                            break;
+                        case "EDITION_2023":
+                        case 1000:
+                            message.edition = 1000;
+                            break;
+                        case "EDITION_2024":
+                        case 1001:
+                            message.edition = 1001;
+                            break;
+                        case "EDITION_1_TEST_ONLY":
+                        case 1:
+                            message.edition = 1;
+                            break;
+                        case "EDITION_2_TEST_ONLY":
+                        case 2:
+                            message.edition = 2;
+                            break;
+                        case "EDITION_99997_TEST_ONLY":
+                        case 99997:
+                            message.edition = 99997;
+                            break;
+                        case "EDITION_99998_TEST_ONLY":
+                        case 99998:
+                            message.edition = 99998;
+                            break;
+                        case "EDITION_99999_TEST_ONLY":
+                        case 99999:
+                            message.edition = 99999;
+                            break;
+                        case "EDITION_MAX":
+                        case 2147483647:
+                            message.edition = 2147483647;
+                            break;
+                        }
+                        if (object.features != null) {
+                            if (typeof object.features !== "object")
+                                throw TypeError(".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.features: object expected");
+                            message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Creates a plain object from a FeatureSetEditionDefault message. Also converts values to other types if specified.
+                     * @function toObject
+                     * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault
+                     * @static
+                     * @param {google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault} message FeatureSetEditionDefault
+                     * @param {$protobuf.IConversionOptions} [options] Conversion options
+                     * @returns {Object.<string,*>} Plain object
+                     */
+                    FeatureSetEditionDefault.toObject = function toObject(message, options) {
+                        if (!options)
+                            options = {};
+                        var object = {};
+                        if (options.defaults) {
+                            object.features = null;
+                            object.edition = options.enums === String ? "EDITION_UNKNOWN" : 0;
+                        }
+                        if (message.features != null && message.hasOwnProperty("features"))
+                            object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options);
+                        if (message.edition != null && message.hasOwnProperty("edition"))
+                            object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] === undefined ? message.edition : $root.google.protobuf.Edition[message.edition] : message.edition;
+                        return object;
+                    };
+    
+                    /**
+                     * Converts this FeatureSetEditionDefault to JSON.
+                     * @function toJSON
+                     * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault
+                     * @instance
+                     * @returns {Object.<string,*>} JSON object
+                     */
+                    FeatureSetEditionDefault.prototype.toJSON = function toJSON() {
+                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                    };
+    
+                    /**
+                     * Gets the default type url for FeatureSetEditionDefault
+                     * @function getTypeUrl
+                     * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault
+                     * @static
+                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns {string} The default type url
+                     */
+                    FeatureSetEditionDefault.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                        if (typeUrlPrefix === undefined) {
+                            typeUrlPrefix = "type.googleapis.com";
+                        }
+                        return typeUrlPrefix + "/google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault";
+                    };
+    
+                    return FeatureSetEditionDefault;
+                })();
+    
+                return FeatureSetDefaults;
+            })();
+    
+            protobuf.SourceCodeInfo = (function() {
+    
+                /**
+                 * Properties of a SourceCodeInfo.
+                 * @memberof google.protobuf
+                 * @interface ISourceCodeInfo
+                 * @property {Array.<google.protobuf.SourceCodeInfo.ILocation>|null} [location] SourceCodeInfo location
+                 */
+    
+                /**
+                 * Constructs a new SourceCodeInfo.
+                 * @memberof google.protobuf
+                 * @classdesc Represents a SourceCodeInfo.
+                 * @implements ISourceCodeInfo
+                 * @constructor
+                 * @param {google.protobuf.ISourceCodeInfo=} [properties] Properties to set
+                 */
+                function SourceCodeInfo(properties) {
+                    this.location = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * SourceCodeInfo location.
+                 * @member {Array.<google.protobuf.SourceCodeInfo.ILocation>} location
+                 * @memberof google.protobuf.SourceCodeInfo
+                 * @instance
+                 */
+                SourceCodeInfo.prototype.location = $util.emptyArray;
+    
+                /**
+                 * Creates a new SourceCodeInfo instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.SourceCodeInfo
+                 * @static
+                 * @param {google.protobuf.ISourceCodeInfo=} [properties] Properties to set
+                 * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo instance
+                 */
+                SourceCodeInfo.create = function create(properties) {
+                    return new SourceCodeInfo(properties);
+                };
+    
+                /**
+                 * Encodes the specified SourceCodeInfo message. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.SourceCodeInfo
+                 * @static
+                 * @param {google.protobuf.ISourceCodeInfo} message SourceCodeInfo message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                SourceCodeInfo.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.location != null && message.location.length)
+                        for (var i = 0; i < message.location.length; ++i)
+                            $root.google.protobuf.SourceCodeInfo.Location.encode(message.location[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified SourceCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.SourceCodeInfo
+                 * @static
+                 * @param {google.protobuf.ISourceCodeInfo} message SourceCodeInfo message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                SourceCodeInfo.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a SourceCodeInfo message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.SourceCodeInfo
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                SourceCodeInfo.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.SourceCodeInfo();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                if (!(message.location && message.location.length))
+                                    message.location = [];
+                                message.location.push($root.google.protobuf.SourceCodeInfo.Location.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a SourceCodeInfo message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.SourceCodeInfo
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                SourceCodeInfo.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a SourceCodeInfo message.
+                 * @function verify
+                 * @memberof google.protobuf.SourceCodeInfo
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                SourceCodeInfo.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.location != null && message.hasOwnProperty("location")) {
+                        if (!Array.isArray(message.location))
+                            return "location: array expected";
+                        for (var i = 0; i < message.location.length; ++i) {
+                            var error = $root.google.protobuf.SourceCodeInfo.Location.verify(message.location[i]);
+                            if (error)
+                                return "location." + error;
+                        }
+                    }
+                    return null;
+                };
+    
+                /**
+                 * Creates a SourceCodeInfo message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.SourceCodeInfo
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo
+                 */
+                SourceCodeInfo.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.SourceCodeInfo)
+                        return object;
+                    var message = new $root.google.protobuf.SourceCodeInfo();
+                    if (object.location) {
+                        if (!Array.isArray(object.location))
+                            throw TypeError(".google.protobuf.SourceCodeInfo.location: array expected");
+                        message.location = [];
+                        for (var i = 0; i < object.location.length; ++i) {
+                            if (typeof object.location[i] !== "object")
+                                throw TypeError(".google.protobuf.SourceCodeInfo.location: object expected");
+                            message.location[i] = $root.google.protobuf.SourceCodeInfo.Location.fromObject(object.location[i]);
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a SourceCodeInfo message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.SourceCodeInfo
+                 * @static
+                 * @param {google.protobuf.SourceCodeInfo} message SourceCodeInfo
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                SourceCodeInfo.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults)
+                        object.location = [];
+                    if (message.location && message.location.length) {
+                        object.location = [];
+                        for (var j = 0; j < message.location.length; ++j)
+                            object.location[j] = $root.google.protobuf.SourceCodeInfo.Location.toObject(message.location[j], options);
+                    }
+                    return object;
+                };
+    
+                /**
+                 * Converts this SourceCodeInfo to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.SourceCodeInfo
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                SourceCodeInfo.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for SourceCodeInfo
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.SourceCodeInfo
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                SourceCodeInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.SourceCodeInfo";
+                };
+    
+                SourceCodeInfo.Location = (function() {
+    
+                    /**
+                     * Properties of a Location.
+                     * @memberof google.protobuf.SourceCodeInfo
+                     * @interface ILocation
+                     * @property {Array.<number>|null} [path] Location path
+                     * @property {Array.<number>|null} [span] Location span
+                     * @property {string|null} [leadingComments] Location leadingComments
+                     * @property {string|null} [trailingComments] Location trailingComments
+                     * @property {Array.<string>|null} [leadingDetachedComments] Location leadingDetachedComments
+                     */
+    
+                    /**
+                     * Constructs a new Location.
+                     * @memberof google.protobuf.SourceCodeInfo
+                     * @classdesc Represents a Location.
+                     * @implements ILocation
+                     * @constructor
+                     * @param {google.protobuf.SourceCodeInfo.ILocation=} [properties] Properties to set
+                     */
+                    function Location(properties) {
+                        this.path = [];
+                        this.span = [];
+                        this.leadingDetachedComments = [];
+                        if (properties)
+                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                if (properties[keys[i]] != null)
+                                    this[keys[i]] = properties[keys[i]];
+                    }
+    
+                    /**
+                     * Location path.
+                     * @member {Array.<number>} path
+                     * @memberof google.protobuf.SourceCodeInfo.Location
+                     * @instance
+                     */
+                    Location.prototype.path = $util.emptyArray;
+    
+                    /**
+                     * Location span.
+                     * @member {Array.<number>} span
+                     * @memberof google.protobuf.SourceCodeInfo.Location
+                     * @instance
+                     */
+                    Location.prototype.span = $util.emptyArray;
+    
+                    /**
+                     * Location leadingComments.
+                     * @member {string} leadingComments
+                     * @memberof google.protobuf.SourceCodeInfo.Location
+                     * @instance
+                     */
+                    Location.prototype.leadingComments = "";
+    
+                    /**
+                     * Location trailingComments.
+                     * @member {string} trailingComments
+                     * @memberof google.protobuf.SourceCodeInfo.Location
+                     * @instance
+                     */
+                    Location.prototype.trailingComments = "";
+    
+                    /**
+                     * Location leadingDetachedComments.
+                     * @member {Array.<string>} leadingDetachedComments
+                     * @memberof google.protobuf.SourceCodeInfo.Location
+                     * @instance
+                     */
+                    Location.prototype.leadingDetachedComments = $util.emptyArray;
+    
+                    /**
+                     * Creates a new Location instance using the specified properties.
+                     * @function create
+                     * @memberof google.protobuf.SourceCodeInfo.Location
+                     * @static
+                     * @param {google.protobuf.SourceCodeInfo.ILocation=} [properties] Properties to set
+                     * @returns {google.protobuf.SourceCodeInfo.Location} Location instance
+                     */
+                    Location.create = function create(properties) {
+                        return new Location(properties);
+                    };
+    
+                    /**
+                     * Encodes the specified Location message. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages.
+                     * @function encode
+                     * @memberof google.protobuf.SourceCodeInfo.Location
+                     * @static
+                     * @param {google.protobuf.SourceCodeInfo.ILocation} message Location message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    Location.encode = function encode(message, writer) {
+                        if (!writer)
+                            writer = $Writer.create();
+                        if (message.path != null && message.path.length) {
+                            writer.uint32(/* id 1, wireType 2 =*/10).fork();
+                            for (var i = 0; i < message.path.length; ++i)
+                                writer.int32(message.path[i]);
+                            writer.ldelim();
+                        }
+                        if (message.span != null && message.span.length) {
+                            writer.uint32(/* id 2, wireType 2 =*/18).fork();
+                            for (var i = 0; i < message.span.length; ++i)
+                                writer.int32(message.span[i]);
+                            writer.ldelim();
+                        }
+                        if (message.leadingComments != null && Object.hasOwnProperty.call(message, "leadingComments"))
+                            writer.uint32(/* id 3, wireType 2 =*/26).string(message.leadingComments);
+                        if (message.trailingComments != null && Object.hasOwnProperty.call(message, "trailingComments"))
+                            writer.uint32(/* id 4, wireType 2 =*/34).string(message.trailingComments);
+                        if (message.leadingDetachedComments != null && message.leadingDetachedComments.length)
+                            for (var i = 0; i < message.leadingDetachedComments.length; ++i)
+                                writer.uint32(/* id 6, wireType 2 =*/50).string(message.leadingDetachedComments[i]);
+                        return writer;
+                    };
+    
+                    /**
+                     * Encodes the specified Location message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages.
+                     * @function encodeDelimited
+                     * @memberof google.protobuf.SourceCodeInfo.Location
+                     * @static
+                     * @param {google.protobuf.SourceCodeInfo.ILocation} message Location message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    Location.encodeDelimited = function encodeDelimited(message, writer) {
+                        return this.encode(message, writer).ldelim();
+                    };
+    
+                    /**
+                     * Decodes a Location message from the specified reader or buffer.
+                     * @function decode
+                     * @memberof google.protobuf.SourceCodeInfo.Location
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @param {number} [length] Message length if known beforehand
+                     * @returns {google.protobuf.SourceCodeInfo.Location} Location
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    Location.decode = function decode(reader, length, error) {
+                        if (!(reader instanceof $Reader))
+                            reader = $Reader.create(reader);
+                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.SourceCodeInfo.Location();
+                        while (reader.pos < end) {
+                            var tag = reader.uint32();
+                            if (tag === error)
+                                break;
+                            switch (tag >>> 3) {
+                            case 1: {
+                                    if (!(message.path && message.path.length))
+                                        message.path = [];
+                                    if ((tag & 7) === 2) {
+                                        var end2 = reader.uint32() + reader.pos;
+                                        while (reader.pos < end2)
+                                            message.path.push(reader.int32());
+                                    } else
+                                        message.path.push(reader.int32());
+                                    break;
+                                }
+                            case 2: {
+                                    if (!(message.span && message.span.length))
+                                        message.span = [];
+                                    if ((tag & 7) === 2) {
+                                        var end2 = reader.uint32() + reader.pos;
+                                        while (reader.pos < end2)
+                                            message.span.push(reader.int32());
+                                    } else
+                                        message.span.push(reader.int32());
+                                    break;
+                                }
+                            case 3: {
+                                    message.leadingComments = reader.string();
+                                    break;
+                                }
+                            case 4: {
+                                    message.trailingComments = reader.string();
+                                    break;
+                                }
+                            case 6: {
+                                    if (!(message.leadingDetachedComments && message.leadingDetachedComments.length))
+                                        message.leadingDetachedComments = [];
+                                    message.leadingDetachedComments.push(reader.string());
+                                    break;
+                                }
+                            default:
+                                reader.skipType(tag & 7);
+                                break;
+                            }
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Decodes a Location message from the specified reader or buffer, length delimited.
+                     * @function decodeDelimited
+                     * @memberof google.protobuf.SourceCodeInfo.Location
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @returns {google.protobuf.SourceCodeInfo.Location} Location
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    Location.decodeDelimited = function decodeDelimited(reader) {
+                        if (!(reader instanceof $Reader))
+                            reader = new $Reader(reader);
+                        return this.decode(reader, reader.uint32());
+                    };
+    
+                    /**
+                     * Verifies a Location message.
+                     * @function verify
+                     * @memberof google.protobuf.SourceCodeInfo.Location
+                     * @static
+                     * @param {Object.<string,*>} message Plain object to verify
+                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                     */
+                    Location.verify = function verify(message) {
+                        if (typeof message !== "object" || message === null)
+                            return "object expected";
+                        if (message.path != null && message.hasOwnProperty("path")) {
+                            if (!Array.isArray(message.path))
+                                return "path: array expected";
+                            for (var i = 0; i < message.path.length; ++i)
+                                if (!$util.isInteger(message.path[i]))
+                                    return "path: integer[] expected";
+                        }
+                        if (message.span != null && message.hasOwnProperty("span")) {
+                            if (!Array.isArray(message.span))
+                                return "span: array expected";
+                            for (var i = 0; i < message.span.length; ++i)
+                                if (!$util.isInteger(message.span[i]))
+                                    return "span: integer[] expected";
+                        }
+                        if (message.leadingComments != null && message.hasOwnProperty("leadingComments"))
+                            if (!$util.isString(message.leadingComments))
+                                return "leadingComments: string expected";
+                        if (message.trailingComments != null && message.hasOwnProperty("trailingComments"))
+                            if (!$util.isString(message.trailingComments))
+                                return "trailingComments: string expected";
+                        if (message.leadingDetachedComments != null && message.hasOwnProperty("leadingDetachedComments")) {
+                            if (!Array.isArray(message.leadingDetachedComments))
+                                return "leadingDetachedComments: array expected";
+                            for (var i = 0; i < message.leadingDetachedComments.length; ++i)
+                                if (!$util.isString(message.leadingDetachedComments[i]))
+                                    return "leadingDetachedComments: string[] expected";
+                        }
+                        return null;
+                    };
+    
+                    /**
+                     * Creates a Location message from a plain object. Also converts values to their respective internal types.
+                     * @function fromObject
+                     * @memberof google.protobuf.SourceCodeInfo.Location
+                     * @static
+                     * @param {Object.<string,*>} object Plain object
+                     * @returns {google.protobuf.SourceCodeInfo.Location} Location
+                     */
+                    Location.fromObject = function fromObject(object) {
+                        if (object instanceof $root.google.protobuf.SourceCodeInfo.Location)
+                            return object;
+                        var message = new $root.google.protobuf.SourceCodeInfo.Location();
+                        if (object.path) {
+                            if (!Array.isArray(object.path))
+                                throw TypeError(".google.protobuf.SourceCodeInfo.Location.path: array expected");
+                            message.path = [];
+                            for (var i = 0; i < object.path.length; ++i)
+                                message.path[i] = object.path[i] | 0;
+                        }
+                        if (object.span) {
+                            if (!Array.isArray(object.span))
+                                throw TypeError(".google.protobuf.SourceCodeInfo.Location.span: array expected");
+                            message.span = [];
+                            for (var i = 0; i < object.span.length; ++i)
+                                message.span[i] = object.span[i] | 0;
+                        }
+                        if (object.leadingComments != null)
+                            message.leadingComments = String(object.leadingComments);
+                        if (object.trailingComments != null)
+                            message.trailingComments = String(object.trailingComments);
+                        if (object.leadingDetachedComments) {
+                            if (!Array.isArray(object.leadingDetachedComments))
+                                throw TypeError(".google.protobuf.SourceCodeInfo.Location.leadingDetachedComments: array expected");
+                            message.leadingDetachedComments = [];
+                            for (var i = 0; i < object.leadingDetachedComments.length; ++i)
+                                message.leadingDetachedComments[i] = String(object.leadingDetachedComments[i]);
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Creates a plain object from a Location message. Also converts values to other types if specified.
+                     * @function toObject
+                     * @memberof google.protobuf.SourceCodeInfo.Location
+                     * @static
+                     * @param {google.protobuf.SourceCodeInfo.Location} message Location
+                     * @param {$protobuf.IConversionOptions} [options] Conversion options
+                     * @returns {Object.<string,*>} Plain object
+                     */
+                    Location.toObject = function toObject(message, options) {
+                        if (!options)
+                            options = {};
+                        var object = {};
+                        if (options.arrays || options.defaults) {
+                            object.path = [];
+                            object.span = [];
+                            object.leadingDetachedComments = [];
+                        }
+                        if (options.defaults) {
+                            object.leadingComments = "";
+                            object.trailingComments = "";
+                        }
+                        if (message.path && message.path.length) {
+                            object.path = [];
+                            for (var j = 0; j < message.path.length; ++j)
+                                object.path[j] = message.path[j];
+                        }
+                        if (message.span && message.span.length) {
+                            object.span = [];
+                            for (var j = 0; j < message.span.length; ++j)
+                                object.span[j] = message.span[j];
+                        }
+                        if (message.leadingComments != null && message.hasOwnProperty("leadingComments"))
+                            object.leadingComments = message.leadingComments;
+                        if (message.trailingComments != null && message.hasOwnProperty("trailingComments"))
+                            object.trailingComments = message.trailingComments;
+                        if (message.leadingDetachedComments && message.leadingDetachedComments.length) {
+                            object.leadingDetachedComments = [];
+                            for (var j = 0; j < message.leadingDetachedComments.length; ++j)
+                                object.leadingDetachedComments[j] = message.leadingDetachedComments[j];
+                        }
+                        return object;
+                    };
+    
+                    /**
+                     * Converts this Location to JSON.
+                     * @function toJSON
+                     * @memberof google.protobuf.SourceCodeInfo.Location
+                     * @instance
+                     * @returns {Object.<string,*>} JSON object
+                     */
+                    Location.prototype.toJSON = function toJSON() {
+                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                    };
+    
+                    /**
+                     * Gets the default type url for Location
+                     * @function getTypeUrl
+                     * @memberof google.protobuf.SourceCodeInfo.Location
+                     * @static
+                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns {string} The default type url
+                     */
+                    Location.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                        if (typeUrlPrefix === undefined) {
+                            typeUrlPrefix = "type.googleapis.com";
+                        }
+                        return typeUrlPrefix + "/google.protobuf.SourceCodeInfo.Location";
+                    };
+    
+                    return Location;
+                })();
+    
+                return SourceCodeInfo;
+            })();
+    
+            protobuf.GeneratedCodeInfo = (function() {
+    
+                /**
+                 * Properties of a GeneratedCodeInfo.
+                 * @memberof google.protobuf
+                 * @interface IGeneratedCodeInfo
+                 * @property {Array.<google.protobuf.GeneratedCodeInfo.IAnnotation>|null} [annotation] GeneratedCodeInfo annotation
+                 */
+    
+                /**
+                 * Constructs a new GeneratedCodeInfo.
+                 * @memberof google.protobuf
+                 * @classdesc Represents a GeneratedCodeInfo.
+                 * @implements IGeneratedCodeInfo
+                 * @constructor
+                 * @param {google.protobuf.IGeneratedCodeInfo=} [properties] Properties to set
+                 */
+                function GeneratedCodeInfo(properties) {
+                    this.annotation = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * GeneratedCodeInfo annotation.
+                 * @member {Array.<google.protobuf.GeneratedCodeInfo.IAnnotation>} annotation
+                 * @memberof google.protobuf.GeneratedCodeInfo
+                 * @instance
+                 */
+                GeneratedCodeInfo.prototype.annotation = $util.emptyArray;
+    
+                /**
+                 * Creates a new GeneratedCodeInfo instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.GeneratedCodeInfo
+                 * @static
+                 * @param {google.protobuf.IGeneratedCodeInfo=} [properties] Properties to set
+                 * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo instance
+                 */
+                GeneratedCodeInfo.create = function create(properties) {
+                    return new GeneratedCodeInfo(properties);
+                };
+    
+                /**
+                 * Encodes the specified GeneratedCodeInfo message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.GeneratedCodeInfo
+                 * @static
+                 * @param {google.protobuf.IGeneratedCodeInfo} message GeneratedCodeInfo message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                GeneratedCodeInfo.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.annotation != null && message.annotation.length)
+                        for (var i = 0; i < message.annotation.length; ++i)
+                            $root.google.protobuf.GeneratedCodeInfo.Annotation.encode(message.annotation[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified GeneratedCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.GeneratedCodeInfo
+                 * @static
+                 * @param {google.protobuf.IGeneratedCodeInfo} message GeneratedCodeInfo message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                GeneratedCodeInfo.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a GeneratedCodeInfo message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.GeneratedCodeInfo
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                GeneratedCodeInfo.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.GeneratedCodeInfo();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                if (!(message.annotation && message.annotation.length))
+                                    message.annotation = [];
+                                message.annotation.push($root.google.protobuf.GeneratedCodeInfo.Annotation.decode(reader, reader.uint32()));
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a GeneratedCodeInfo message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.GeneratedCodeInfo
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                GeneratedCodeInfo.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a GeneratedCodeInfo message.
+                 * @function verify
+                 * @memberof google.protobuf.GeneratedCodeInfo
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                GeneratedCodeInfo.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.annotation != null && message.hasOwnProperty("annotation")) {
+                        if (!Array.isArray(message.annotation))
+                            return "annotation: array expected";
+                        for (var i = 0; i < message.annotation.length; ++i) {
+                            var error = $root.google.protobuf.GeneratedCodeInfo.Annotation.verify(message.annotation[i]);
+                            if (error)
+                                return "annotation." + error;
+                        }
+                    }
+                    return null;
+                };
+    
+                /**
+                 * Creates a GeneratedCodeInfo message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.GeneratedCodeInfo
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo
+                 */
+                GeneratedCodeInfo.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.GeneratedCodeInfo)
+                        return object;
+                    var message = new $root.google.protobuf.GeneratedCodeInfo();
+                    if (object.annotation) {
+                        if (!Array.isArray(object.annotation))
+                            throw TypeError(".google.protobuf.GeneratedCodeInfo.annotation: array expected");
+                        message.annotation = [];
+                        for (var i = 0; i < object.annotation.length; ++i) {
+                            if (typeof object.annotation[i] !== "object")
+                                throw TypeError(".google.protobuf.GeneratedCodeInfo.annotation: object expected");
+                            message.annotation[i] = $root.google.protobuf.GeneratedCodeInfo.Annotation.fromObject(object.annotation[i]);
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a GeneratedCodeInfo message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.GeneratedCodeInfo
+                 * @static
+                 * @param {google.protobuf.GeneratedCodeInfo} message GeneratedCodeInfo
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                GeneratedCodeInfo.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults)
+                        object.annotation = [];
+                    if (message.annotation && message.annotation.length) {
+                        object.annotation = [];
+                        for (var j = 0; j < message.annotation.length; ++j)
+                            object.annotation[j] = $root.google.protobuf.GeneratedCodeInfo.Annotation.toObject(message.annotation[j], options);
+                    }
+                    return object;
+                };
+    
+                /**
+                 * Converts this GeneratedCodeInfo to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.GeneratedCodeInfo
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                GeneratedCodeInfo.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for GeneratedCodeInfo
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.GeneratedCodeInfo
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                GeneratedCodeInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.GeneratedCodeInfo";
+                };
+    
+                GeneratedCodeInfo.Annotation = (function() {
+    
+                    /**
+                     * Properties of an Annotation.
+                     * @memberof google.protobuf.GeneratedCodeInfo
+                     * @interface IAnnotation
+                     * @property {Array.<number>|null} [path] Annotation path
+                     * @property {string|null} [sourceFile] Annotation sourceFile
+                     * @property {number|null} [begin] Annotation begin
+                     * @property {number|null} [end] Annotation end
+                     * @property {google.protobuf.GeneratedCodeInfo.Annotation.Semantic|null} [semantic] Annotation semantic
+                     */
+    
+                    /**
+                     * Constructs a new Annotation.
+                     * @memberof google.protobuf.GeneratedCodeInfo
+                     * @classdesc Represents an Annotation.
+                     * @implements IAnnotation
+                     * @constructor
+                     * @param {google.protobuf.GeneratedCodeInfo.IAnnotation=} [properties] Properties to set
+                     */
+                    function Annotation(properties) {
+                        this.path = [];
+                        if (properties)
+                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                if (properties[keys[i]] != null)
+                                    this[keys[i]] = properties[keys[i]];
+                    }
+    
+                    /**
+                     * Annotation path.
+                     * @member {Array.<number>} path
+                     * @memberof google.protobuf.GeneratedCodeInfo.Annotation
+                     * @instance
+                     */
+                    Annotation.prototype.path = $util.emptyArray;
+    
+                    /**
+                     * Annotation sourceFile.
+                     * @member {string} sourceFile
+                     * @memberof google.protobuf.GeneratedCodeInfo.Annotation
+                     * @instance
+                     */
+                    Annotation.prototype.sourceFile = "";
+    
+                    /**
+                     * Annotation begin.
+                     * @member {number} begin
+                     * @memberof google.protobuf.GeneratedCodeInfo.Annotation
+                     * @instance
+                     */
+                    Annotation.prototype.begin = 0;
+    
+                    /**
+                     * Annotation end.
+                     * @member {number} end
+                     * @memberof google.protobuf.GeneratedCodeInfo.Annotation
+                     * @instance
+                     */
+                    Annotation.prototype.end = 0;
+    
+                    /**
+                     * Annotation semantic.
+                     * @member {google.protobuf.GeneratedCodeInfo.Annotation.Semantic} semantic
+                     * @memberof google.protobuf.GeneratedCodeInfo.Annotation
+                     * @instance
+                     */
+                    Annotation.prototype.semantic = 0;
+    
+                    /**
+                     * Creates a new Annotation instance using the specified properties.
+                     * @function create
+                     * @memberof google.protobuf.GeneratedCodeInfo.Annotation
+                     * @static
+                     * @param {google.protobuf.GeneratedCodeInfo.IAnnotation=} [properties] Properties to set
+                     * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation instance
+                     */
+                    Annotation.create = function create(properties) {
+                        return new Annotation(properties);
+                    };
+    
+                    /**
+                     * Encodes the specified Annotation message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages.
+                     * @function encode
+                     * @memberof google.protobuf.GeneratedCodeInfo.Annotation
+                     * @static
+                     * @param {google.protobuf.GeneratedCodeInfo.IAnnotation} message Annotation message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    Annotation.encode = function encode(message, writer) {
+                        if (!writer)
+                            writer = $Writer.create();
+                        if (message.path != null && message.path.length) {
+                            writer.uint32(/* id 1, wireType 2 =*/10).fork();
+                            for (var i = 0; i < message.path.length; ++i)
+                                writer.int32(message.path[i]);
+                            writer.ldelim();
+                        }
+                        if (message.sourceFile != null && Object.hasOwnProperty.call(message, "sourceFile"))
+                            writer.uint32(/* id 2, wireType 2 =*/18).string(message.sourceFile);
+                        if (message.begin != null && Object.hasOwnProperty.call(message, "begin"))
+                            writer.uint32(/* id 3, wireType 0 =*/24).int32(message.begin);
+                        if (message.end != null && Object.hasOwnProperty.call(message, "end"))
+                            writer.uint32(/* id 4, wireType 0 =*/32).int32(message.end);
+                        if (message.semantic != null && Object.hasOwnProperty.call(message, "semantic"))
+                            writer.uint32(/* id 5, wireType 0 =*/40).int32(message.semantic);
+                        return writer;
+                    };
+    
+                    /**
+                     * Encodes the specified Annotation message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages.
+                     * @function encodeDelimited
+                     * @memberof google.protobuf.GeneratedCodeInfo.Annotation
+                     * @static
+                     * @param {google.protobuf.GeneratedCodeInfo.IAnnotation} message Annotation message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    Annotation.encodeDelimited = function encodeDelimited(message, writer) {
+                        return this.encode(message, writer).ldelim();
+                    };
+    
+                    /**
+                     * Decodes an Annotation message from the specified reader or buffer.
+                     * @function decode
+                     * @memberof google.protobuf.GeneratedCodeInfo.Annotation
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @param {number} [length] Message length if known beforehand
+                     * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    Annotation.decode = function decode(reader, length, error) {
+                        if (!(reader instanceof $Reader))
+                            reader = $Reader.create(reader);
+                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.GeneratedCodeInfo.Annotation();
+                        while (reader.pos < end) {
+                            var tag = reader.uint32();
+                            if (tag === error)
+                                break;
+                            switch (tag >>> 3) {
+                            case 1: {
+                                    if (!(message.path && message.path.length))
+                                        message.path = [];
+                                    if ((tag & 7) === 2) {
+                                        var end2 = reader.uint32() + reader.pos;
+                                        while (reader.pos < end2)
+                                            message.path.push(reader.int32());
+                                    } else
+                                        message.path.push(reader.int32());
+                                    break;
+                                }
+                            case 2: {
+                                    message.sourceFile = reader.string();
+                                    break;
+                                }
+                            case 3: {
+                                    message.begin = reader.int32();
+                                    break;
+                                }
+                            case 4: {
+                                    message.end = reader.int32();
+                                    break;
+                                }
+                            case 5: {
+                                    message.semantic = reader.int32();
+                                    break;
+                                }
+                            default:
+                                reader.skipType(tag & 7);
+                                break;
+                            }
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Decodes an Annotation message from the specified reader or buffer, length delimited.
+                     * @function decodeDelimited
+                     * @memberof google.protobuf.GeneratedCodeInfo.Annotation
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    Annotation.decodeDelimited = function decodeDelimited(reader) {
+                        if (!(reader instanceof $Reader))
+                            reader = new $Reader(reader);
+                        return this.decode(reader, reader.uint32());
+                    };
+    
+                    /**
+                     * Verifies an Annotation message.
+                     * @function verify
+                     * @memberof google.protobuf.GeneratedCodeInfo.Annotation
+                     * @static
+                     * @param {Object.<string,*>} message Plain object to verify
+                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                     */
+                    Annotation.verify = function verify(message) {
+                        if (typeof message !== "object" || message === null)
+                            return "object expected";
+                        if (message.path != null && message.hasOwnProperty("path")) {
+                            if (!Array.isArray(message.path))
+                                return "path: array expected";
+                            for (var i = 0; i < message.path.length; ++i)
+                                if (!$util.isInteger(message.path[i]))
+                                    return "path: integer[] expected";
+                        }
+                        if (message.sourceFile != null && message.hasOwnProperty("sourceFile"))
+                            if (!$util.isString(message.sourceFile))
+                                return "sourceFile: string expected";
+                        if (message.begin != null && message.hasOwnProperty("begin"))
+                            if (!$util.isInteger(message.begin))
+                                return "begin: integer expected";
+                        if (message.end != null && message.hasOwnProperty("end"))
+                            if (!$util.isInteger(message.end))
+                                return "end: integer expected";
+                        if (message.semantic != null && message.hasOwnProperty("semantic"))
+                            switch (message.semantic) {
+                            default:
+                                return "semantic: enum value expected";
+                            case 0:
+                            case 1:
+                            case 2:
+                                break;
+                            }
+                        return null;
+                    };
+    
+                    /**
+                     * Creates an Annotation message from a plain object. Also converts values to their respective internal types.
+                     * @function fromObject
+                     * @memberof google.protobuf.GeneratedCodeInfo.Annotation
+                     * @static
+                     * @param {Object.<string,*>} object Plain object
+                     * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation
+                     */
+                    Annotation.fromObject = function fromObject(object) {
+                        if (object instanceof $root.google.protobuf.GeneratedCodeInfo.Annotation)
+                            return object;
+                        var message = new $root.google.protobuf.GeneratedCodeInfo.Annotation();
+                        if (object.path) {
+                            if (!Array.isArray(object.path))
+                                throw TypeError(".google.protobuf.GeneratedCodeInfo.Annotation.path: array expected");
+                            message.path = [];
+                            for (var i = 0; i < object.path.length; ++i)
+                                message.path[i] = object.path[i] | 0;
+                        }
+                        if (object.sourceFile != null)
+                            message.sourceFile = String(object.sourceFile);
+                        if (object.begin != null)
+                            message.begin = object.begin | 0;
+                        if (object.end != null)
+                            message.end = object.end | 0;
+                        switch (object.semantic) {
+                        default:
+                            if (typeof object.semantic === "number") {
+                                message.semantic = object.semantic;
+                                break;
+                            }
+                            break;
+                        case "NONE":
+                        case 0:
+                            message.semantic = 0;
+                            break;
+                        case "SET":
+                        case 1:
+                            message.semantic = 1;
+                            break;
+                        case "ALIAS":
+                        case 2:
+                            message.semantic = 2;
+                            break;
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Creates a plain object from an Annotation message. Also converts values to other types if specified.
+                     * @function toObject
+                     * @memberof google.protobuf.GeneratedCodeInfo.Annotation
+                     * @static
+                     * @param {google.protobuf.GeneratedCodeInfo.Annotation} message Annotation
+                     * @param {$protobuf.IConversionOptions} [options] Conversion options
+                     * @returns {Object.<string,*>} Plain object
+                     */
+                    Annotation.toObject = function toObject(message, options) {
+                        if (!options)
+                            options = {};
+                        var object = {};
+                        if (options.arrays || options.defaults)
+                            object.path = [];
+                        if (options.defaults) {
+                            object.sourceFile = "";
+                            object.begin = 0;
+                            object.end = 0;
+                            object.semantic = options.enums === String ? "NONE" : 0;
+                        }
+                        if (message.path && message.path.length) {
+                            object.path = [];
+                            for (var j = 0; j < message.path.length; ++j)
+                                object.path[j] = message.path[j];
+                        }
+                        if (message.sourceFile != null && message.hasOwnProperty("sourceFile"))
+                            object.sourceFile = message.sourceFile;
+                        if (message.begin != null && message.hasOwnProperty("begin"))
+                            object.begin = message.begin;
+                        if (message.end != null && message.hasOwnProperty("end"))
+                            object.end = message.end;
+                        if (message.semantic != null && message.hasOwnProperty("semantic"))
+                            object.semantic = options.enums === String ? $root.google.protobuf.GeneratedCodeInfo.Annotation.Semantic[message.semantic] === undefined ? message.semantic : $root.google.protobuf.GeneratedCodeInfo.Annotation.Semantic[message.semantic] : message.semantic;
+                        return object;
+                    };
+    
+                    /**
+                     * Converts this Annotation to JSON.
+                     * @function toJSON
+                     * @memberof google.protobuf.GeneratedCodeInfo.Annotation
+                     * @instance
+                     * @returns {Object.<string,*>} JSON object
+                     */
+                    Annotation.prototype.toJSON = function toJSON() {
+                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                    };
+    
+                    /**
+                     * Gets the default type url for Annotation
+                     * @function getTypeUrl
+                     * @memberof google.protobuf.GeneratedCodeInfo.Annotation
+                     * @static
+                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns {string} The default type url
+                     */
+                    Annotation.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                        if (typeUrlPrefix === undefined) {
+                            typeUrlPrefix = "type.googleapis.com";
+                        }
+                        return typeUrlPrefix + "/google.protobuf.GeneratedCodeInfo.Annotation";
+                    };
+    
+                    /**
+                     * Semantic enum.
+                     * @name google.protobuf.GeneratedCodeInfo.Annotation.Semantic
+                     * @enum {number}
+                     * @property {number} NONE=0 NONE value
+                     * @property {number} SET=1 SET value
+                     * @property {number} ALIAS=2 ALIAS value
+                     */
+                    Annotation.Semantic = (function() {
+                        var valuesById = {}, values = Object.create(valuesById);
+                        values[valuesById[0] = "NONE"] = 0;
+                        values[valuesById[1] = "SET"] = 1;
+                        values[valuesById[2] = "ALIAS"] = 2;
+                        return values;
+                    })();
+    
+                    return Annotation;
+                })();
+    
+                return GeneratedCodeInfo;
+            })();
+    
+            protobuf.Timestamp = (function() {
+    
+                /**
+                 * Properties of a Timestamp.
+                 * @memberof google.protobuf
+                 * @interface ITimestamp
+                 * @property {number|Long|null} [seconds] Timestamp seconds
+                 * @property {number|null} [nanos] Timestamp nanos
+                 */
+    
+                /**
+                 * Constructs a new Timestamp.
+                 * @memberof google.protobuf
+                 * @classdesc Represents a Timestamp.
+                 * @implements ITimestamp
+                 * @constructor
+                 * @param {google.protobuf.ITimestamp=} [properties] Properties to set
+                 */
+                function Timestamp(properties) {
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * Timestamp seconds.
+                 * @member {number|Long} seconds
+                 * @memberof google.protobuf.Timestamp
+                 * @instance
+                 */
+                Timestamp.prototype.seconds = $util.Long ? $util.Long.fromBits(0,0,false) : 0;
+    
+                /**
+                 * Timestamp nanos.
+                 * @member {number} nanos
+                 * @memberof google.protobuf.Timestamp
+                 * @instance
+                 */
+                Timestamp.prototype.nanos = 0;
+    
+                /**
+                 * Creates a new Timestamp instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.Timestamp
+                 * @static
+                 * @param {google.protobuf.ITimestamp=} [properties] Properties to set
+                 * @returns {google.protobuf.Timestamp} Timestamp instance
+                 */
+                Timestamp.create = function create(properties) {
+                    return new Timestamp(properties);
+                };
+    
+                /**
+                 * Encodes the specified Timestamp message. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.Timestamp
+                 * @static
+                 * @param {google.protobuf.ITimestamp} message Timestamp message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                Timestamp.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.seconds != null && Object.hasOwnProperty.call(message, "seconds"))
+                        writer.uint32(/* id 1, wireType 0 =*/8).int64(message.seconds);
+                    if (message.nanos != null && Object.hasOwnProperty.call(message, "nanos"))
+                        writer.uint32(/* id 2, wireType 0 =*/16).int32(message.nanos);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified Timestamp message, length delimited. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.Timestamp
+                 * @static
+                 * @param {google.protobuf.ITimestamp} message Timestamp message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                Timestamp.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a Timestamp message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.Timestamp
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.Timestamp} Timestamp
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                Timestamp.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Timestamp();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.seconds = reader.int64();
+                                break;
+                            }
+                        case 2: {
+                                message.nanos = reader.int32();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a Timestamp message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.Timestamp
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.Timestamp} Timestamp
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                Timestamp.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a Timestamp message.
+                 * @function verify
+                 * @memberof google.protobuf.Timestamp
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                Timestamp.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.seconds != null && message.hasOwnProperty("seconds"))
+                        if (!$util.isInteger(message.seconds) && !(message.seconds && $util.isInteger(message.seconds.low) && $util.isInteger(message.seconds.high)))
+                            return "seconds: integer|Long expected";
+                    if (message.nanos != null && message.hasOwnProperty("nanos"))
+                        if (!$util.isInteger(message.nanos))
+                            return "nanos: integer expected";
+                    return null;
+                };
+    
+                /**
+                 * Creates a Timestamp message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.Timestamp
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.Timestamp} Timestamp
+                 */
+                Timestamp.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.Timestamp)
+                        return object;
+                    var message = new $root.google.protobuf.Timestamp();
+                    if (object.seconds != null)
+                        if ($util.Long)
+                            (message.seconds = $util.Long.fromValue(object.seconds)).unsigned = false;
+                        else if (typeof object.seconds === "string")
+                            message.seconds = parseInt(object.seconds, 10);
+                        else if (typeof object.seconds === "number")
+                            message.seconds = object.seconds;
+                        else if (typeof object.seconds === "object")
+                            message.seconds = new $util.LongBits(object.seconds.low >>> 0, object.seconds.high >>> 0).toNumber();
+                    if (object.nanos != null)
+                        message.nanos = object.nanos | 0;
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a Timestamp message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.Timestamp
+                 * @static
+                 * @param {google.protobuf.Timestamp} message Timestamp
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                Timestamp.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.defaults) {
+                        if ($util.Long) {
+                            var long = new $util.Long(0, 0, false);
+                            object.seconds = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
+                        } else
+                            object.seconds = options.longs === String ? "0" : 0;
+                        object.nanos = 0;
+                    }
+                    if (message.seconds != null && message.hasOwnProperty("seconds"))
+                        if (typeof message.seconds === "number")
+                            object.seconds = options.longs === String ? String(message.seconds) : message.seconds;
+                        else
+                            object.seconds = options.longs === String ? $util.Long.prototype.toString.call(message.seconds) : options.longs === Number ? new $util.LongBits(message.seconds.low >>> 0, message.seconds.high >>> 0).toNumber() : message.seconds;
+                    if (message.nanos != null && message.hasOwnProperty("nanos"))
+                        object.nanos = message.nanos;
+                    return object;
+                };
+    
+                /**
+                 * Converts this Timestamp to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.Timestamp
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                Timestamp.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for Timestamp
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.Timestamp
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                Timestamp.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.Timestamp";
+                };
+    
+                return Timestamp;
+            })();
+    
+            protobuf.Duration = (function() {
+    
+                /**
+                 * Properties of a Duration.
+                 * @memberof google.protobuf
+                 * @interface IDuration
+                 * @property {number|Long|null} [seconds] Duration seconds
+                 * @property {number|null} [nanos] Duration nanos
+                 */
+    
+                /**
+                 * Constructs a new Duration.
+                 * @memberof google.protobuf
+                 * @classdesc Represents a Duration.
+                 * @implements IDuration
+                 * @constructor
+                 * @param {google.protobuf.IDuration=} [properties] Properties to set
+                 */
+                function Duration(properties) {
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * Duration seconds.
+                 * @member {number|Long} seconds
+                 * @memberof google.protobuf.Duration
+                 * @instance
+                 */
+                Duration.prototype.seconds = $util.Long ? $util.Long.fromBits(0,0,false) : 0;
+    
+                /**
+                 * Duration nanos.
+                 * @member {number} nanos
+                 * @memberof google.protobuf.Duration
+                 * @instance
+                 */
+                Duration.prototype.nanos = 0;
+    
+                /**
+                 * Creates a new Duration instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.Duration
+                 * @static
+                 * @param {google.protobuf.IDuration=} [properties] Properties to set
+                 * @returns {google.protobuf.Duration} Duration instance
+                 */
+                Duration.create = function create(properties) {
+                    return new Duration(properties);
+                };
+    
+                /**
+                 * Encodes the specified Duration message. Does not implicitly {@link google.protobuf.Duration.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.Duration
+                 * @static
+                 * @param {google.protobuf.IDuration} message Duration message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                Duration.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.seconds != null && Object.hasOwnProperty.call(message, "seconds"))
+                        writer.uint32(/* id 1, wireType 0 =*/8).int64(message.seconds);
+                    if (message.nanos != null && Object.hasOwnProperty.call(message, "nanos"))
+                        writer.uint32(/* id 2, wireType 0 =*/16).int32(message.nanos);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified Duration message, length delimited. Does not implicitly {@link google.protobuf.Duration.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.Duration
+                 * @static
+                 * @param {google.protobuf.IDuration} message Duration message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                Duration.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a Duration message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.Duration
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.Duration} Duration
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                Duration.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Duration();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.seconds = reader.int64();
+                                break;
+                            }
+                        case 2: {
+                                message.nanos = reader.int32();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a Duration message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.Duration
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.Duration} Duration
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                Duration.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a Duration message.
+                 * @function verify
+                 * @memberof google.protobuf.Duration
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                Duration.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.seconds != null && message.hasOwnProperty("seconds"))
+                        if (!$util.isInteger(message.seconds) && !(message.seconds && $util.isInteger(message.seconds.low) && $util.isInteger(message.seconds.high)))
+                            return "seconds: integer|Long expected";
+                    if (message.nanos != null && message.hasOwnProperty("nanos"))
+                        if (!$util.isInteger(message.nanos))
+                            return "nanos: integer expected";
+                    return null;
+                };
+    
+                /**
+                 * Creates a Duration message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.Duration
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.Duration} Duration
+                 */
+                Duration.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.Duration)
+                        return object;
+                    var message = new $root.google.protobuf.Duration();
+                    if (object.seconds != null)
+                        if ($util.Long)
+                            (message.seconds = $util.Long.fromValue(object.seconds)).unsigned = false;
+                        else if (typeof object.seconds === "string")
+                            message.seconds = parseInt(object.seconds, 10);
+                        else if (typeof object.seconds === "number")
+                            message.seconds = object.seconds;
+                        else if (typeof object.seconds === "object")
+                            message.seconds = new $util.LongBits(object.seconds.low >>> 0, object.seconds.high >>> 0).toNumber();
+                    if (object.nanos != null)
+                        message.nanos = object.nanos | 0;
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a Duration message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.Duration
+                 * @static
+                 * @param {google.protobuf.Duration} message Duration
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                Duration.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.defaults) {
+                        if ($util.Long) {
+                            var long = new $util.Long(0, 0, false);
+                            object.seconds = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
+                        } else
+                            object.seconds = options.longs === String ? "0" : 0;
+                        object.nanos = 0;
+                    }
+                    if (message.seconds != null && message.hasOwnProperty("seconds"))
+                        if (typeof message.seconds === "number")
+                            object.seconds = options.longs === String ? String(message.seconds) : message.seconds;
+                        else
+                            object.seconds = options.longs === String ? $util.Long.prototype.toString.call(message.seconds) : options.longs === Number ? new $util.LongBits(message.seconds.low >>> 0, message.seconds.high >>> 0).toNumber() : message.seconds;
+                    if (message.nanos != null && message.hasOwnProperty("nanos"))
+                        object.nanos = message.nanos;
+                    return object;
+                };
+    
+                /**
+                 * Converts this Duration to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.Duration
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                Duration.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for Duration
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.Duration
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                Duration.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.Duration";
+                };
+    
+                return Duration;
+            })();
+    
+            protobuf.DoubleValue = (function() {
+    
+                /**
+                 * Properties of a DoubleValue.
+                 * @memberof google.protobuf
+                 * @interface IDoubleValue
+                 * @property {number|null} [value] DoubleValue value
+                 */
+    
+                /**
+                 * Constructs a new DoubleValue.
+                 * @memberof google.protobuf
+                 * @classdesc Represents a DoubleValue.
+                 * @implements IDoubleValue
+                 * @constructor
+                 * @param {google.protobuf.IDoubleValue=} [properties] Properties to set
+                 */
+                function DoubleValue(properties) {
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * DoubleValue value.
+                 * @member {number} value
+                 * @memberof google.protobuf.DoubleValue
+                 * @instance
+                 */
+                DoubleValue.prototype.value = 0;
+    
+                /**
+                 * Creates a new DoubleValue instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.DoubleValue
+                 * @static
+                 * @param {google.protobuf.IDoubleValue=} [properties] Properties to set
+                 * @returns {google.protobuf.DoubleValue} DoubleValue instance
+                 */
+                DoubleValue.create = function create(properties) {
+                    return new DoubleValue(properties);
+                };
+    
+                /**
+                 * Encodes the specified DoubleValue message. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.DoubleValue
+                 * @static
+                 * @param {google.protobuf.IDoubleValue} message DoubleValue message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                DoubleValue.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.value != null && Object.hasOwnProperty.call(message, "value"))
+                        writer.uint32(/* id 1, wireType 1 =*/9).double(message.value);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified DoubleValue message, length delimited. Does not implicitly {@link google.protobuf.DoubleValue.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.DoubleValue
+                 * @static
+                 * @param {google.protobuf.IDoubleValue} message DoubleValue message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                DoubleValue.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a DoubleValue message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.DoubleValue
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.DoubleValue} DoubleValue
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                DoubleValue.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DoubleValue();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.value = reader.double();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a DoubleValue message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.DoubleValue
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.DoubleValue} DoubleValue
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                DoubleValue.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a DoubleValue message.
+                 * @function verify
+                 * @memberof google.protobuf.DoubleValue
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                DoubleValue.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.value != null && message.hasOwnProperty("value"))
+                        if (typeof message.value !== "number")
+                            return "value: number expected";
+                    return null;
+                };
+    
+                /**
+                 * Creates a DoubleValue message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.DoubleValue
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.DoubleValue} DoubleValue
+                 */
+                DoubleValue.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.DoubleValue)
+                        return object;
+                    var message = new $root.google.protobuf.DoubleValue();
+                    if (object.value != null)
+                        message.value = Number(object.value);
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a DoubleValue message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.DoubleValue
+                 * @static
+                 * @param {google.protobuf.DoubleValue} message DoubleValue
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                DoubleValue.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.defaults)
+                        object.value = 0;
+                    if (message.value != null && message.hasOwnProperty("value"))
+                        object.value = options.json && !isFinite(message.value) ? String(message.value) : message.value;
+                    return object;
+                };
+    
+                /**
+                 * Converts this DoubleValue to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.DoubleValue
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                DoubleValue.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for DoubleValue
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.DoubleValue
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                DoubleValue.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.DoubleValue";
+                };
+    
+                return DoubleValue;
+            })();
+    
+            protobuf.FloatValue = (function() {
+    
+                /**
+                 * Properties of a FloatValue.
+                 * @memberof google.protobuf
+                 * @interface IFloatValue
+                 * @property {number|null} [value] FloatValue value
+                 */
+    
+                /**
+                 * Constructs a new FloatValue.
+                 * @memberof google.protobuf
+                 * @classdesc Represents a FloatValue.
+                 * @implements IFloatValue
+                 * @constructor
+                 * @param {google.protobuf.IFloatValue=} [properties] Properties to set
+                 */
+                function FloatValue(properties) {
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * FloatValue value.
+                 * @member {number} value
+                 * @memberof google.protobuf.FloatValue
+                 * @instance
+                 */
+                FloatValue.prototype.value = 0;
+    
+                /**
+                 * Creates a new FloatValue instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.FloatValue
+                 * @static
+                 * @param {google.protobuf.IFloatValue=} [properties] Properties to set
+                 * @returns {google.protobuf.FloatValue} FloatValue instance
+                 */
+                FloatValue.create = function create(properties) {
+                    return new FloatValue(properties);
+                };
+    
+                /**
+                 * Encodes the specified FloatValue message. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.FloatValue
+                 * @static
+                 * @param {google.protobuf.IFloatValue} message FloatValue message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                FloatValue.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.value != null && Object.hasOwnProperty.call(message, "value"))
+                        writer.uint32(/* id 1, wireType 5 =*/13).float(message.value);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified FloatValue message, length delimited. Does not implicitly {@link google.protobuf.FloatValue.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.FloatValue
+                 * @static
+                 * @param {google.protobuf.IFloatValue} message FloatValue message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                FloatValue.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a FloatValue message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.FloatValue
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.FloatValue} FloatValue
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                FloatValue.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FloatValue();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.value = reader.float();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a FloatValue message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.FloatValue
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.FloatValue} FloatValue
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                FloatValue.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a FloatValue message.
+                 * @function verify
+                 * @memberof google.protobuf.FloatValue
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                FloatValue.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.value != null && message.hasOwnProperty("value"))
+                        if (typeof message.value !== "number")
+                            return "value: number expected";
+                    return null;
+                };
+    
+                /**
+                 * Creates a FloatValue message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.FloatValue
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.FloatValue} FloatValue
+                 */
+                FloatValue.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.FloatValue)
+                        return object;
+                    var message = new $root.google.protobuf.FloatValue();
+                    if (object.value != null)
+                        message.value = Number(object.value);
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a FloatValue message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.FloatValue
+                 * @static
+                 * @param {google.protobuf.FloatValue} message FloatValue
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                FloatValue.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.defaults)
+                        object.value = 0;
+                    if (message.value != null && message.hasOwnProperty("value"))
+                        object.value = options.json && !isFinite(message.value) ? String(message.value) : message.value;
+                    return object;
+                };
+    
+                /**
+                 * Converts this FloatValue to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.FloatValue
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                FloatValue.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for FloatValue
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.FloatValue
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                FloatValue.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.FloatValue";
+                };
+    
+                return FloatValue;
+            })();
+    
+            protobuf.Int64Value = (function() {
+    
+                /**
+                 * Properties of an Int64Value.
+                 * @memberof google.protobuf
+                 * @interface IInt64Value
+                 * @property {number|Long|null} [value] Int64Value value
+                 */
+    
+                /**
+                 * Constructs a new Int64Value.
+                 * @memberof google.protobuf
+                 * @classdesc Represents an Int64Value.
+                 * @implements IInt64Value
+                 * @constructor
+                 * @param {google.protobuf.IInt64Value=} [properties] Properties to set
+                 */
+                function Int64Value(properties) {
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * Int64Value value.
+                 * @member {number|Long} value
+                 * @memberof google.protobuf.Int64Value
+                 * @instance
+                 */
+                Int64Value.prototype.value = $util.Long ? $util.Long.fromBits(0,0,false) : 0;
+    
+                /**
+                 * Creates a new Int64Value instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.Int64Value
+                 * @static
+                 * @param {google.protobuf.IInt64Value=} [properties] Properties to set
+                 * @returns {google.protobuf.Int64Value} Int64Value instance
+                 */
+                Int64Value.create = function create(properties) {
+                    return new Int64Value(properties);
+                };
+    
+                /**
+                 * Encodes the specified Int64Value message. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.Int64Value
+                 * @static
+                 * @param {google.protobuf.IInt64Value} message Int64Value message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                Int64Value.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.value != null && Object.hasOwnProperty.call(message, "value"))
+                        writer.uint32(/* id 1, wireType 0 =*/8).int64(message.value);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified Int64Value message, length delimited. Does not implicitly {@link google.protobuf.Int64Value.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.Int64Value
+                 * @static
+                 * @param {google.protobuf.IInt64Value} message Int64Value message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                Int64Value.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes an Int64Value message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.Int64Value
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.Int64Value} Int64Value
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                Int64Value.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Int64Value();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.value = reader.int64();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes an Int64Value message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.Int64Value
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.Int64Value} Int64Value
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                Int64Value.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies an Int64Value message.
+                 * @function verify
+                 * @memberof google.protobuf.Int64Value
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                Int64Value.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.value != null && message.hasOwnProperty("value"))
+                        if (!$util.isInteger(message.value) && !(message.value && $util.isInteger(message.value.low) && $util.isInteger(message.value.high)))
+                            return "value: integer|Long expected";
+                    return null;
+                };
+    
+                /**
+                 * Creates an Int64Value message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.Int64Value
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.Int64Value} Int64Value
+                 */
+                Int64Value.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.Int64Value)
+                        return object;
+                    var message = new $root.google.protobuf.Int64Value();
+                    if (object.value != null)
+                        if ($util.Long)
+                            (message.value = $util.Long.fromValue(object.value)).unsigned = false;
+                        else if (typeof object.value === "string")
+                            message.value = parseInt(object.value, 10);
+                        else if (typeof object.value === "number")
+                            message.value = object.value;
+                        else if (typeof object.value === "object")
+                            message.value = new $util.LongBits(object.value.low >>> 0, object.value.high >>> 0).toNumber();
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from an Int64Value message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.Int64Value
+                 * @static
+                 * @param {google.protobuf.Int64Value} message Int64Value
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                Int64Value.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.defaults)
+                        if ($util.Long) {
+                            var long = new $util.Long(0, 0, false);
+                            object.value = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
+                        } else
+                            object.value = options.longs === String ? "0" : 0;
+                    if (message.value != null && message.hasOwnProperty("value"))
+                        if (typeof message.value === "number")
+                            object.value = options.longs === String ? String(message.value) : message.value;
+                        else
+                            object.value = options.longs === String ? $util.Long.prototype.toString.call(message.value) : options.longs === Number ? new $util.LongBits(message.value.low >>> 0, message.value.high >>> 0).toNumber() : message.value;
+                    return object;
+                };
+    
+                /**
+                 * Converts this Int64Value to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.Int64Value
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                Int64Value.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for Int64Value
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.Int64Value
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                Int64Value.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.Int64Value";
+                };
+    
+                return Int64Value;
+            })();
+    
+            protobuf.UInt64Value = (function() {
+    
+                /**
+                 * Properties of a UInt64Value.
+                 * @memberof google.protobuf
+                 * @interface IUInt64Value
+                 * @property {number|Long|null} [value] UInt64Value value
+                 */
+    
+                /**
+                 * Constructs a new UInt64Value.
+                 * @memberof google.protobuf
+                 * @classdesc Represents a UInt64Value.
+                 * @implements IUInt64Value
+                 * @constructor
+                 * @param {google.protobuf.IUInt64Value=} [properties] Properties to set
+                 */
+                function UInt64Value(properties) {
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * UInt64Value value.
+                 * @member {number|Long} value
+                 * @memberof google.protobuf.UInt64Value
+                 * @instance
+                 */
+                UInt64Value.prototype.value = $util.Long ? $util.Long.fromBits(0,0,true) : 0;
+    
+                /**
+                 * Creates a new UInt64Value instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.UInt64Value
+                 * @static
+                 * @param {google.protobuf.IUInt64Value=} [properties] Properties to set
+                 * @returns {google.protobuf.UInt64Value} UInt64Value instance
+                 */
+                UInt64Value.create = function create(properties) {
+                    return new UInt64Value(properties);
+                };
+    
+                /**
+                 * Encodes the specified UInt64Value message. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.UInt64Value
+                 * @static
+                 * @param {google.protobuf.IUInt64Value} message UInt64Value message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                UInt64Value.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.value != null && Object.hasOwnProperty.call(message, "value"))
+                        writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.value);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified UInt64Value message, length delimited. Does not implicitly {@link google.protobuf.UInt64Value.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.UInt64Value
+                 * @static
+                 * @param {google.protobuf.IUInt64Value} message UInt64Value message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                UInt64Value.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a UInt64Value message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.UInt64Value
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.UInt64Value} UInt64Value
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                UInt64Value.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UInt64Value();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.value = reader.uint64();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a UInt64Value message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.UInt64Value
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.UInt64Value} UInt64Value
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                UInt64Value.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a UInt64Value message.
+                 * @function verify
+                 * @memberof google.protobuf.UInt64Value
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                UInt64Value.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.value != null && message.hasOwnProperty("value"))
+                        if (!$util.isInteger(message.value) && !(message.value && $util.isInteger(message.value.low) && $util.isInteger(message.value.high)))
+                            return "value: integer|Long expected";
+                    return null;
+                };
+    
+                /**
+                 * Creates a UInt64Value message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.UInt64Value
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.UInt64Value} UInt64Value
+                 */
+                UInt64Value.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.UInt64Value)
+                        return object;
+                    var message = new $root.google.protobuf.UInt64Value();
+                    if (object.value != null)
+                        if ($util.Long)
+                            (message.value = $util.Long.fromValue(object.value)).unsigned = true;
+                        else if (typeof object.value === "string")
+                            message.value = parseInt(object.value, 10);
+                        else if (typeof object.value === "number")
+                            message.value = object.value;
+                        else if (typeof object.value === "object")
+                            message.value = new $util.LongBits(object.value.low >>> 0, object.value.high >>> 0).toNumber(true);
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a UInt64Value message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.UInt64Value
+                 * @static
+                 * @param {google.protobuf.UInt64Value} message UInt64Value
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                UInt64Value.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.defaults)
+                        if ($util.Long) {
+                            var long = new $util.Long(0, 0, true);
+                            object.value = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;
+                        } else
+                            object.value = options.longs === String ? "0" : 0;
+                    if (message.value != null && message.hasOwnProperty("value"))
+                        if (typeof message.value === "number")
+                            object.value = options.longs === String ? String(message.value) : message.value;
+                        else
+                            object.value = options.longs === String ? $util.Long.prototype.toString.call(message.value) : options.longs === Number ? new $util.LongBits(message.value.low >>> 0, message.value.high >>> 0).toNumber(true) : message.value;
+                    return object;
+                };
+    
+                /**
+                 * Converts this UInt64Value to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.UInt64Value
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                UInt64Value.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for UInt64Value
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.UInt64Value
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                UInt64Value.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.UInt64Value";
+                };
+    
+                return UInt64Value;
+            })();
+    
+            protobuf.Int32Value = (function() {
+    
+                /**
+                 * Properties of an Int32Value.
+                 * @memberof google.protobuf
+                 * @interface IInt32Value
+                 * @property {number|null} [value] Int32Value value
+                 */
+    
+                /**
+                 * Constructs a new Int32Value.
+                 * @memberof google.protobuf
+                 * @classdesc Represents an Int32Value.
+                 * @implements IInt32Value
+                 * @constructor
+                 * @param {google.protobuf.IInt32Value=} [properties] Properties to set
+                 */
+                function Int32Value(properties) {
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * Int32Value value.
+                 * @member {number} value
+                 * @memberof google.protobuf.Int32Value
+                 * @instance
+                 */
+                Int32Value.prototype.value = 0;
+    
+                /**
+                 * Creates a new Int32Value instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.Int32Value
+                 * @static
+                 * @param {google.protobuf.IInt32Value=} [properties] Properties to set
+                 * @returns {google.protobuf.Int32Value} Int32Value instance
+                 */
+                Int32Value.create = function create(properties) {
+                    return new Int32Value(properties);
+                };
+    
+                /**
+                 * Encodes the specified Int32Value message. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.Int32Value
+                 * @static
+                 * @param {google.protobuf.IInt32Value} message Int32Value message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                Int32Value.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.value != null && Object.hasOwnProperty.call(message, "value"))
+                        writer.uint32(/* id 1, wireType 0 =*/8).int32(message.value);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified Int32Value message, length delimited. Does not implicitly {@link google.protobuf.Int32Value.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.Int32Value
+                 * @static
+                 * @param {google.protobuf.IInt32Value} message Int32Value message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                Int32Value.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes an Int32Value message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.Int32Value
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.Int32Value} Int32Value
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                Int32Value.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Int32Value();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.value = reader.int32();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes an Int32Value message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.Int32Value
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.Int32Value} Int32Value
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                Int32Value.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies an Int32Value message.
+                 * @function verify
+                 * @memberof google.protobuf.Int32Value
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                Int32Value.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.value != null && message.hasOwnProperty("value"))
+                        if (!$util.isInteger(message.value))
+                            return "value: integer expected";
+                    return null;
+                };
+    
+                /**
+                 * Creates an Int32Value message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.Int32Value
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.Int32Value} Int32Value
+                 */
+                Int32Value.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.Int32Value)
+                        return object;
+                    var message = new $root.google.protobuf.Int32Value();
+                    if (object.value != null)
+                        message.value = object.value | 0;
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from an Int32Value message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.Int32Value
+                 * @static
+                 * @param {google.protobuf.Int32Value} message Int32Value
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                Int32Value.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.defaults)
+                        object.value = 0;
+                    if (message.value != null && message.hasOwnProperty("value"))
+                        object.value = message.value;
+                    return object;
+                };
+    
+                /**
+                 * Converts this Int32Value to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.Int32Value
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                Int32Value.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for Int32Value
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.Int32Value
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                Int32Value.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.Int32Value";
+                };
+    
+                return Int32Value;
+            })();
+    
+            protobuf.UInt32Value = (function() {
+    
+                /**
+                 * Properties of a UInt32Value.
+                 * @memberof google.protobuf
+                 * @interface IUInt32Value
+                 * @property {number|null} [value] UInt32Value value
+                 */
+    
+                /**
+                 * Constructs a new UInt32Value.
+                 * @memberof google.protobuf
+                 * @classdesc Represents a UInt32Value.
+                 * @implements IUInt32Value
+                 * @constructor
+                 * @param {google.protobuf.IUInt32Value=} [properties] Properties to set
+                 */
+                function UInt32Value(properties) {
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * UInt32Value value.
+                 * @member {number} value
+                 * @memberof google.protobuf.UInt32Value
+                 * @instance
+                 */
+                UInt32Value.prototype.value = 0;
+    
+                /**
+                 * Creates a new UInt32Value instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.UInt32Value
+                 * @static
+                 * @param {google.protobuf.IUInt32Value=} [properties] Properties to set
+                 * @returns {google.protobuf.UInt32Value} UInt32Value instance
+                 */
+                UInt32Value.create = function create(properties) {
+                    return new UInt32Value(properties);
+                };
+    
+                /**
+                 * Encodes the specified UInt32Value message. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.UInt32Value
+                 * @static
+                 * @param {google.protobuf.IUInt32Value} message UInt32Value message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                UInt32Value.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.value != null && Object.hasOwnProperty.call(message, "value"))
+                        writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.value);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified UInt32Value message, length delimited. Does not implicitly {@link google.protobuf.UInt32Value.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.UInt32Value
+                 * @static
+                 * @param {google.protobuf.IUInt32Value} message UInt32Value message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                UInt32Value.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a UInt32Value message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.UInt32Value
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.UInt32Value} UInt32Value
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                UInt32Value.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UInt32Value();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.value = reader.uint32();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a UInt32Value message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.UInt32Value
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.UInt32Value} UInt32Value
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                UInt32Value.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a UInt32Value message.
+                 * @function verify
+                 * @memberof google.protobuf.UInt32Value
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                UInt32Value.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.value != null && message.hasOwnProperty("value"))
+                        if (!$util.isInteger(message.value))
+                            return "value: integer expected";
+                    return null;
+                };
+    
+                /**
+                 * Creates a UInt32Value message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.UInt32Value
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.UInt32Value} UInt32Value
+                 */
+                UInt32Value.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.UInt32Value)
+                        return object;
+                    var message = new $root.google.protobuf.UInt32Value();
+                    if (object.value != null)
+                        message.value = object.value >>> 0;
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a UInt32Value message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.UInt32Value
+                 * @static
+                 * @param {google.protobuf.UInt32Value} message UInt32Value
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                UInt32Value.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.defaults)
+                        object.value = 0;
+                    if (message.value != null && message.hasOwnProperty("value"))
+                        object.value = message.value;
+                    return object;
+                };
+    
+                /**
+                 * Converts this UInt32Value to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.UInt32Value
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                UInt32Value.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for UInt32Value
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.UInt32Value
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                UInt32Value.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.UInt32Value";
+                };
+    
+                return UInt32Value;
+            })();
+    
+            protobuf.BoolValue = (function() {
+    
+                /**
+                 * Properties of a BoolValue.
+                 * @memberof google.protobuf
+                 * @interface IBoolValue
+                 * @property {boolean|null} [value] BoolValue value
+                 */
+    
+                /**
+                 * Constructs a new BoolValue.
+                 * @memberof google.protobuf
+                 * @classdesc Represents a BoolValue.
+                 * @implements IBoolValue
+                 * @constructor
+                 * @param {google.protobuf.IBoolValue=} [properties] Properties to set
+                 */
+                function BoolValue(properties) {
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * BoolValue value.
+                 * @member {boolean} value
+                 * @memberof google.protobuf.BoolValue
+                 * @instance
+                 */
+                BoolValue.prototype.value = false;
+    
+                /**
+                 * Creates a new BoolValue instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.BoolValue
+                 * @static
+                 * @param {google.protobuf.IBoolValue=} [properties] Properties to set
+                 * @returns {google.protobuf.BoolValue} BoolValue instance
+                 */
+                BoolValue.create = function create(properties) {
+                    return new BoolValue(properties);
+                };
+    
+                /**
+                 * Encodes the specified BoolValue message. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.BoolValue
+                 * @static
+                 * @param {google.protobuf.IBoolValue} message BoolValue message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                BoolValue.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.value != null && Object.hasOwnProperty.call(message, "value"))
+                        writer.uint32(/* id 1, wireType 0 =*/8).bool(message.value);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified BoolValue message, length delimited. Does not implicitly {@link google.protobuf.BoolValue.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.BoolValue
+                 * @static
+                 * @param {google.protobuf.IBoolValue} message BoolValue message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                BoolValue.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a BoolValue message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.BoolValue
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.BoolValue} BoolValue
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                BoolValue.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.BoolValue();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.value = reader.bool();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a BoolValue message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.BoolValue
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.BoolValue} BoolValue
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                BoolValue.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a BoolValue message.
+                 * @function verify
+                 * @memberof google.protobuf.BoolValue
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                BoolValue.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.value != null && message.hasOwnProperty("value"))
+                        if (typeof message.value !== "boolean")
+                            return "value: boolean expected";
+                    return null;
+                };
+    
+                /**
+                 * Creates a BoolValue message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.BoolValue
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.BoolValue} BoolValue
+                 */
+                BoolValue.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.BoolValue)
+                        return object;
+                    var message = new $root.google.protobuf.BoolValue();
+                    if (object.value != null)
+                        message.value = Boolean(object.value);
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a BoolValue message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.BoolValue
+                 * @static
+                 * @param {google.protobuf.BoolValue} message BoolValue
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                BoolValue.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.defaults)
+                        object.value = false;
+                    if (message.value != null && message.hasOwnProperty("value"))
+                        object.value = message.value;
+                    return object;
+                };
+    
+                /**
+                 * Converts this BoolValue to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.BoolValue
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                BoolValue.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for BoolValue
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.BoolValue
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                BoolValue.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.BoolValue";
+                };
+    
+                return BoolValue;
+            })();
+    
+            protobuf.StringValue = (function() {
+    
+                /**
+                 * Properties of a StringValue.
+                 * @memberof google.protobuf
+                 * @interface IStringValue
+                 * @property {string|null} [value] StringValue value
+                 */
+    
+                /**
+                 * Constructs a new StringValue.
+                 * @memberof google.protobuf
+                 * @classdesc Represents a StringValue.
+                 * @implements IStringValue
+                 * @constructor
+                 * @param {google.protobuf.IStringValue=} [properties] Properties to set
+                 */
+                function StringValue(properties) {
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * StringValue value.
+                 * @member {string} value
+                 * @memberof google.protobuf.StringValue
+                 * @instance
+                 */
+                StringValue.prototype.value = "";
+    
+                /**
+                 * Creates a new StringValue instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.StringValue
+                 * @static
+                 * @param {google.protobuf.IStringValue=} [properties] Properties to set
+                 * @returns {google.protobuf.StringValue} StringValue instance
+                 */
+                StringValue.create = function create(properties) {
+                    return new StringValue(properties);
+                };
+    
+                /**
+                 * Encodes the specified StringValue message. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.StringValue
+                 * @static
+                 * @param {google.protobuf.IStringValue} message StringValue message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                StringValue.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.value != null && Object.hasOwnProperty.call(message, "value"))
+                        writer.uint32(/* id 1, wireType 2 =*/10).string(message.value);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified StringValue message, length delimited. Does not implicitly {@link google.protobuf.StringValue.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.StringValue
+                 * @static
+                 * @param {google.protobuf.IStringValue} message StringValue message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                StringValue.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a StringValue message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.StringValue
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.StringValue} StringValue
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                StringValue.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.StringValue();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.value = reader.string();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a StringValue message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.StringValue
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.StringValue} StringValue
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                StringValue.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a StringValue message.
+                 * @function verify
+                 * @memberof google.protobuf.StringValue
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                StringValue.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.value != null && message.hasOwnProperty("value"))
+                        if (!$util.isString(message.value))
+                            return "value: string expected";
+                    return null;
+                };
+    
+                /**
+                 * Creates a StringValue message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.StringValue
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.StringValue} StringValue
+                 */
+                StringValue.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.StringValue)
+                        return object;
+                    var message = new $root.google.protobuf.StringValue();
+                    if (object.value != null)
+                        message.value = String(object.value);
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a StringValue message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.StringValue
+                 * @static
+                 * @param {google.protobuf.StringValue} message StringValue
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                StringValue.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.defaults)
+                        object.value = "";
+                    if (message.value != null && message.hasOwnProperty("value"))
+                        object.value = message.value;
+                    return object;
+                };
+    
+                /**
+                 * Converts this StringValue to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.StringValue
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                StringValue.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for StringValue
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.StringValue
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                StringValue.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.StringValue";
+                };
+    
+                return StringValue;
+            })();
+    
+            protobuf.BytesValue = (function() {
+    
+                /**
+                 * Properties of a BytesValue.
+                 * @memberof google.protobuf
+                 * @interface IBytesValue
+                 * @property {Uint8Array|null} [value] BytesValue value
+                 */
+    
+                /**
+                 * Constructs a new BytesValue.
+                 * @memberof google.protobuf
+                 * @classdesc Represents a BytesValue.
+                 * @implements IBytesValue
+                 * @constructor
+                 * @param {google.protobuf.IBytesValue=} [properties] Properties to set
+                 */
+                function BytesValue(properties) {
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * BytesValue value.
+                 * @member {Uint8Array} value
+                 * @memberof google.protobuf.BytesValue
+                 * @instance
+                 */
+                BytesValue.prototype.value = $util.newBuffer([]);
+    
+                /**
+                 * Creates a new BytesValue instance using the specified properties.
+                 * @function create
+                 * @memberof google.protobuf.BytesValue
+                 * @static
+                 * @param {google.protobuf.IBytesValue=} [properties] Properties to set
+                 * @returns {google.protobuf.BytesValue} BytesValue instance
+                 */
+                BytesValue.create = function create(properties) {
+                    return new BytesValue(properties);
+                };
+    
+                /**
+                 * Encodes the specified BytesValue message. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.protobuf.BytesValue
+                 * @static
+                 * @param {google.protobuf.IBytesValue} message BytesValue message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                BytesValue.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.value != null && Object.hasOwnProperty.call(message, "value"))
+                        writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.value);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified BytesValue message, length delimited. Does not implicitly {@link google.protobuf.BytesValue.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.protobuf.BytesValue
+                 * @static
+                 * @param {google.protobuf.IBytesValue} message BytesValue message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                BytesValue.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a BytesValue message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.protobuf.BytesValue
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.protobuf.BytesValue} BytesValue
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                BytesValue.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.BytesValue();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.value = reader.bytes();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a BytesValue message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.protobuf.BytesValue
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.protobuf.BytesValue} BytesValue
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                BytesValue.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a BytesValue message.
+                 * @function verify
+                 * @memberof google.protobuf.BytesValue
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                BytesValue.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.value != null && message.hasOwnProperty("value"))
+                        if (!(message.value && typeof message.value.length === "number" || $util.isString(message.value)))
+                            return "value: buffer expected";
+                    return null;
+                };
+    
+                /**
+                 * Creates a BytesValue message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.protobuf.BytesValue
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.protobuf.BytesValue} BytesValue
+                 */
+                BytesValue.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.protobuf.BytesValue)
+                        return object;
+                    var message = new $root.google.protobuf.BytesValue();
+                    if (object.value != null)
+                        if (typeof object.value === "string")
+                            $util.base64.decode(object.value, message.value = $util.newBuffer($util.base64.length(object.value)), 0);
+                        else if (object.value.length >= 0)
+                            message.value = object.value;
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a BytesValue message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.protobuf.BytesValue
+                 * @static
+                 * @param {google.protobuf.BytesValue} message BytesValue
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                BytesValue.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.defaults)
+                        if (options.bytes === String)
+                            object.value = "";
+                        else {
+                            object.value = [];
+                            if (options.bytes !== Array)
+                                object.value = $util.newBuffer(object.value);
+                        }
+                    if (message.value != null && message.hasOwnProperty("value"))
+                        object.value = options.bytes === String ? $util.base64.encode(message.value, 0, message.value.length) : options.bytes === Array ? Array.prototype.slice.call(message.value) : message.value;
+                    return object;
+                };
+    
+                /**
+                 * Converts this BytesValue to JSON.
+                 * @function toJSON
+                 * @memberof google.protobuf.BytesValue
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                BytesValue.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for BytesValue
+                 * @function getTypeUrl
+                 * @memberof google.protobuf.BytesValue
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                BytesValue.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.protobuf.BytesValue";
+                };
+    
+                return BytesValue;
+            })();
+    
+            return protobuf;
+        })();
+    
+        google.type = (function() {
+    
+            /**
+             * Namespace type.
+             * @memberof google
+             * @namespace
+             */
+            var type = {};
+    
+            type.Date = (function() {
+    
+                /**
+                 * Properties of a Date.
+                 * @memberof google.type
+                 * @interface IDate
+                 * @property {number|null} [year] Date year
+                 * @property {number|null} [month] Date month
+                 * @property {number|null} [day] Date day
+                 */
+    
+                /**
+                 * Constructs a new Date.
+                 * @memberof google.type
+                 * @classdesc Represents a Date.
+                 * @implements IDate
+                 * @constructor
+                 * @param {google.type.IDate=} [properties] Properties to set
+                 */
+                function Date(properties) {
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * Date year.
+                 * @member {number} year
+                 * @memberof google.type.Date
+                 * @instance
+                 */
+                Date.prototype.year = 0;
+    
+                /**
+                 * Date month.
+                 * @member {number} month
+                 * @memberof google.type.Date
+                 * @instance
+                 */
+                Date.prototype.month = 0;
+    
+                /**
+                 * Date day.
+                 * @member {number} day
+                 * @memberof google.type.Date
+                 * @instance
+                 */
+                Date.prototype.day = 0;
+    
+                /**
+                 * Creates a new Date instance using the specified properties.
+                 * @function create
+                 * @memberof google.type.Date
+                 * @static
+                 * @param {google.type.IDate=} [properties] Properties to set
+                 * @returns {google.type.Date} Date instance
+                 */
+                Date.create = function create(properties) {
+                    return new Date(properties);
+                };
+    
+                /**
+                 * Encodes the specified Date message. Does not implicitly {@link google.type.Date.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.type.Date
+                 * @static
+                 * @param {google.type.IDate} message Date message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                Date.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.year != null && Object.hasOwnProperty.call(message, "year"))
+                        writer.uint32(/* id 1, wireType 0 =*/8).int32(message.year);
+                    if (message.month != null && Object.hasOwnProperty.call(message, "month"))
+                        writer.uint32(/* id 2, wireType 0 =*/16).int32(message.month);
+                    if (message.day != null && Object.hasOwnProperty.call(message, "day"))
+                        writer.uint32(/* id 3, wireType 0 =*/24).int32(message.day);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified Date message, length delimited. Does not implicitly {@link google.type.Date.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.type.Date
+                 * @static
+                 * @param {google.type.IDate} message Date message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                Date.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a Date message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.type.Date
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.type.Date} Date
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                Date.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.type.Date();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.year = reader.int32();
+                                break;
+                            }
+                        case 2: {
+                                message.month = reader.int32();
+                                break;
+                            }
+                        case 3: {
+                                message.day = reader.int32();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a Date message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.type.Date
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.type.Date} Date
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                Date.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a Date message.
+                 * @function verify
+                 * @memberof google.type.Date
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                Date.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.year != null && message.hasOwnProperty("year"))
+                        if (!$util.isInteger(message.year))
+                            return "year: integer expected";
+                    if (message.month != null && message.hasOwnProperty("month"))
+                        if (!$util.isInteger(message.month))
+                            return "month: integer expected";
+                    if (message.day != null && message.hasOwnProperty("day"))
+                        if (!$util.isInteger(message.day))
+                            return "day: integer expected";
+                    return null;
+                };
+    
+                /**
+                 * Creates a Date message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.type.Date
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.type.Date} Date
+                 */
+                Date.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.type.Date)
+                        return object;
+                    var message = new $root.google.type.Date();
+                    if (object.year != null)
+                        message.year = object.year | 0;
+                    if (object.month != null)
+                        message.month = object.month | 0;
+                    if (object.day != null)
+                        message.day = object.day | 0;
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a Date message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.type.Date
+                 * @static
+                 * @param {google.type.Date} message Date
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                Date.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.defaults) {
+                        object.year = 0;
+                        object.month = 0;
+                        object.day = 0;
+                    }
+                    if (message.year != null && message.hasOwnProperty("year"))
+                        object.year = message.year;
+                    if (message.month != null && message.hasOwnProperty("month"))
+                        object.month = message.month;
+                    if (message.day != null && message.hasOwnProperty("day"))
+                        object.day = message.day;
+                    return object;
+                };
+    
+                /**
+                 * Converts this Date to JSON.
+                 * @function toJSON
+                 * @memberof google.type.Date
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                Date.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for Date
+                 * @function getTypeUrl
+                 * @memberof google.type.Date
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                Date.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.type.Date";
+                };
+    
+                return Date;
+            })();
+    
+            /**
+             * DayOfWeek enum.
+             * @name google.type.DayOfWeek
+             * @enum {number}
+             * @property {number} DAY_OF_WEEK_UNSPECIFIED=0 DAY_OF_WEEK_UNSPECIFIED value
+             * @property {number} MONDAY=1 MONDAY value
+             * @property {number} TUESDAY=2 TUESDAY value
+             * @property {number} WEDNESDAY=3 WEDNESDAY value
+             * @property {number} THURSDAY=4 THURSDAY value
+             * @property {number} FRIDAY=5 FRIDAY value
+             * @property {number} SATURDAY=6 SATURDAY value
+             * @property {number} SUNDAY=7 SUNDAY value
+             */
+            type.DayOfWeek = (function() {
+                var valuesById = {}, values = Object.create(valuesById);
+                values[valuesById[0] = "DAY_OF_WEEK_UNSPECIFIED"] = 0;
+                values[valuesById[1] = "MONDAY"] = 1;
+                values[valuesById[2] = "TUESDAY"] = 2;
+                values[valuesById[3] = "WEDNESDAY"] = 3;
+                values[valuesById[4] = "THURSDAY"] = 4;
+                values[valuesById[5] = "FRIDAY"] = 5;
+                values[valuesById[6] = "SATURDAY"] = 6;
+                values[valuesById[7] = "SUNDAY"] = 7;
+                return values;
+            })();
+    
+            type.TimeOfDay = (function() {
+    
+                /**
+                 * Properties of a TimeOfDay.
+                 * @memberof google.type
+                 * @interface ITimeOfDay
+                 * @property {number|null} [hours] TimeOfDay hours
+                 * @property {number|null} [minutes] TimeOfDay minutes
+                 * @property {number|null} [seconds] TimeOfDay seconds
+                 * @property {number|null} [nanos] TimeOfDay nanos
+                 */
+    
+                /**
+                 * Constructs a new TimeOfDay.
+                 * @memberof google.type
+                 * @classdesc Represents a TimeOfDay.
+                 * @implements ITimeOfDay
+                 * @constructor
+                 * @param {google.type.ITimeOfDay=} [properties] Properties to set
+                 */
+                function TimeOfDay(properties) {
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null)
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * TimeOfDay hours.
+                 * @member {number} hours
+                 * @memberof google.type.TimeOfDay
+                 * @instance
+                 */
+                TimeOfDay.prototype.hours = 0;
+    
+                /**
+                 * TimeOfDay minutes.
+                 * @member {number} minutes
+                 * @memberof google.type.TimeOfDay
+                 * @instance
+                 */
+                TimeOfDay.prototype.minutes = 0;
+    
+                /**
+                 * TimeOfDay seconds.
+                 * @member {number} seconds
+                 * @memberof google.type.TimeOfDay
+                 * @instance
+                 */
+                TimeOfDay.prototype.seconds = 0;
+    
+                /**
+                 * TimeOfDay nanos.
+                 * @member {number} nanos
+                 * @memberof google.type.TimeOfDay
+                 * @instance
+                 */
+                TimeOfDay.prototype.nanos = 0;
+    
+                /**
+                 * Creates a new TimeOfDay instance using the specified properties.
+                 * @function create
+                 * @memberof google.type.TimeOfDay
+                 * @static
+                 * @param {google.type.ITimeOfDay=} [properties] Properties to set
+                 * @returns {google.type.TimeOfDay} TimeOfDay instance
+                 */
+                TimeOfDay.create = function create(properties) {
+                    return new TimeOfDay(properties);
+                };
+    
+                /**
+                 * Encodes the specified TimeOfDay message. Does not implicitly {@link google.type.TimeOfDay.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.type.TimeOfDay
+                 * @static
+                 * @param {google.type.ITimeOfDay} message TimeOfDay message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                TimeOfDay.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.hours != null && Object.hasOwnProperty.call(message, "hours"))
+                        writer.uint32(/* id 1, wireType 0 =*/8).int32(message.hours);
+                    if (message.minutes != null && Object.hasOwnProperty.call(message, "minutes"))
+                        writer.uint32(/* id 2, wireType 0 =*/16).int32(message.minutes);
+                    if (message.seconds != null && Object.hasOwnProperty.call(message, "seconds"))
+                        writer.uint32(/* id 3, wireType 0 =*/24).int32(message.seconds);
+                    if (message.nanos != null && Object.hasOwnProperty.call(message, "nanos"))
+                        writer.uint32(/* id 4, wireType 0 =*/32).int32(message.nanos);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified TimeOfDay message, length delimited. Does not implicitly {@link google.type.TimeOfDay.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.type.TimeOfDay
+                 * @static
+                 * @param {google.type.ITimeOfDay} message TimeOfDay message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                TimeOfDay.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a TimeOfDay message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.type.TimeOfDay
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.type.TimeOfDay} TimeOfDay
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                TimeOfDay.decode = function decode(reader, length, error) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.type.TimeOfDay();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                message.hours = reader.int32();
+                                break;
+                            }
+                        case 2: {
+                                message.minutes = reader.int32();
+                                break;
+                            }
+                        case 3: {
+                                message.seconds = reader.int32();
+                                break;
+                            }
+                        case 4: {
+                                message.nanos = reader.int32();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a TimeOfDay message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.type.TimeOfDay
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.type.TimeOfDay} TimeOfDay
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                TimeOfDay.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a TimeOfDay message.
+                 * @function verify
+                 * @memberof google.type.TimeOfDay
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                TimeOfDay.verify = function verify(message) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (message.hours != null && message.hasOwnProperty("hours"))
+                        if (!$util.isInteger(message.hours))
+                            return "hours: integer expected";
+                    if (message.minutes != null && message.hasOwnProperty("minutes"))
+                        if (!$util.isInteger(message.minutes))
+                            return "minutes: integer expected";
+                    if (message.seconds != null && message.hasOwnProperty("seconds"))
+                        if (!$util.isInteger(message.seconds))
+                            return "seconds: integer expected";
+                    if (message.nanos != null && message.hasOwnProperty("nanos"))
+                        if (!$util.isInteger(message.nanos))
+                            return "nanos: integer expected";
+                    return null;
+                };
+    
+                /**
+                 * Creates a TimeOfDay message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.type.TimeOfDay
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.type.TimeOfDay} TimeOfDay
+                 */
+                TimeOfDay.fromObject = function fromObject(object) {
+                    if (object instanceof $root.google.type.TimeOfDay)
+                        return object;
+                    var message = new $root.google.type.TimeOfDay();
+                    if (object.hours != null)
+                        message.hours = object.hours | 0;
+                    if (object.minutes != null)
+                        message.minutes = object.minutes | 0;
+                    if (object.seconds != null)
+                        message.seconds = object.seconds | 0;
+                    if (object.nanos != null)
+                        message.nanos = object.nanos | 0;
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a TimeOfDay message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.type.TimeOfDay
+                 * @static
+                 * @param {google.type.TimeOfDay} message TimeOfDay
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                TimeOfDay.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.defaults) {
+                        object.hours = 0;
+                        object.minutes = 0;
+                        object.seconds = 0;
+                        object.nanos = 0;
+                    }
+                    if (message.hours != null && message.hasOwnProperty("hours"))
+                        object.hours = message.hours;
+                    if (message.minutes != null && message.hasOwnProperty("minutes"))
+                        object.minutes = message.minutes;
+                    if (message.seconds != null && message.hasOwnProperty("seconds"))
+                        object.seconds = message.seconds;
+                    if (message.nanos != null && message.hasOwnProperty("nanos"))
+                        object.nanos = message.nanos;
+                    return object;
+                };
+    
+                /**
+                 * Converts this TimeOfDay to JSON.
+                 * @function toJSON
+                 * @memberof google.type.TimeOfDay
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                TimeOfDay.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for TimeOfDay
+                 * @function getTypeUrl
+                 * @memberof google.type.TimeOfDay
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                TimeOfDay.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.type.TimeOfDay";
+                };
+    
+                return TimeOfDay;
+            })();
+    
+            return type;
+        })();
+    
+        return google;
+    })();
+
+    return $root;
+});
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/protos.json b/owl-bot-staging/google-cloud-databasecenter/protos/protos.json
new file mode 100644
index 000000000000..f71df905a5bc
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/protos/protos.json
@@ -0,0 +1,3880 @@
+{
+  "nested": {
+    "google": {
+      "nested": {
+        "cloud": {
+          "nested": {
+            "databasecenter": {
+              "nested": {
+                "v1beta": {
+                  "options": {
+                    "csharp_namespace": "Google.Cloud.DatabaseCenter.V1Beta",
+                    "go_package": "cloud.google.com/go/databasecenter/apiv1beta/databasecenterpb;databasecenterpb",
+                    "java_multiple_files": true,
+                    "java_outer_classname": "SuspensionReasonProto",
+                    "java_package": "com.google.cloud.databasecenter.v1beta",
+                    "php_namespace": "Google\\Cloud\\DatabaseCenter\\V1beta",
+                    "ruby_package": "Google::Cloud::DatabaseCenter::V1beta"
+                  },
+                  "nested": {
+                    "Affiliation": {
+                      "fields": {
+                        "resourceId": {
+                          "type": "string",
+                          "id": 1,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "fullResourceName": {
+                          "type": "string",
+                          "id": 2,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "lineages": {
+                          "rule": "repeated",
+                          "type": "Lineage",
+                          "id": 3,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        }
+                      },
+                      "nested": {
+                        "Lineage": {
+                          "fields": {
+                            "sourceFqn": {
+                              "type": "string",
+                              "id": 1,
+                              "options": {
+                                "(google.api.field_behavior)": "OPTIONAL"
+                              }
+                            },
+                            "targetFqn": {
+                              "type": "string",
+                              "id": 2,
+                              "options": {
+                                "(google.api.field_behavior)": "OPTIONAL"
+                              }
+                            },
+                            "processFqn": {
+                              "type": "string",
+                              "id": 3,
+                              "options": {
+                                "(google.api.field_behavior)": "OPTIONAL"
+                              }
+                            },
+                            "processType": {
+                              "type": "ProcessType",
+                              "id": 4,
+                              "options": {
+                                "(google.api.field_behavior)": "OPTIONAL"
+                              }
+                            }
+                          }
+                        },
+                        "ProcessType": {
+                          "values": {
+                            "PROCESS_TYPE_UNSPECIFIED": 0,
+                            "COMPOSER": 1,
+                            "DATASTREAM": 2,
+                            "DATAFLOW": 3,
+                            "BIGQUERY": 4,
+                            "DATA_FUSION": 5,
+                            "DATAPROC": 6
+                          }
+                        }
+                      }
+                    },
+                    "MachineConfig": {
+                      "oneofs": {
+                        "_shardCount": {
+                          "oneof": [
+                            "shardCount"
+                          ]
+                        },
+                        "_vcpuCount": {
+                          "oneof": [
+                            "vcpuCount"
+                          ]
+                        },
+                        "_baselineSlotCount": {
+                          "oneof": [
+                            "baselineSlotCount"
+                          ]
+                        },
+                        "_maxReservationSlotCount": {
+                          "oneof": [
+                            "maxReservationSlotCount"
+                          ]
+                        }
+                      },
+                      "fields": {
+                        "memorySizeBytes": {
+                          "type": "int64",
+                          "id": 2
+                        },
+                        "shardCount": {
+                          "type": "int32",
+                          "id": 3,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL",
+                            "proto3_optional": true
+                          }
+                        },
+                        "vcpuCount": {
+                          "type": "double",
+                          "id": 4,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL",
+                            "proto3_optional": true
+                          }
+                        },
+                        "baselineSlotCount": {
+                          "type": "int64",
+                          "id": 5,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL",
+                            "proto3_optional": true
+                          }
+                        },
+                        "maxReservationSlotCount": {
+                          "type": "int64",
+                          "id": 6,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL",
+                            "proto3_optional": true
+                          }
+                        }
+                      }
+                    },
+                    "Phase": {
+                      "values": {
+                        "PHASE_UNSPECIFIED": 0,
+                        "PHASE_WEEK1": 1,
+                        "PHASE_WEEK2": 2,
+                        "PHASE_WEEK5": 3,
+                        "PHASE_ANY": 4
+                      }
+                    },
+                    "MaintenanceState": {
+                      "values": {
+                        "MAINTENANCE_STATE_UNSPECIFIED": 0,
+                        "MAINTENANCE_STATE_SCHEDULED": 1,
+                        "MAINTENANCE_STATE_IN_PROGRESS": 2,
+                        "MAINTENANCE_STATE_COMPLETED": 3,
+                        "MAINTENANCE_STATE_FAILED": 4
+                      }
+                    },
+                    "PossibleFailureReason": {
+                      "values": {
+                        "POSSIBLE_FAILURE_REASON_UNSPECIFIED": 0,
+                        "POSSIBLE_FAILURE_REASON_DENY_POLICY_CONFLICT": 1,
+                        "POSSIBLE_FAILURE_REASON_INSTANCE_IN_STOPPED_STATE": 2
+                      }
+                    },
+                    "ResourceMaintenanceSchedule": {
+                      "fields": {
+                        "startTime": {
+                          "type": "google.type.TimeOfDay",
+                          "id": 1,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "day": {
+                          "type": "google.type.DayOfWeek",
+                          "id": 2,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "phase": {
+                          "type": "Phase",
+                          "id": 3,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        }
+                      }
+                    },
+                    "ResourceMaintenanceDenySchedule": {
+                      "fields": {
+                        "startDate": {
+                          "type": "google.type.Date",
+                          "id": 1,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "endDate": {
+                          "type": "google.type.Date",
+                          "id": 2,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "time": {
+                          "type": "google.type.TimeOfDay",
+                          "id": 3,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        }
+                      }
+                    },
+                    "UpcomingMaintenance": {
+                      "fields": {
+                        "startTime": {
+                          "type": "google.protobuf.Timestamp",
+                          "id": 1,
+                          "options": {
+                            "(google.api.field_behavior)": "OUTPUT_ONLY"
+                          }
+                        },
+                        "endTime": {
+                          "type": "google.protobuf.Timestamp",
+                          "id": 2,
+                          "options": {
+                            "(google.api.field_behavior)": "OUTPUT_ONLY"
+                          }
+                        }
+                      }
+                    },
+                    "MaintenanceInfo": {
+                      "fields": {
+                        "maintenanceSchedule": {
+                          "type": "ResourceMaintenanceSchedule",
+                          "id": 1,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "denyMaintenanceSchedules": {
+                          "rule": "repeated",
+                          "type": "ResourceMaintenanceDenySchedule",
+                          "id": 2,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "maintenanceVersion": {
+                          "type": "string",
+                          "id": 3,
+                          "options": {
+                            "(google.api.field_behavior)": "OUTPUT_ONLY"
+                          }
+                        },
+                        "currentVersionReleaseDate": {
+                          "type": "google.type.Date",
+                          "id": 4,
+                          "options": {
+                            "(google.api.field_behavior)": "OUTPUT_ONLY"
+                          }
+                        },
+                        "upcomingMaintenance": {
+                          "type": "UpcomingMaintenance",
+                          "id": 5,
+                          "options": {
+                            "(google.api.field_behavior)": "OUTPUT_ONLY"
+                          }
+                        },
+                        "state": {
+                          "type": "MaintenanceState",
+                          "id": 6,
+                          "options": {
+                            "(google.api.field_behavior)": "OUTPUT_ONLY"
+                          }
+                        },
+                        "possibleFailureReasons": {
+                          "rule": "repeated",
+                          "type": "PossibleFailureReason",
+                          "id": 7,
+                          "options": {
+                            "(google.api.field_behavior)": "OUTPUT_ONLY"
+                          }
+                        },
+                        "previousMaintenanceVersion": {
+                          "type": "string",
+                          "id": 8,
+                          "options": {
+                            "(google.api.field_behavior)": "OUTPUT_ONLY"
+                          }
+                        }
+                      }
+                    },
+                    "Metrics": {
+                      "oneofs": {
+                        "_p99CpuUtilization": {
+                          "oneof": [
+                            "p99CpuUtilization"
+                          ]
+                        },
+                        "_p95CpuUtilization": {
+                          "oneof": [
+                            "p95CpuUtilization"
+                          ]
+                        },
+                        "_currentStorageUsedBytes": {
+                          "oneof": [
+                            "currentStorageUsedBytes"
+                          ]
+                        },
+                        "_peakStorageUtilization": {
+                          "oneof": [
+                            "peakStorageUtilization"
+                          ]
+                        },
+                        "_peakMemoryUtilization": {
+                          "oneof": [
+                            "peakMemoryUtilization"
+                          ]
+                        },
+                        "_peakNumberConnections": {
+                          "oneof": [
+                            "peakNumberConnections"
+                          ]
+                        },
+                        "_nodeCount": {
+                          "oneof": [
+                            "nodeCount"
+                          ]
+                        },
+                        "_processingUnitCount": {
+                          "oneof": [
+                            "processingUnitCount"
+                          ]
+                        },
+                        "_currentMemoryUsedBytes": {
+                          "oneof": [
+                            "currentMemoryUsedBytes"
+                          ]
+                        }
+                      },
+                      "fields": {
+                        "p99CpuUtilization": {
+                          "type": "MetricData",
+                          "id": 1,
+                          "options": {
+                            "proto3_optional": true
+                          }
+                        },
+                        "p95CpuUtilization": {
+                          "type": "MetricData",
+                          "id": 2,
+                          "options": {
+                            "proto3_optional": true
+                          }
+                        },
+                        "currentStorageUsedBytes": {
+                          "type": "MetricData",
+                          "id": 3,
+                          "options": {
+                            "proto3_optional": true
+                          }
+                        },
+                        "peakStorageUtilization": {
+                          "type": "MetricData",
+                          "id": 4,
+                          "options": {
+                            "proto3_optional": true
+                          }
+                        },
+                        "peakMemoryUtilization": {
+                          "type": "MetricData",
+                          "id": 5,
+                          "options": {
+                            "proto3_optional": true
+                          }
+                        },
+                        "peakNumberConnections": {
+                          "type": "MetricData",
+                          "id": 6,
+                          "options": {
+                            "proto3_optional": true
+                          }
+                        },
+                        "nodeCount": {
+                          "type": "MetricData",
+                          "id": 7,
+                          "options": {
+                            "proto3_optional": true
+                          }
+                        },
+                        "processingUnitCount": {
+                          "type": "MetricData",
+                          "id": 8,
+                          "options": {
+                            "proto3_optional": true
+                          }
+                        },
+                        "currentMemoryUsedBytes": {
+                          "type": "MetricData",
+                          "id": 9,
+                          "options": {
+                            "proto3_optional": true
+                          }
+                        }
+                      }
+                    },
+                    "MetricData": {
+                      "fields": {
+                        "value": {
+                          "type": "TypedValue",
+                          "id": 1
+                        },
+                        "observationTime": {
+                          "type": "google.protobuf.Timestamp",
+                          "id": 2
+                        }
+                      }
+                    },
+                    "TypedValue": {
+                      "oneofs": {
+                        "value": {
+                          "oneof": [
+                            "doubleValue",
+                            "int64Value"
+                          ]
+                        }
+                      },
+                      "fields": {
+                        "doubleValue": {
+                          "type": "double",
+                          "id": 1
+                        },
+                        "int64Value": {
+                          "type": "int64",
+                          "id": 2
+                        }
+                      }
+                    },
+                    "OperationErrorType": {
+                      "values": {
+                        "OPERATION_ERROR_TYPE_UNSPECIFIED": 0,
+                        "KMS_KEY_ERROR": 1,
+                        "DATABASE_ERROR": 2,
+                        "STOCKOUT_ERROR": 3,
+                        "CANCELLATION_ERROR": 4,
+                        "SQLSERVER_ERROR": 5,
+                        "INTERNAL_ERROR": 6
+                      }
+                    },
+                    "Engine": {
+                      "values": {
+                        "ENGINE_UNSPECIFIED": 0,
+                        "ENGINE_MYSQL": 1,
+                        "ENGINE_POSTGRES": 2,
+                        "ENGINE_SQL_SERVER": 3,
+                        "ENGINE_NATIVE": 4,
+                        "ENGINE_MEMORYSTORE_FOR_REDIS": 8,
+                        "ENGINE_MEMORYSTORE_FOR_REDIS_CLUSTER": 9,
+                        "ENGINE_FIRESTORE_WITH_NATIVE_MODE": 10,
+                        "ENGINE_FIRESTORE_WITH_DATASTORE_MODE": 11,
+                        "ENGINE_EXADATA_ORACLE": 12,
+                        "ENGINE_ADB_SERVERLESS_ORACLE": 13,
+                        "ENGINE_FIRESTORE_WITH_MONGODB_COMPATIBILITY_MODE": 14,
+                        "ENGINE_OTHER": 6
+                      }
+                    },
+                    "ProductType": {
+                      "values": {
+                        "PRODUCT_TYPE_UNSPECIFIED": 0,
+                        "PRODUCT_TYPE_CLOUD_SQL": 1,
+                        "PRODUCT_TYPE_ALLOYDB": 2,
+                        "PRODUCT_TYPE_SPANNER": 3,
+                        "PRODUCT_TYPE_BIGTABLE": 6,
+                        "PRODUCT_TYPE_MEMORYSTORE": 7,
+                        "PRODUCT_TYPE_FIRESTORE": 8,
+                        "PRODUCT_TYPE_COMPUTE_ENGINE": 9,
+                        "PRODUCT_TYPE_ORACLE_ON_GCP": 10,
+                        "PRODUCT_TYPE_BIGQUERY": 11,
+                        "PRODUCT_TYPE_OTHER": 5
+                      }
+                    },
+                    "Product": {
+                      "fields": {
+                        "type": {
+                          "type": "ProductType",
+                          "id": 1,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "engine": {
+                          "type": "Engine",
+                          "id": 2,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "version": {
+                          "type": "string",
+                          "id": 3,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "minorVersion": {
+                          "type": "string",
+                          "id": 4,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        }
+                      }
+                    },
+                    "DatabaseCenter": {
+                      "options": {
+                        "(google.api.default_host)": "databasecenter.googleapis.com",
+                        "(google.api.oauth_scopes)": "https://www.googleapis.com/auth/cloud-platform"
+                      },
+                      "methods": {
+                        "QueryProducts": {
+                          "requestType": "QueryProductsRequest",
+                          "responseType": "QueryProductsResponse",
+                          "options": {
+                            "(google.api.http).get": "/v1beta:queryProducts"
+                          },
+                          "parsedOptions": [
+                            {
+                              "(google.api.http)": {
+                                "get": "/v1beta:queryProducts"
+                              }
+                            }
+                          ]
+                        },
+                        "AggregateFleet": {
+                          "requestType": "AggregateFleetRequest",
+                          "responseType": "AggregateFleetResponse",
+                          "options": {
+                            "(google.api.http).get": "/v1beta:aggregateFleet"
+                          },
+                          "parsedOptions": [
+                            {
+                              "(google.api.http)": {
+                                "get": "/v1beta:aggregateFleet"
+                              }
+                            }
+                          ]
+                        },
+                        "QueryDatabaseResourceGroups": {
+                          "requestType": "QueryDatabaseResourceGroupsRequest",
+                          "responseType": "QueryDatabaseResourceGroupsResponse",
+                          "options": {
+                            "(google.api.http).post": "/v1beta:queryDatabaseResourceGroups",
+                            "(google.api.http).body": "*"
+                          },
+                          "parsedOptions": [
+                            {
+                              "(google.api.http)": {
+                                "post": "/v1beta:queryDatabaseResourceGroups",
+                                "body": "*"
+                              }
+                            }
+                          ]
+                        },
+                        "AggregateIssueStats": {
+                          "requestType": "AggregateIssueStatsRequest",
+                          "responseType": "AggregateIssueStatsResponse",
+                          "options": {
+                            "(google.api.http).post": "/v1beta:aggregateIssueStats",
+                            "(google.api.http).body": "*"
+                          },
+                          "parsedOptions": [
+                            {
+                              "(google.api.http)": {
+                                "post": "/v1beta:aggregateIssueStats",
+                                "body": "*"
+                              }
+                            }
+                          ]
+                        },
+                        "QueryIssues": {
+                          "requestType": "QueryIssuesRequest",
+                          "responseType": "QueryIssuesResponse",
+                          "options": {
+                            "(google.api.http).post": "/v1beta:queryIssues",
+                            "(google.api.http).body": "*",
+                            "(google.api.method_signature)": "parent"
+                          },
+                          "parsedOptions": [
+                            {
+                              "(google.api.http)": {
+                                "post": "/v1beta:queryIssues",
+                                "body": "*"
+                              }
+                            },
+                            {
+                              "(google.api.method_signature)": "parent"
+                            }
+                          ]
+                        }
+                      }
+                    },
+                    "Edition": {
+                      "values": {
+                        "EDITION_UNSPECIFIED": 0,
+                        "EDITION_ENTERPRISE": 1,
+                        "EDITION_ENTERPRISE_PLUS": 2,
+                        "EDITION_STANDARD": 3
+                      }
+                    },
+                    "SubResourceType": {
+                      "values": {
+                        "SUB_RESOURCE_TYPE_UNSPECIFIED": 0,
+                        "SUB_RESOURCE_TYPE_PRIMARY": 1,
+                        "SUB_RESOURCE_TYPE_SECONDARY": 2,
+                        "SUB_RESOURCE_TYPE_READ_REPLICA": 3,
+                        "SUB_RESOURCE_TYPE_EXTERNAL_PRIMARY": 5,
+                        "SUB_RESOURCE_TYPE_READ_POOL": 6,
+                        "SUB_RESOURCE_TYPE_RESERVATION": 7,
+                        "SUB_RESOURCE_TYPE_DATASET": 8,
+                        "SUB_RESOURCE_TYPE_OTHER": 4
+                      }
+                    },
+                    "ManagementType": {
+                      "values": {
+                        "MANAGEMENT_TYPE_UNSPECIFIED": 0,
+                        "MANAGEMENT_TYPE_GCP_MANAGED": 1,
+                        "MANAGEMENT_TYPE_SELF_MANAGED": 2
+                      }
+                    },
+                    "ResourceCategory": {
+                      "values": {
+                        "RESOURCE_CATEGORY_UNSPECIFIED": 0,
+                        "INSTANCE": 1,
+                        "CLUSTER": 2,
+                        "DATABASE": 3,
+                        "DATASET": 4,
+                        "RESERVATION": 5
+                      }
+                    },
+                    "QueryProductsRequest": {
+                      "fields": {
+                        "parent": {
+                          "type": "string",
+                          "id": 3,
+                          "options": {
+                            "(google.api.field_behavior)": "REQUIRED"
+                          }
+                        },
+                        "pageSize": {
+                          "type": "int32",
+                          "id": 1,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "pageToken": {
+                          "type": "string",
+                          "id": 2,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        }
+                      }
+                    },
+                    "QueryProductsResponse": {
+                      "fields": {
+                        "products": {
+                          "rule": "repeated",
+                          "type": "Product",
+                          "id": 1
+                        },
+                        "nextPageToken": {
+                          "type": "string",
+                          "id": 2
+                        },
+                        "unreachable": {
+                          "rule": "repeated",
+                          "type": "string",
+                          "id": 3,
+                          "options": {
+                            "(google.api.field_behavior)": "UNORDERED_LIST"
+                          }
+                        }
+                      }
+                    },
+                    "QueryDatabaseResourceGroupsRequest": {
+                      "fields": {
+                        "parent": {
+                          "type": "string",
+                          "id": 1,
+                          "options": {
+                            "(google.api.field_behavior)": "REQUIRED"
+                          }
+                        },
+                        "filter": {
+                          "type": "string",
+                          "id": 2,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "signalTypeGroups": {
+                          "rule": "repeated",
+                          "type": "SignalTypeGroup",
+                          "id": 3,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "signalFilters": {
+                          "rule": "repeated",
+                          "type": "SignalFilter",
+                          "id": 4,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "orderBy": {
+                          "type": "string",
+                          "id": 5,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "pageSize": {
+                          "type": "int32",
+                          "id": 6,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "pageToken": {
+                          "type": "string",
+                          "id": 7,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        }
+                      }
+                    },
+                    "QueryDatabaseResourceGroupsResponse": {
+                      "fields": {
+                        "resourceGroups": {
+                          "rule": "repeated",
+                          "type": "DatabaseResourceGroup",
+                          "id": 1
+                        },
+                        "nextPageToken": {
+                          "type": "string",
+                          "id": 2
+                        },
+                        "unreachable": {
+                          "rule": "repeated",
+                          "type": "string",
+                          "id": 3,
+                          "options": {
+                            "(google.api.field_behavior)": "UNORDERED_LIST"
+                          }
+                        }
+                      }
+                    },
+                    "DatabaseResourceGroup": {
+                      "fields": {
+                        "rootResources": {
+                          "rule": "repeated",
+                          "type": "DatabaseResource",
+                          "id": 1
+                        },
+                        "signalGroups": {
+                          "rule": "repeated",
+                          "type": "IssueCount",
+                          "id": 2
+                        }
+                      }
+                    },
+                    "DatabaseResource": {
+                      "fields": {
+                        "childResources": {
+                          "rule": "repeated",
+                          "type": "DatabaseResource",
+                          "id": 1
+                        },
+                        "fullResourceName": {
+                          "type": "string",
+                          "id": 3
+                        },
+                        "container": {
+                          "type": "string",
+                          "id": 4
+                        },
+                        "product": {
+                          "type": "Product",
+                          "id": 5
+                        },
+                        "location": {
+                          "type": "string",
+                          "id": 6
+                        },
+                        "labels": {
+                          "rule": "repeated",
+                          "type": "Label",
+                          "id": 7
+                        },
+                        "tags": {
+                          "rule": "repeated",
+                          "type": "Tag",
+                          "id": 16
+                        },
+                        "resourceType": {
+                          "type": "string",
+                          "id": 8
+                        },
+                        "subResourceType": {
+                          "type": "SubResourceType",
+                          "id": 9
+                        },
+                        "machineConfig": {
+                          "type": "MachineConfig",
+                          "id": 12
+                        },
+                        "signalGroups": {
+                          "rule": "repeated",
+                          "type": "SignalGroup",
+                          "id": 10
+                        },
+                        "metrics": {
+                          "type": "Metrics",
+                          "id": 13
+                        },
+                        "resourceCategory": {
+                          "type": "ResourceCategory",
+                          "id": 14
+                        },
+                        "resourceName": {
+                          "type": "string",
+                          "id": 15
+                        },
+                        "backupdrConfig": {
+                          "type": "BackupDRConfig",
+                          "id": 17,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "edition": {
+                          "type": "Edition",
+                          "id": 18
+                        },
+                        "maintenanceInfo": {
+                          "type": "MaintenanceInfo",
+                          "id": 19,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "affiliations": {
+                          "rule": "repeated",
+                          "type": "Affiliation",
+                          "id": 20,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        }
+                      }
+                    },
+                    "AggregateIssueStatsRequest": {
+                      "oneofs": {
+                        "_baselineDate": {
+                          "oneof": [
+                            "baselineDate"
+                          ]
+                        }
+                      },
+                      "fields": {
+                        "parent": {
+                          "type": "string",
+                          "id": 1,
+                          "options": {
+                            "(google.api.field_behavior)": "REQUIRED"
+                          }
+                        },
+                        "filter": {
+                          "type": "string",
+                          "id": 2,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "signalTypeGroups": {
+                          "rule": "repeated",
+                          "type": "SignalTypeGroup",
+                          "id": 3,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "baselineDate": {
+                          "type": "google.type.Date",
+                          "id": 4,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL",
+                            "proto3_optional": true
+                          }
+                        }
+                      }
+                    },
+                    "AggregateIssueStatsResponse": {
+                      "fields": {
+                        "issueGroupStats": {
+                          "rule": "repeated",
+                          "type": "IssueGroupStats",
+                          "id": 1
+                        },
+                        "totalResourcesCount": {
+                          "type": "int32",
+                          "id": 2
+                        },
+                        "totalResourceGroupsCount": {
+                          "type": "int32",
+                          "id": 3
+                        },
+                        "unreachable": {
+                          "rule": "repeated",
+                          "type": "string",
+                          "id": 4,
+                          "options": {
+                            "(google.api.field_behavior)": "UNORDERED_LIST"
+                          }
+                        }
+                      }
+                    },
+                    "IssueGroupStats": {
+                      "fields": {
+                        "displayName": {
+                          "type": "string",
+                          "id": 1
+                        },
+                        "resourceGroupsCount": {
+                          "type": "int32",
+                          "id": 2
+                        },
+                        "resourcesCount": {
+                          "type": "int32",
+                          "id": 3
+                        },
+                        "healthyResourceGroupsCount": {
+                          "type": "int32",
+                          "id": 4
+                        },
+                        "healthyResourcesCount": {
+                          "type": "int32",
+                          "id": 5
+                        },
+                        "issueStats": {
+                          "rule": "repeated",
+                          "type": "IssueStats",
+                          "id": 6
+                        }
+                      }
+                    },
+                    "IssueStats": {
+                      "oneofs": {
+                        "_deltaDetails": {
+                          "oneof": [
+                            "deltaDetails"
+                          ]
+                        },
+                        "_issueSeverity": {
+                          "oneof": [
+                            "issueSeverity"
+                          ]
+                        }
+                      },
+                      "fields": {
+                        "signalType": {
+                          "type": "SignalType",
+                          "id": 1
+                        },
+                        "resourceCount": {
+                          "type": "int32",
+                          "id": 2
+                        },
+                        "deltaDetails": {
+                          "type": "DeltaDetails",
+                          "id": 3,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL",
+                            "proto3_optional": true
+                          }
+                        },
+                        "issueSeverity": {
+                          "type": "IssueSeverity",
+                          "id": 4,
+                          "options": {
+                            "proto3_optional": true
+                          }
+                        }
+                      }
+                    },
+                    "Label": {
+                      "fields": {
+                        "key": {
+                          "type": "string",
+                          "id": 1
+                        },
+                        "value": {
+                          "type": "string",
+                          "id": 2
+                        },
+                        "source": {
+                          "type": "string",
+                          "id": 3
+                        }
+                      }
+                    },
+                    "AggregateFleetRequest": {
+                      "oneofs": {
+                        "_baselineDate": {
+                          "oneof": [
+                            "baselineDate"
+                          ]
+                        }
+                      },
+                      "fields": {
+                        "parent": {
+                          "type": "string",
+                          "id": 1,
+                          "options": {
+                            "(google.api.field_behavior)": "REQUIRED"
+                          }
+                        },
+                        "filter": {
+                          "type": "string",
+                          "id": 2,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "groupBy": {
+                          "type": "string",
+                          "id": 3,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "orderBy": {
+                          "type": "string",
+                          "id": 4,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "pageSize": {
+                          "type": "int32",
+                          "id": 5,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "pageToken": {
+                          "type": "string",
+                          "id": 6,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "baselineDate": {
+                          "type": "google.type.Date",
+                          "id": 7,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL",
+                            "proto3_optional": true
+                          }
+                        }
+                      }
+                    },
+                    "AggregateFleetResponse": {
+                      "fields": {
+                        "rows": {
+                          "rule": "repeated",
+                          "type": "AggregateFleetRow",
+                          "id": 1
+                        },
+                        "resourceGroupsTotalCount": {
+                          "type": "int32",
+                          "id": 2
+                        },
+                        "resourceTotalCount": {
+                          "type": "int32",
+                          "id": 3
+                        },
+                        "nextPageToken": {
+                          "type": "string",
+                          "id": 4
+                        },
+                        "unreachable": {
+                          "rule": "repeated",
+                          "type": "string",
+                          "id": 5,
+                          "options": {
+                            "(google.api.field_behavior)": "UNORDERED_LIST"
+                          }
+                        }
+                      }
+                    },
+                    "AggregateFleetRow": {
+                      "oneofs": {
+                        "_deltaDetails": {
+                          "oneof": [
+                            "deltaDetails"
+                          ]
+                        }
+                      },
+                      "fields": {
+                        "dimension": {
+                          "rule": "repeated",
+                          "type": "Dimension",
+                          "id": 1
+                        },
+                        "resourceGroupsCount": {
+                          "type": "int32",
+                          "id": 2
+                        },
+                        "resourcesCount": {
+                          "type": "int32",
+                          "id": 3
+                        },
+                        "deltaDetails": {
+                          "type": "DeltaDetails",
+                          "id": 4,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL",
+                            "proto3_optional": true
+                          }
+                        }
+                      }
+                    },
+                    "Dimension": {
+                      "oneofs": {
+                        "dimension": {
+                          "oneof": [
+                            "container",
+                            "productType",
+                            "productEngine",
+                            "productVersion",
+                            "location",
+                            "resourceType",
+                            "subResourceType",
+                            "resourceCategory",
+                            "managementType",
+                            "edition",
+                            "tagKey",
+                            "tagValue",
+                            "tagSource",
+                            "tagInherited",
+                            "labelKey",
+                            "labelValue",
+                            "labelSource",
+                            "hasMaintenanceSchedule",
+                            "hasDenyMaintenanceSchedules"
+                          ]
+                        }
+                      },
+                      "fields": {
+                        "container": {
+                          "type": "string",
+                          "id": 2
+                        },
+                        "productType": {
+                          "type": "ProductType",
+                          "id": 3
+                        },
+                        "productEngine": {
+                          "type": "Engine",
+                          "id": 4
+                        },
+                        "productVersion": {
+                          "type": "string",
+                          "id": 5
+                        },
+                        "location": {
+                          "type": "string",
+                          "id": 6
+                        },
+                        "resourceType": {
+                          "type": "string",
+                          "id": 7
+                        },
+                        "subResourceType": {
+                          "type": "SubResourceType",
+                          "id": 8
+                        },
+                        "resourceCategory": {
+                          "type": "ResourceCategory",
+                          "id": 9
+                        },
+                        "managementType": {
+                          "type": "ManagementType",
+                          "id": 10
+                        },
+                        "edition": {
+                          "type": "Edition",
+                          "id": 11
+                        },
+                        "tagKey": {
+                          "type": "string",
+                          "id": 12
+                        },
+                        "tagValue": {
+                          "type": "string",
+                          "id": 13
+                        },
+                        "tagSource": {
+                          "type": "string",
+                          "id": 14
+                        },
+                        "tagInherited": {
+                          "type": "bool",
+                          "id": 15
+                        },
+                        "labelKey": {
+                          "type": "string",
+                          "id": 16
+                        },
+                        "labelValue": {
+                          "type": "string",
+                          "id": 17
+                        },
+                        "labelSource": {
+                          "type": "string",
+                          "id": 18
+                        },
+                        "hasMaintenanceSchedule": {
+                          "type": "bool",
+                          "id": 19
+                        },
+                        "hasDenyMaintenanceSchedules": {
+                          "type": "bool",
+                          "id": 20
+                        }
+                      }
+                    },
+                    "BackupDRConfig": {
+                      "oneofs": {
+                        "_backupdrManaged": {
+                          "oneof": [
+                            "backupdrManaged"
+                          ]
+                        }
+                      },
+                      "fields": {
+                        "backupdrManaged": {
+                          "type": "bool",
+                          "id": 1,
+                          "options": {
+                            "proto3_optional": true
+                          }
+                        }
+                      }
+                    },
+                    "QueryIssuesRequest": {
+                      "fields": {
+                        "parent": {
+                          "type": "string",
+                          "id": 1,
+                          "options": {
+                            "(google.api.field_behavior)": "REQUIRED"
+                          }
+                        },
+                        "filter": {
+                          "type": "string",
+                          "id": 2,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "signalProductsFilters": {
+                          "rule": "repeated",
+                          "type": "SignalProductsFilters",
+                          "id": 3,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "orderBy": {
+                          "type": "string",
+                          "id": 4,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "pageSize": {
+                          "type": "int32",
+                          "id": 5,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "pageToken": {
+                          "type": "string",
+                          "id": 6,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        }
+                      }
+                    },
+                    "SignalProductsFilters": {
+                      "fields": {
+                        "signalType": {
+                          "type": "SignalType",
+                          "id": 1,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "products": {
+                          "rule": "repeated",
+                          "type": "Product",
+                          "id": 2,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        }
+                      }
+                    },
+                    "QueryIssuesResponse": {
+                      "fields": {
+                        "resourceIssues": {
+                          "rule": "repeated",
+                          "type": "DatabaseResourceIssue",
+                          "id": 1
+                        },
+                        "nextPageToken": {
+                          "type": "string",
+                          "id": 2
+                        },
+                        "unreachable": {
+                          "rule": "repeated",
+                          "type": "string",
+                          "id": 3,
+                          "options": {
+                            "(google.api.field_behavior)": "UNORDERED_LIST"
+                          }
+                        }
+                      }
+                    },
+                    "DatabaseResourceIssue": {
+                      "fields": {
+                        "signal": {
+                          "type": "Signal",
+                          "id": 1
+                        },
+                        "resource": {
+                          "type": "DatabaseResource",
+                          "id": 2
+                        }
+                      }
+                    },
+                    "Tag": {
+                      "fields": {
+                        "key": {
+                          "type": "string",
+                          "id": 1
+                        },
+                        "value": {
+                          "type": "string",
+                          "id": 2
+                        },
+                        "source": {
+                          "type": "string",
+                          "id": 3
+                        },
+                        "inherited": {
+                          "type": "bool",
+                          "id": 4
+                        }
+                      }
+                    },
+                    "ResourceDetails": {
+                      "fields": {
+                        "fullResourceName": {
+                          "type": "string",
+                          "id": 1
+                        },
+                        "container": {
+                          "type": "string",
+                          "id": 2
+                        },
+                        "product": {
+                          "type": "Product",
+                          "id": 3
+                        },
+                        "location": {
+                          "type": "string",
+                          "id": 4
+                        }
+                      }
+                    },
+                    "DeltaDetails": {
+                      "fields": {
+                        "increasedResources": {
+                          "rule": "repeated",
+                          "type": "ResourceDetails",
+                          "id": 1
+                        },
+                        "decreasedResources": {
+                          "rule": "repeated",
+                          "type": "ResourceDetails",
+                          "id": 2
+                        }
+                      }
+                    },
+                    "SignalStatus": {
+                      "values": {
+                        "SIGNAL_STATUS_UNSPECIFIED": 0,
+                        "SIGNAL_STATUS_NOT_APPLICABLE": 1,
+                        "SIGNAL_STATUS_OK": 2,
+                        "SIGNAL_STATUS_ISSUE": 3,
+                        "SIGNAL_STATUS_NOT_ENABLED": 4
+                      }
+                    },
+                    "SignalSource": {
+                      "values": {
+                        "SIGNAL_SOURCE_UNSPECIFIED": 0,
+                        "SIGNAL_SOURCE_RESOURCE_METADATA": 1,
+                        "SIGNAL_SOURCE_SECURITY_FINDINGS": 2,
+                        "SIGNAL_SOURCE_RECOMMENDER": 3,
+                        "SIGNAL_SOURCE_MODERN_OBSERVABILITY": 4
+                      }
+                    },
+                    "IssueSeverity": {
+                      "values": {
+                        "ISSUE_SEVERITY_UNSPECIFIED": 0,
+                        "ISSUE_SEVERITY_LOW": 1,
+                        "ISSUE_SEVERITY_MEDIUM": 2,
+                        "ISSUE_SEVERITY_HIGH": 3,
+                        "ISSUE_SEVERITY_CRITICAL": 4,
+                        "ISSUE_SEVERITY_IRRELEVANT": 5
+                      }
+                    },
+                    "SignalType": {
+                      "values": {
+                        "SIGNAL_TYPE_UNSPECIFIED": 0,
+                        "SIGNAL_TYPE_RESOURCE_FAILOVER_PROTECTED": 1,
+                        "SIGNAL_TYPE_GROUP_MULTIREGIONAL": 2,
+                        "SIGNAL_TYPE_NO_AUTOMATED_BACKUP_POLICY": 4,
+                        "SIGNAL_TYPE_SHORT_BACKUP_RETENTION": 5,
+                        "SIGNAL_TYPE_LAST_BACKUP_FAILED": 6,
+                        "SIGNAL_TYPE_LAST_BACKUP_OLD": 7,
+                        "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_2_0": 8,
+                        "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_3": 9,
+                        "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_2": 10,
+                        "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_1": 11,
+                        "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_0": 12,
+                        "SIGNAL_TYPE_VIOLATES_CIS_CONTROLS_V8_0": 76,
+                        "SIGNAL_TYPE_VIOLATES_NIST_800_53": 13,
+                        "SIGNAL_TYPE_VIOLATES_NIST_800_53_R5": 69,
+                        "SIGNAL_TYPE_VIOLATES_NIST_CYBERSECURITY_FRAMEWORK_V1_0": 72,
+                        "SIGNAL_TYPE_VIOLATES_ISO_27001": 14,
+                        "SIGNAL_TYPE_VIOLATES_ISO_27001_V2022": 70,
+                        "SIGNAL_TYPE_VIOLATES_PCI_DSS_V3_2_1": 15,
+                        "SIGNAL_TYPE_VIOLATES_PCI_DSS_V4_0": 71,
+                        "SIGNAL_TYPE_VIOLATES_CLOUD_CONTROLS_MATRIX_V4": 73,
+                        "SIGNAL_TYPE_VIOLATES_HIPAA": 74,
+                        "SIGNAL_TYPE_VIOLATES_SOC2_V2017": 75,
+                        "SIGNAL_TYPE_LOGS_NOT_OPTIMIZED_FOR_TROUBLESHOOTING": 16,
+                        "SIGNAL_TYPE_QUERY_DURATIONS_NOT_LOGGED": 17,
+                        "SIGNAL_TYPE_VERBOSE_ERROR_LOGGING": 18,
+                        "SIGNAL_TYPE_QUERY_LOCK_WAITS_NOT_LOGGED": 19,
+                        "SIGNAL_TYPE_LOGGING_MOST_ERRORS": 20,
+                        "SIGNAL_TYPE_LOGGING_ONLY_CRITICAL_ERRORS": 21,
+                        "SIGNAL_TYPE_MINIMAL_ERROR_LOGGING": 22,
+                        "SIGNAL_TYPE_QUERY_STATS_LOGGED": 23,
+                        "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_CLIENT_HOSTNAME": 24,
+                        "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PARSER_STATS": 25,
+                        "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PLANNER_STATS": 26,
+                        "SIGNAL_TYPE_NOT_LOGGING_ONLY_DDL_STATEMENTS": 27,
+                        "SIGNAL_TYPE_LOGGING_QUERY_STATS": 28,
+                        "SIGNAL_TYPE_NOT_LOGGING_TEMPORARY_FILES": 29,
+                        "SIGNAL_TYPE_CONNECTION_MAX_NOT_CONFIGURED": 30,
+                        "SIGNAL_TYPE_USER_OPTIONS_CONFIGURED": 31,
+                        "SIGNAL_TYPE_EXPOSED_TO_PUBLIC_ACCESS": 32,
+                        "SIGNAL_TYPE_UNENCRYPTED_CONNECTIONS": 33,
+                        "SIGNAL_TYPE_NO_ROOT_PASSWORD": 34,
+                        "SIGNAL_TYPE_WEAK_ROOT_PASSWORD": 35,
+                        "SIGNAL_TYPE_ENCRYPTION_KEY_NOT_CUSTOMER_MANAGED": 36,
+                        "SIGNAL_TYPE_SERVER_AUTHENTICATION_NOT_REQUIRED": 37,
+                        "SIGNAL_TYPE_EXPOSED_TO_EXTERNAL_SCRIPTS": 39,
+                        "SIGNAL_TYPE_EXPOSED_TO_LOCAL_DATA_LOADS": 40,
+                        "SIGNAL_TYPE_CONNECTION_ATTEMPTS_NOT_LOGGED": 41,
+                        "SIGNAL_TYPE_DISCONNECTIONS_NOT_LOGGED": 42,
+                        "SIGNAL_TYPE_LOGGING_EXCESSIVE_STATEMENT_INFO": 43,
+                        "SIGNAL_TYPE_EXPOSED_TO_REMOTE_ACCESS": 44,
+                        "SIGNAL_TYPE_DATABASE_NAMES_EXPOSED": 45,
+                        "SIGNAL_TYPE_SENSITIVE_TRACE_INFO_NOT_MASKED": 46,
+                        "SIGNAL_TYPE_PUBLIC_IP_ENABLED": 47,
+                        "SIGNAL_TYPE_IDLE": 48,
+                        "SIGNAL_TYPE_OVERPROVISIONED": 49,
+                        "SIGNAL_TYPE_HIGH_NUMBER_OF_OPEN_TABLES": 50,
+                        "SIGNAL_TYPE_HIGH_NUMBER_OF_TABLES": 51,
+                        "SIGNAL_TYPE_HIGH_TRANSACTION_ID_UTILIZATION": 52,
+                        "SIGNAL_TYPE_UNDERPROVISIONED": 53,
+                        "SIGNAL_TYPE_OUT_OF_DISK": 54,
+                        "SIGNAL_TYPE_SERVER_CERTIFICATE_NEAR_EXPIRY": 55,
+                        "SIGNAL_TYPE_DATABASE_AUDITING_DISABLED": 56,
+                        "SIGNAL_TYPE_RESTRICT_AUTHORIZED_NETWORKS": 57,
+                        "SIGNAL_TYPE_VIOLATE_POLICY_RESTRICT_PUBLIC_IP": 58,
+                        "SIGNAL_TYPE_QUOTA_LIMIT": 59,
+                        "SIGNAL_TYPE_NO_PASSWORD_POLICY": 60,
+                        "SIGNAL_TYPE_CONNECTIONS_PERFORMANCE_IMPACT": 61,
+                        "SIGNAL_TYPE_TMP_TABLES_PERFORMANCE_IMPACT": 62,
+                        "SIGNAL_TYPE_TRANS_LOGS_PERFORMANCE_IMPACT": 63,
+                        "SIGNAL_TYPE_HIGH_JOINS_WITHOUT_INDEXES": 64,
+                        "SIGNAL_TYPE_SUPERUSER_WRITING_TO_USER_TABLES": 65,
+                        "SIGNAL_TYPE_USER_GRANTED_ALL_PERMISSIONS": 66,
+                        "SIGNAL_TYPE_DATA_EXPORT_TO_EXTERNAL_CLOUD_STORAGE_BUCKET": 67,
+                        "SIGNAL_TYPE_DATA_EXPORT_TO_PUBLIC_CLOUD_STORAGE_BUCKET": 68,
+                        "SIGNAL_TYPE_WEAK_PASSWORD_HASH_ALGORITHM": 77,
+                        "SIGNAL_TYPE_NO_USER_PASSWORD_POLICY": 78,
+                        "SIGNAL_TYPE_HOT_NODE": 79,
+                        "SIGNAL_TYPE_NO_DELETION_PROTECTION": 80,
+                        "SIGNAL_TYPE_NO_POINT_IN_TIME_RECOVERY": 81,
+                        "SIGNAL_TYPE_RESOURCE_SUSPENDED": 82,
+                        "SIGNAL_TYPE_EXPENSIVE_COMMANDS": 83,
+                        "SIGNAL_TYPE_NO_MAINTENANCE_POLICY_CONFIGURED": 84,
+                        "SIGNAL_TYPE_INEFFICIENT_QUERY": 85,
+                        "SIGNAL_TYPE_READ_INTENSIVE_WORKLOAD": 86,
+                        "SIGNAL_TYPE_MEMORY_LIMIT": 87,
+                        "SIGNAL_TYPE_MAX_SERVER_MEMORY": 88,
+                        "SIGNAL_TYPE_LARGE_ROWS": 89,
+                        "SIGNAL_TYPE_HIGH_WRITE_PRESSURE": 90,
+                        "SIGNAL_TYPE_HIGH_READ_PRESSURE": 91,
+                        "SIGNAL_TYPE_ENCRYPTION_ORG_POLICY_NOT_SATISFIED": 92,
+                        "SIGNAL_TYPE_LOCATION_ORG_POLICY_NOT_SATISFIED": 93,
+                        "SIGNAL_TYPE_OUTDATED_MINOR_VERSION": 94,
+                        "SIGNAL_TYPE_SCHEMA_NOT_OPTIMIZED": 95,
+                        "SIGNAL_TYPE_REPLICATION_LAG": 97,
+                        "SIGNAL_TYPE_OUTDATED_CLIENT": 99,
+                        "SIGNAL_TYPE_DATABOOST_DISABLED": 100,
+                        "SIGNAL_TYPE_RECOMMENDED_MAINTENANCE_POLICIES": 101,
+                        "SIGNAL_TYPE_EXTENDED_SUPPORT": 102,
+                        "SIGNAL_TYPE_VERSION_NEARING_END_OF_LIFE": 104
+                      }
+                    },
+                    "SignalTypeGroup": {
+                      "fields": {
+                        "displayName": {
+                          "type": "string",
+                          "id": 1,
+                          "options": {
+                            "(google.api.field_behavior)": "REQUIRED"
+                          }
+                        },
+                        "signalTypes": {
+                          "rule": "repeated",
+                          "type": "SignalType",
+                          "id": 2,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        }
+                      }
+                    },
+                    "SignalFilter": {
+                      "fields": {
+                        "signalType": {
+                          "type": "SignalType",
+                          "id": 1,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "signalStatus": {
+                          "type": "SignalStatus",
+                          "id": 2,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        }
+                      }
+                    },
+                    "SignalGroup": {
+                      "fields": {
+                        "displayName": {
+                          "type": "string",
+                          "id": 1
+                        },
+                        "issueCount": {
+                          "type": "int32",
+                          "id": 2
+                        },
+                        "signals": {
+                          "rule": "repeated",
+                          "type": "Signal",
+                          "id": 3
+                        }
+                      }
+                    },
+                    "IssueCount": {
+                      "fields": {
+                        "displayName": {
+                          "type": "string",
+                          "id": 1
+                        },
+                        "issueCount": {
+                          "type": "int32",
+                          "id": 2
+                        }
+                      }
+                    },
+                    "AdditionalDetail": {
+                      "oneofs": {
+                        "detail": {
+                          "oneof": [
+                            "shortBackupRetentionInfo",
+                            "backupRunInfo",
+                            "sccInfo",
+                            "recommendationInfo",
+                            "automatedBackupPolicyInfo",
+                            "deletionProtectionInfo",
+                            "resourceSuspensionInfo",
+                            "inefficientQueryInfo",
+                            "outdatedMinorVersionInfo",
+                            "maintenanceRecommendationInfo"
+                          ]
+                        }
+                      },
+                      "fields": {
+                        "shortBackupRetentionInfo": {
+                          "type": "RetentionSettingsInfo",
+                          "id": 2
+                        },
+                        "backupRunInfo": {
+                          "type": "BackupRunInfo",
+                          "id": 3
+                        },
+                        "sccInfo": {
+                          "type": "SCCInfo",
+                          "id": 4
+                        },
+                        "recommendationInfo": {
+                          "type": "RecommendationInfo",
+                          "id": 6
+                        },
+                        "automatedBackupPolicyInfo": {
+                          "type": "AutomatedBackupPolicyInfo",
+                          "id": 8
+                        },
+                        "deletionProtectionInfo": {
+                          "type": "DeletionProtectionInfo",
+                          "id": 9
+                        },
+                        "resourceSuspensionInfo": {
+                          "type": "ResourceSuspensionInfo",
+                          "id": 10
+                        },
+                        "inefficientQueryInfo": {
+                          "type": "InefficientQueryInfo",
+                          "id": 11
+                        },
+                        "outdatedMinorVersionInfo": {
+                          "type": "OutdatedMinorVersionInfo",
+                          "id": 12
+                        },
+                        "maintenanceRecommendationInfo": {
+                          "type": "MaintenanceRecommendationInfo",
+                          "id": 13
+                        },
+                        "signalSource": {
+                          "type": "SignalSource",
+                          "id": 1
+                        },
+                        "signalType": {
+                          "type": "SignalType",
+                          "id": 5
+                        },
+                        "signalEventTime": {
+                          "type": "google.protobuf.Timestamp",
+                          "id": 7
+                        }
+                      }
+                    },
+                    "SubResource": {
+                      "fields": {
+                        "resourceType": {
+                          "type": "string",
+                          "id": 1,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "fullResourceName": {
+                          "type": "string",
+                          "id": 2,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "product": {
+                          "type": "Product",
+                          "id": 3,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "container": {
+                          "type": "string",
+                          "id": 4
+                        }
+                      }
+                    },
+                    "RetentionSettingsInfo": {
+                      "oneofs": {
+                        "retention": {
+                          "oneof": [
+                            "quantityBasedRetention",
+                            "durationBasedRetention",
+                            "timestampBasedRetentionTime"
+                          ]
+                        }
+                      },
+                      "fields": {
+                        "quantityBasedRetention": {
+                          "type": "google.protobuf.Int32Value",
+                          "id": 3
+                        },
+                        "durationBasedRetention": {
+                          "type": "google.protobuf.Duration",
+                          "id": 5
+                        },
+                        "timestampBasedRetentionTime": {
+                          "type": "google.protobuf.Timestamp",
+                          "id": 6
+                        },
+                        "subResource": {
+                          "type": "SubResource",
+                          "id": 4,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        }
+                      }
+                    },
+                    "AutomatedBackupPolicyInfo": {
+                      "fields": {
+                        "subResource": {
+                          "type": "SubResource",
+                          "id": 1,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "isEnabled": {
+                          "type": "bool",
+                          "id": 2
+                        }
+                      }
+                    },
+                    "DeletionProtectionInfo": {
+                      "fields": {
+                        "subResource": {
+                          "type": "SubResource",
+                          "id": 1,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "deletionProtectionEnabled": {
+                          "type": "bool",
+                          "id": 2
+                        }
+                      }
+                    },
+                    "ResourceSuspensionInfo": {
+                      "fields": {
+                        "resourceSuspended": {
+                          "type": "bool",
+                          "id": 1
+                        },
+                        "suspensionReason": {
+                          "type": "SuspensionReason",
+                          "id": 2
+                        }
+                      }
+                    },
+                    "BackupRunInfo": {
+                      "fields": {
+                        "startTime": {
+                          "type": "google.protobuf.Timestamp",
+                          "id": 1
+                        },
+                        "endTime": {
+                          "type": "google.protobuf.Timestamp",
+                          "id": 6
+                        },
+                        "state": {
+                          "type": "State",
+                          "id": 2,
+                          "options": {
+                            "(google.api.field_behavior)": "OUTPUT_ONLY"
+                          }
+                        },
+                        "errorMessage": {
+                          "type": "string",
+                          "id": 3
+                        },
+                        "operationErrorType": {
+                          "type": "OperationErrorType",
+                          "id": 4,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        },
+                        "subResource": {
+                          "type": "SubResource",
+                          "id": 5,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        }
+                      },
+                      "nested": {
+                        "State": {
+                          "values": {
+                            "STATE_UNSPECIFIED": 0,
+                            "SUCCEEDED": 1,
+                            "FAILED": 2
+                          }
+                        }
+                      }
+                    },
+                    "InefficientQueryInfo": {
+                      "fields": {
+                        "database": {
+                          "type": "string",
+                          "id": 1
+                        },
+                        "table": {
+                          "type": "string",
+                          "id": 2
+                        },
+                        "sqlIndexStatement": {
+                          "type": "string",
+                          "id": 3
+                        },
+                        "storageCostBytes": {
+                          "type": "int64",
+                          "id": 4
+                        },
+                        "impactedQueriesCount": {
+                          "type": "int64",
+                          "id": 5
+                        }
+                      }
+                    },
+                    "SCCInfo": {
+                      "fields": {
+                        "signal": {
+                          "type": "string",
+                          "id": 1
+                        },
+                        "category": {
+                          "type": "string",
+                          "id": 2
+                        },
+                        "regulatoryStandards": {
+                          "rule": "repeated",
+                          "type": "RegulatoryStandard",
+                          "id": 3
+                        },
+                        "externalUri": {
+                          "type": "string",
+                          "id": 4
+                        }
+                      }
+                    },
+                    "RecommendationInfo": {
+                      "fields": {
+                        "recommender": {
+                          "type": "string",
+                          "id": 1
+                        },
+                        "recommenderId": {
+                          "type": "string",
+                          "id": 2
+                        },
+                        "recommenderSubtype": {
+                          "type": "string",
+                          "id": 3
+                        }
+                      }
+                    },
+                    "RegulatoryStandard": {
+                      "fields": {
+                        "standard": {
+                          "type": "string",
+                          "id": 1
+                        },
+                        "version": {
+                          "type": "string",
+                          "id": 2
+                        }
+                      }
+                    },
+                    "OutdatedMinorVersionInfo": {
+                      "fields": {
+                        "recommendedMinorVersion": {
+                          "type": "string",
+                          "id": 1
+                        }
+                      }
+                    },
+                    "MaintenanceRecommendationInfo": {
+                      "fields": {
+                        "resourceMaintenanceSchedules": {
+                          "rule": "repeated",
+                          "type": "ResourceMaintenanceSchedule",
+                          "id": 1,
+                          "options": {
+                            "(google.api.field_behavior)": "OPTIONAL"
+                          }
+                        }
+                      }
+                    },
+                    "Signal": {
+                      "fields": {
+                        "signalType": {
+                          "type": "SignalType",
+                          "id": 1
+                        },
+                        "signalStatus": {
+                          "type": "SignalStatus",
+                          "id": 2
+                        },
+                        "additionalDetails": {
+                          "rule": "repeated",
+                          "type": "AdditionalDetail",
+                          "id": 3
+                        },
+                        "issueSeverity": {
+                          "type": "IssueSeverity",
+                          "id": 4
+                        },
+                        "issueCreateTime": {
+                          "type": "google.protobuf.Timestamp",
+                          "id": 5
+                        }
+                      }
+                    },
+                    "SuspensionReason": {
+                      "values": {
+                        "SUSPENSION_REASON_UNSPECIFIED": 0,
+                        "WIPEOUT_HIDE_EVENT": 1,
+                        "WIPEOUT_PURGE_EVENT": 2,
+                        "BILLING_DISABLED": 3,
+                        "ABUSER_DETECTED": 4,
+                        "ENCRYPTION_KEY_INACCESSIBLE": 5,
+                        "REPLICATED_CLUSTER_ENCRYPTION_KEY_INACCESSIBLE": 6
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "api": {
+          "options": {
+            "go_package": "google.golang.org/genproto/googleapis/api;api",
+            "java_multiple_files": true,
+            "java_outer_classname": "LaunchStageProto",
+            "java_package": "com.google.api",
+            "objc_class_prefix": "GAPI",
+            "cc_enable_arenas": true
+          },
+          "nested": {
+            "fieldBehavior": {
+              "rule": "repeated",
+              "type": "google.api.FieldBehavior",
+              "id": 1052,
+              "extend": "google.protobuf.FieldOptions",
+              "options": {
+                "packed": false
+              }
+            },
+            "FieldBehavior": {
+              "values": {
+                "FIELD_BEHAVIOR_UNSPECIFIED": 0,
+                "OPTIONAL": 1,
+                "REQUIRED": 2,
+                "OUTPUT_ONLY": 3,
+                "INPUT_ONLY": 4,
+                "IMMUTABLE": 5,
+                "UNORDERED_LIST": 6,
+                "NON_EMPTY_DEFAULT": 7,
+                "IDENTIFIER": 8
+              }
+            },
+            "http": {
+              "type": "HttpRule",
+              "id": 72295728,
+              "extend": "google.protobuf.MethodOptions"
+            },
+            "Http": {
+              "fields": {
+                "rules": {
+                  "rule": "repeated",
+                  "type": "HttpRule",
+                  "id": 1
+                },
+                "fullyDecodeReservedExpansion": {
+                  "type": "bool",
+                  "id": 2
+                }
+              }
+            },
+            "HttpRule": {
+              "oneofs": {
+                "pattern": {
+                  "oneof": [
+                    "get",
+                    "put",
+                    "post",
+                    "delete",
+                    "patch",
+                    "custom"
+                  ]
+                }
+              },
+              "fields": {
+                "selector": {
+                  "type": "string",
+                  "id": 1
+                },
+                "get": {
+                  "type": "string",
+                  "id": 2
+                },
+                "put": {
+                  "type": "string",
+                  "id": 3
+                },
+                "post": {
+                  "type": "string",
+                  "id": 4
+                },
+                "delete": {
+                  "type": "string",
+                  "id": 5
+                },
+                "patch": {
+                  "type": "string",
+                  "id": 6
+                },
+                "custom": {
+                  "type": "CustomHttpPattern",
+                  "id": 8
+                },
+                "body": {
+                  "type": "string",
+                  "id": 7
+                },
+                "responseBody": {
+                  "type": "string",
+                  "id": 12
+                },
+                "additionalBindings": {
+                  "rule": "repeated",
+                  "type": "HttpRule",
+                  "id": 11
+                }
+              }
+            },
+            "CustomHttpPattern": {
+              "fields": {
+                "kind": {
+                  "type": "string",
+                  "id": 1
+                },
+                "path": {
+                  "type": "string",
+                  "id": 2
+                }
+              }
+            },
+            "methodSignature": {
+              "rule": "repeated",
+              "type": "string",
+              "id": 1051,
+              "extend": "google.protobuf.MethodOptions"
+            },
+            "defaultHost": {
+              "type": "string",
+              "id": 1049,
+              "extend": "google.protobuf.ServiceOptions"
+            },
+            "oauthScopes": {
+              "type": "string",
+              "id": 1050,
+              "extend": "google.protobuf.ServiceOptions"
+            },
+            "apiVersion": {
+              "type": "string",
+              "id": 525000001,
+              "extend": "google.protobuf.ServiceOptions"
+            },
+            "CommonLanguageSettings": {
+              "fields": {
+                "referenceDocsUri": {
+                  "type": "string",
+                  "id": 1,
+                  "options": {
+                    "deprecated": true
+                  }
+                },
+                "destinations": {
+                  "rule": "repeated",
+                  "type": "ClientLibraryDestination",
+                  "id": 2
+                }
+              }
+            },
+            "ClientLibrarySettings": {
+              "fields": {
+                "version": {
+                  "type": "string",
+                  "id": 1
+                },
+                "launchStage": {
+                  "type": "LaunchStage",
+                  "id": 2
+                },
+                "restNumericEnums": {
+                  "type": "bool",
+                  "id": 3
+                },
+                "javaSettings": {
+                  "type": "JavaSettings",
+                  "id": 21
+                },
+                "cppSettings": {
+                  "type": "CppSettings",
+                  "id": 22
+                },
+                "phpSettings": {
+                  "type": "PhpSettings",
+                  "id": 23
+                },
+                "pythonSettings": {
+                  "type": "PythonSettings",
+                  "id": 24
+                },
+                "nodeSettings": {
+                  "type": "NodeSettings",
+                  "id": 25
+                },
+                "dotnetSettings": {
+                  "type": "DotnetSettings",
+                  "id": 26
+                },
+                "rubySettings": {
+                  "type": "RubySettings",
+                  "id": 27
+                },
+                "goSettings": {
+                  "type": "GoSettings",
+                  "id": 28
+                }
+              }
+            },
+            "Publishing": {
+              "fields": {
+                "methodSettings": {
+                  "rule": "repeated",
+                  "type": "MethodSettings",
+                  "id": 2
+                },
+                "newIssueUri": {
+                  "type": "string",
+                  "id": 101
+                },
+                "documentationUri": {
+                  "type": "string",
+                  "id": 102
+                },
+                "apiShortName": {
+                  "type": "string",
+                  "id": 103
+                },
+                "githubLabel": {
+                  "type": "string",
+                  "id": 104
+                },
+                "codeownerGithubTeams": {
+                  "rule": "repeated",
+                  "type": "string",
+                  "id": 105
+                },
+                "docTagPrefix": {
+                  "type": "string",
+                  "id": 106
+                },
+                "organization": {
+                  "type": "ClientLibraryOrganization",
+                  "id": 107
+                },
+                "librarySettings": {
+                  "rule": "repeated",
+                  "type": "ClientLibrarySettings",
+                  "id": 109
+                },
+                "protoReferenceDocumentationUri": {
+                  "type": "string",
+                  "id": 110
+                },
+                "restReferenceDocumentationUri": {
+                  "type": "string",
+                  "id": 111
+                }
+              }
+            },
+            "JavaSettings": {
+              "fields": {
+                "libraryPackage": {
+                  "type": "string",
+                  "id": 1
+                },
+                "serviceClassNames": {
+                  "keyType": "string",
+                  "type": "string",
+                  "id": 2
+                },
+                "common": {
+                  "type": "CommonLanguageSettings",
+                  "id": 3
+                }
+              }
+            },
+            "CppSettings": {
+              "fields": {
+                "common": {
+                  "type": "CommonLanguageSettings",
+                  "id": 1
+                }
+              }
+            },
+            "PhpSettings": {
+              "fields": {
+                "common": {
+                  "type": "CommonLanguageSettings",
+                  "id": 1
+                }
+              }
+            },
+            "PythonSettings": {
+              "fields": {
+                "common": {
+                  "type": "CommonLanguageSettings",
+                  "id": 1
+                }
+              }
+            },
+            "NodeSettings": {
+              "fields": {
+                "common": {
+                  "type": "CommonLanguageSettings",
+                  "id": 1
+                }
+              }
+            },
+            "DotnetSettings": {
+              "fields": {
+                "common": {
+                  "type": "CommonLanguageSettings",
+                  "id": 1
+                },
+                "renamedServices": {
+                  "keyType": "string",
+                  "type": "string",
+                  "id": 2
+                },
+                "renamedResources": {
+                  "keyType": "string",
+                  "type": "string",
+                  "id": 3
+                },
+                "ignoredResources": {
+                  "rule": "repeated",
+                  "type": "string",
+                  "id": 4
+                },
+                "forcedNamespaceAliases": {
+                  "rule": "repeated",
+                  "type": "string",
+                  "id": 5
+                },
+                "handwrittenSignatures": {
+                  "rule": "repeated",
+                  "type": "string",
+                  "id": 6
+                }
+              }
+            },
+            "RubySettings": {
+              "fields": {
+                "common": {
+                  "type": "CommonLanguageSettings",
+                  "id": 1
+                }
+              }
+            },
+            "GoSettings": {
+              "fields": {
+                "common": {
+                  "type": "CommonLanguageSettings",
+                  "id": 1
+                }
+              }
+            },
+            "MethodSettings": {
+              "fields": {
+                "selector": {
+                  "type": "string",
+                  "id": 1
+                },
+                "longRunning": {
+                  "type": "LongRunning",
+                  "id": 2
+                },
+                "autoPopulatedFields": {
+                  "rule": "repeated",
+                  "type": "string",
+                  "id": 3
+                }
+              },
+              "nested": {
+                "LongRunning": {
+                  "fields": {
+                    "initialPollDelay": {
+                      "type": "google.protobuf.Duration",
+                      "id": 1
+                    },
+                    "pollDelayMultiplier": {
+                      "type": "float",
+                      "id": 2
+                    },
+                    "maxPollDelay": {
+                      "type": "google.protobuf.Duration",
+                      "id": 3
+                    },
+                    "totalPollTimeout": {
+                      "type": "google.protobuf.Duration",
+                      "id": 4
+                    }
+                  }
+                }
+              }
+            },
+            "ClientLibraryOrganization": {
+              "values": {
+                "CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED": 0,
+                "CLOUD": 1,
+                "ADS": 2,
+                "PHOTOS": 3,
+                "STREET_VIEW": 4,
+                "SHOPPING": 5,
+                "GEO": 6,
+                "GENERATIVE_AI": 7
+              }
+            },
+            "ClientLibraryDestination": {
+              "values": {
+                "CLIENT_LIBRARY_DESTINATION_UNSPECIFIED": 0,
+                "GITHUB": 10,
+                "PACKAGE_MANAGER": 20
+              }
+            },
+            "LaunchStage": {
+              "values": {
+                "LAUNCH_STAGE_UNSPECIFIED": 0,
+                "UNIMPLEMENTED": 6,
+                "PRELAUNCH": 7,
+                "EARLY_ACCESS": 1,
+                "ALPHA": 2,
+                "BETA": 3,
+                "GA": 4,
+                "DEPRECATED": 5
+              }
+            }
+          }
+        },
+        "protobuf": {
+          "options": {
+            "go_package": "google.golang.org/protobuf/types/descriptorpb",
+            "java_package": "com.google.protobuf",
+            "java_outer_classname": "DescriptorProtos",
+            "csharp_namespace": "Google.Protobuf.Reflection",
+            "objc_class_prefix": "GPB",
+            "cc_enable_arenas": true,
+            "optimize_for": "SPEED"
+          },
+          "nested": {
+            "FileDescriptorSet": {
+              "edition": "proto2",
+              "fields": {
+                "file": {
+                  "rule": "repeated",
+                  "type": "FileDescriptorProto",
+                  "id": 1
+                }
+              }
+            },
+            "Edition": {
+              "edition": "proto2",
+              "values": {
+                "EDITION_UNKNOWN": 0,
+                "EDITION_PROTO2": 998,
+                "EDITION_PROTO3": 999,
+                "EDITION_2023": 1000,
+                "EDITION_2024": 1001,
+                "EDITION_1_TEST_ONLY": 1,
+                "EDITION_2_TEST_ONLY": 2,
+                "EDITION_99997_TEST_ONLY": 99997,
+                "EDITION_99998_TEST_ONLY": 99998,
+                "EDITION_99999_TEST_ONLY": 99999,
+                "EDITION_MAX": 2147483647
+              }
+            },
+            "FileDescriptorProto": {
+              "edition": "proto2",
+              "fields": {
+                "name": {
+                  "type": "string",
+                  "id": 1
+                },
+                "package": {
+                  "type": "string",
+                  "id": 2
+                },
+                "dependency": {
+                  "rule": "repeated",
+                  "type": "string",
+                  "id": 3
+                },
+                "publicDependency": {
+                  "rule": "repeated",
+                  "type": "int32",
+                  "id": 10
+                },
+                "weakDependency": {
+                  "rule": "repeated",
+                  "type": "int32",
+                  "id": 11
+                },
+                "messageType": {
+                  "rule": "repeated",
+                  "type": "DescriptorProto",
+                  "id": 4
+                },
+                "enumType": {
+                  "rule": "repeated",
+                  "type": "EnumDescriptorProto",
+                  "id": 5
+                },
+                "service": {
+                  "rule": "repeated",
+                  "type": "ServiceDescriptorProto",
+                  "id": 6
+                },
+                "extension": {
+                  "rule": "repeated",
+                  "type": "FieldDescriptorProto",
+                  "id": 7
+                },
+                "options": {
+                  "type": "FileOptions",
+                  "id": 8
+                },
+                "sourceCodeInfo": {
+                  "type": "SourceCodeInfo",
+                  "id": 9
+                },
+                "syntax": {
+                  "type": "string",
+                  "id": 12
+                },
+                "edition": {
+                  "type": "Edition",
+                  "id": 14
+                }
+              }
+            },
+            "DescriptorProto": {
+              "edition": "proto2",
+              "fields": {
+                "name": {
+                  "type": "string",
+                  "id": 1
+                },
+                "field": {
+                  "rule": "repeated",
+                  "type": "FieldDescriptorProto",
+                  "id": 2
+                },
+                "extension": {
+                  "rule": "repeated",
+                  "type": "FieldDescriptorProto",
+                  "id": 6
+                },
+                "nestedType": {
+                  "rule": "repeated",
+                  "type": "DescriptorProto",
+                  "id": 3
+                },
+                "enumType": {
+                  "rule": "repeated",
+                  "type": "EnumDescriptorProto",
+                  "id": 4
+                },
+                "extensionRange": {
+                  "rule": "repeated",
+                  "type": "ExtensionRange",
+                  "id": 5
+                },
+                "oneofDecl": {
+                  "rule": "repeated",
+                  "type": "OneofDescriptorProto",
+                  "id": 8
+                },
+                "options": {
+                  "type": "MessageOptions",
+                  "id": 7
+                },
+                "reservedRange": {
+                  "rule": "repeated",
+                  "type": "ReservedRange",
+                  "id": 9
+                },
+                "reservedName": {
+                  "rule": "repeated",
+                  "type": "string",
+                  "id": 10
+                }
+              },
+              "nested": {
+                "ExtensionRange": {
+                  "fields": {
+                    "start": {
+                      "type": "int32",
+                      "id": 1
+                    },
+                    "end": {
+                      "type": "int32",
+                      "id": 2
+                    },
+                    "options": {
+                      "type": "ExtensionRangeOptions",
+                      "id": 3
+                    }
+                  }
+                },
+                "ReservedRange": {
+                  "fields": {
+                    "start": {
+                      "type": "int32",
+                      "id": 1
+                    },
+                    "end": {
+                      "type": "int32",
+                      "id": 2
+                    }
+                  }
+                }
+              }
+            },
+            "ExtensionRangeOptions": {
+              "edition": "proto2",
+              "fields": {
+                "uninterpretedOption": {
+                  "rule": "repeated",
+                  "type": "UninterpretedOption",
+                  "id": 999
+                },
+                "declaration": {
+                  "rule": "repeated",
+                  "type": "Declaration",
+                  "id": 2,
+                  "options": {
+                    "retention": "RETENTION_SOURCE"
+                  }
+                },
+                "features": {
+                  "type": "FeatureSet",
+                  "id": 50
+                },
+                "verification": {
+                  "type": "VerificationState",
+                  "id": 3,
+                  "options": {
+                    "default": "UNVERIFIED",
+                    "retention": "RETENTION_SOURCE"
+                  }
+                }
+              },
+              "extensions": [
+                [
+                  1000,
+                  536870911
+                ]
+              ],
+              "nested": {
+                "Declaration": {
+                  "fields": {
+                    "number": {
+                      "type": "int32",
+                      "id": 1
+                    },
+                    "fullName": {
+                      "type": "string",
+                      "id": 2
+                    },
+                    "type": {
+                      "type": "string",
+                      "id": 3
+                    },
+                    "reserved": {
+                      "type": "bool",
+                      "id": 5
+                    },
+                    "repeated": {
+                      "type": "bool",
+                      "id": 6
+                    }
+                  },
+                  "reserved": [
+                    [
+                      4,
+                      4
+                    ]
+                  ]
+                },
+                "VerificationState": {
+                  "values": {
+                    "DECLARATION": 0,
+                    "UNVERIFIED": 1
+                  }
+                }
+              }
+            },
+            "FieldDescriptorProto": {
+              "edition": "proto2",
+              "fields": {
+                "name": {
+                  "type": "string",
+                  "id": 1
+                },
+                "number": {
+                  "type": "int32",
+                  "id": 3
+                },
+                "label": {
+                  "type": "Label",
+                  "id": 4
+                },
+                "type": {
+                  "type": "Type",
+                  "id": 5
+                },
+                "typeName": {
+                  "type": "string",
+                  "id": 6
+                },
+                "extendee": {
+                  "type": "string",
+                  "id": 2
+                },
+                "defaultValue": {
+                  "type": "string",
+                  "id": 7
+                },
+                "oneofIndex": {
+                  "type": "int32",
+                  "id": 9
+                },
+                "jsonName": {
+                  "type": "string",
+                  "id": 10
+                },
+                "options": {
+                  "type": "FieldOptions",
+                  "id": 8
+                },
+                "proto3Optional": {
+                  "type": "bool",
+                  "id": 17
+                }
+              },
+              "nested": {
+                "Type": {
+                  "values": {
+                    "TYPE_DOUBLE": 1,
+                    "TYPE_FLOAT": 2,
+                    "TYPE_INT64": 3,
+                    "TYPE_UINT64": 4,
+                    "TYPE_INT32": 5,
+                    "TYPE_FIXED64": 6,
+                    "TYPE_FIXED32": 7,
+                    "TYPE_BOOL": 8,
+                    "TYPE_STRING": 9,
+                    "TYPE_GROUP": 10,
+                    "TYPE_MESSAGE": 11,
+                    "TYPE_BYTES": 12,
+                    "TYPE_UINT32": 13,
+                    "TYPE_ENUM": 14,
+                    "TYPE_SFIXED32": 15,
+                    "TYPE_SFIXED64": 16,
+                    "TYPE_SINT32": 17,
+                    "TYPE_SINT64": 18
+                  }
+                },
+                "Label": {
+                  "values": {
+                    "LABEL_OPTIONAL": 1,
+                    "LABEL_REPEATED": 3,
+                    "LABEL_REQUIRED": 2
+                  }
+                }
+              }
+            },
+            "OneofDescriptorProto": {
+              "edition": "proto2",
+              "fields": {
+                "name": {
+                  "type": "string",
+                  "id": 1
+                },
+                "options": {
+                  "type": "OneofOptions",
+                  "id": 2
+                }
+              }
+            },
+            "EnumDescriptorProto": {
+              "edition": "proto2",
+              "fields": {
+                "name": {
+                  "type": "string",
+                  "id": 1
+                },
+                "value": {
+                  "rule": "repeated",
+                  "type": "EnumValueDescriptorProto",
+                  "id": 2
+                },
+                "options": {
+                  "type": "EnumOptions",
+                  "id": 3
+                },
+                "reservedRange": {
+                  "rule": "repeated",
+                  "type": "EnumReservedRange",
+                  "id": 4
+                },
+                "reservedName": {
+                  "rule": "repeated",
+                  "type": "string",
+                  "id": 5
+                }
+              },
+              "nested": {
+                "EnumReservedRange": {
+                  "fields": {
+                    "start": {
+                      "type": "int32",
+                      "id": 1
+                    },
+                    "end": {
+                      "type": "int32",
+                      "id": 2
+                    }
+                  }
+                }
+              }
+            },
+            "EnumValueDescriptorProto": {
+              "edition": "proto2",
+              "fields": {
+                "name": {
+                  "type": "string",
+                  "id": 1
+                },
+                "number": {
+                  "type": "int32",
+                  "id": 2
+                },
+                "options": {
+                  "type": "EnumValueOptions",
+                  "id": 3
+                }
+              }
+            },
+            "ServiceDescriptorProto": {
+              "edition": "proto2",
+              "fields": {
+                "name": {
+                  "type": "string",
+                  "id": 1
+                },
+                "method": {
+                  "rule": "repeated",
+                  "type": "MethodDescriptorProto",
+                  "id": 2
+                },
+                "options": {
+                  "type": "ServiceOptions",
+                  "id": 3
+                }
+              }
+            },
+            "MethodDescriptorProto": {
+              "edition": "proto2",
+              "fields": {
+                "name": {
+                  "type": "string",
+                  "id": 1
+                },
+                "inputType": {
+                  "type": "string",
+                  "id": 2
+                },
+                "outputType": {
+                  "type": "string",
+                  "id": 3
+                },
+                "options": {
+                  "type": "MethodOptions",
+                  "id": 4
+                },
+                "clientStreaming": {
+                  "type": "bool",
+                  "id": 5,
+                  "options": {
+                    "default": false
+                  }
+                },
+                "serverStreaming": {
+                  "type": "bool",
+                  "id": 6,
+                  "options": {
+                    "default": false
+                  }
+                }
+              }
+            },
+            "FileOptions": {
+              "edition": "proto2",
+              "fields": {
+                "javaPackage": {
+                  "type": "string",
+                  "id": 1
+                },
+                "javaOuterClassname": {
+                  "type": "string",
+                  "id": 8
+                },
+                "javaMultipleFiles": {
+                  "type": "bool",
+                  "id": 10,
+                  "options": {
+                    "default": false
+                  }
+                },
+                "javaGenerateEqualsAndHash": {
+                  "type": "bool",
+                  "id": 20,
+                  "options": {
+                    "deprecated": true
+                  }
+                },
+                "javaStringCheckUtf8": {
+                  "type": "bool",
+                  "id": 27,
+                  "options": {
+                    "default": false
+                  }
+                },
+                "optimizeFor": {
+                  "type": "OptimizeMode",
+                  "id": 9,
+                  "options": {
+                    "default": "SPEED"
+                  }
+                },
+                "goPackage": {
+                  "type": "string",
+                  "id": 11
+                },
+                "ccGenericServices": {
+                  "type": "bool",
+                  "id": 16,
+                  "options": {
+                    "default": false
+                  }
+                },
+                "javaGenericServices": {
+                  "type": "bool",
+                  "id": 17,
+                  "options": {
+                    "default": false
+                  }
+                },
+                "pyGenericServices": {
+                  "type": "bool",
+                  "id": 18,
+                  "options": {
+                    "default": false
+                  }
+                },
+                "deprecated": {
+                  "type": "bool",
+                  "id": 23,
+                  "options": {
+                    "default": false
+                  }
+                },
+                "ccEnableArenas": {
+                  "type": "bool",
+                  "id": 31,
+                  "options": {
+                    "default": true
+                  }
+                },
+                "objcClassPrefix": {
+                  "type": "string",
+                  "id": 36
+                },
+                "csharpNamespace": {
+                  "type": "string",
+                  "id": 37
+                },
+                "swiftPrefix": {
+                  "type": "string",
+                  "id": 39
+                },
+                "phpClassPrefix": {
+                  "type": "string",
+                  "id": 40
+                },
+                "phpNamespace": {
+                  "type": "string",
+                  "id": 41
+                },
+                "phpMetadataNamespace": {
+                  "type": "string",
+                  "id": 44
+                },
+                "rubyPackage": {
+                  "type": "string",
+                  "id": 45
+                },
+                "features": {
+                  "type": "FeatureSet",
+                  "id": 50
+                },
+                "uninterpretedOption": {
+                  "rule": "repeated",
+                  "type": "UninterpretedOption",
+                  "id": 999
+                }
+              },
+              "extensions": [
+                [
+                  1000,
+                  536870911
+                ]
+              ],
+              "reserved": [
+                [
+                  42,
+                  42
+                ],
+                [
+                  38,
+                  38
+                ]
+              ],
+              "nested": {
+                "OptimizeMode": {
+                  "values": {
+                    "SPEED": 1,
+                    "CODE_SIZE": 2,
+                    "LITE_RUNTIME": 3
+                  }
+                }
+              }
+            },
+            "MessageOptions": {
+              "edition": "proto2",
+              "fields": {
+                "messageSetWireFormat": {
+                  "type": "bool",
+                  "id": 1,
+                  "options": {
+                    "default": false
+                  }
+                },
+                "noStandardDescriptorAccessor": {
+                  "type": "bool",
+                  "id": 2,
+                  "options": {
+                    "default": false
+                  }
+                },
+                "deprecated": {
+                  "type": "bool",
+                  "id": 3,
+                  "options": {
+                    "default": false
+                  }
+                },
+                "mapEntry": {
+                  "type": "bool",
+                  "id": 7
+                },
+                "deprecatedLegacyJsonFieldConflicts": {
+                  "type": "bool",
+                  "id": 11,
+                  "options": {
+                    "deprecated": true
+                  }
+                },
+                "features": {
+                  "type": "FeatureSet",
+                  "id": 12
+                },
+                "uninterpretedOption": {
+                  "rule": "repeated",
+                  "type": "UninterpretedOption",
+                  "id": 999
+                }
+              },
+              "extensions": [
+                [
+                  1000,
+                  536870911
+                ]
+              ],
+              "reserved": [
+                [
+                  4,
+                  4
+                ],
+                [
+                  5,
+                  5
+                ],
+                [
+                  6,
+                  6
+                ],
+                [
+                  8,
+                  8
+                ],
+                [
+                  9,
+                  9
+                ]
+              ]
+            },
+            "FieldOptions": {
+              "edition": "proto2",
+              "fields": {
+                "ctype": {
+                  "type": "CType",
+                  "id": 1,
+                  "options": {
+                    "default": "STRING"
+                  }
+                },
+                "packed": {
+                  "type": "bool",
+                  "id": 2
+                },
+                "jstype": {
+                  "type": "JSType",
+                  "id": 6,
+                  "options": {
+                    "default": "JS_NORMAL"
+                  }
+                },
+                "lazy": {
+                  "type": "bool",
+                  "id": 5,
+                  "options": {
+                    "default": false
+                  }
+                },
+                "unverifiedLazy": {
+                  "type": "bool",
+                  "id": 15,
+                  "options": {
+                    "default": false
+                  }
+                },
+                "deprecated": {
+                  "type": "bool",
+                  "id": 3,
+                  "options": {
+                    "default": false
+                  }
+                },
+                "weak": {
+                  "type": "bool",
+                  "id": 10,
+                  "options": {
+                    "default": false
+                  }
+                },
+                "debugRedact": {
+                  "type": "bool",
+                  "id": 16,
+                  "options": {
+                    "default": false
+                  }
+                },
+                "retention": {
+                  "type": "OptionRetention",
+                  "id": 17
+                },
+                "targets": {
+                  "rule": "repeated",
+                  "type": "OptionTargetType",
+                  "id": 19
+                },
+                "editionDefaults": {
+                  "rule": "repeated",
+                  "type": "EditionDefault",
+                  "id": 20
+                },
+                "features": {
+                  "type": "FeatureSet",
+                  "id": 21
+                },
+                "uninterpretedOption": {
+                  "rule": "repeated",
+                  "type": "UninterpretedOption",
+                  "id": 999
+                }
+              },
+              "extensions": [
+                [
+                  1000,
+                  536870911
+                ]
+              ],
+              "reserved": [
+                [
+                  4,
+                  4
+                ],
+                [
+                  18,
+                  18
+                ]
+              ],
+              "nested": {
+                "CType": {
+                  "values": {
+                    "STRING": 0,
+                    "CORD": 1,
+                    "STRING_PIECE": 2
+                  }
+                },
+                "JSType": {
+                  "values": {
+                    "JS_NORMAL": 0,
+                    "JS_STRING": 1,
+                    "JS_NUMBER": 2
+                  }
+                },
+                "OptionRetention": {
+                  "values": {
+                    "RETENTION_UNKNOWN": 0,
+                    "RETENTION_RUNTIME": 1,
+                    "RETENTION_SOURCE": 2
+                  }
+                },
+                "OptionTargetType": {
+                  "values": {
+                    "TARGET_TYPE_UNKNOWN": 0,
+                    "TARGET_TYPE_FILE": 1,
+                    "TARGET_TYPE_EXTENSION_RANGE": 2,
+                    "TARGET_TYPE_MESSAGE": 3,
+                    "TARGET_TYPE_FIELD": 4,
+                    "TARGET_TYPE_ONEOF": 5,
+                    "TARGET_TYPE_ENUM": 6,
+                    "TARGET_TYPE_ENUM_ENTRY": 7,
+                    "TARGET_TYPE_SERVICE": 8,
+                    "TARGET_TYPE_METHOD": 9
+                  }
+                },
+                "EditionDefault": {
+                  "fields": {
+                    "edition": {
+                      "type": "Edition",
+                      "id": 3
+                    },
+                    "value": {
+                      "type": "string",
+                      "id": 2
+                    }
+                  }
+                }
+              }
+            },
+            "OneofOptions": {
+              "edition": "proto2",
+              "fields": {
+                "features": {
+                  "type": "FeatureSet",
+                  "id": 1
+                },
+                "uninterpretedOption": {
+                  "rule": "repeated",
+                  "type": "UninterpretedOption",
+                  "id": 999
+                }
+              },
+              "extensions": [
+                [
+                  1000,
+                  536870911
+                ]
+              ]
+            },
+            "EnumOptions": {
+              "edition": "proto2",
+              "fields": {
+                "allowAlias": {
+                  "type": "bool",
+                  "id": 2
+                },
+                "deprecated": {
+                  "type": "bool",
+                  "id": 3,
+                  "options": {
+                    "default": false
+                  }
+                },
+                "deprecatedLegacyJsonFieldConflicts": {
+                  "type": "bool",
+                  "id": 6,
+                  "options": {
+                    "deprecated": true
+                  }
+                },
+                "features": {
+                  "type": "FeatureSet",
+                  "id": 7
+                },
+                "uninterpretedOption": {
+                  "rule": "repeated",
+                  "type": "UninterpretedOption",
+                  "id": 999
+                }
+              },
+              "extensions": [
+                [
+                  1000,
+                  536870911
+                ]
+              ],
+              "reserved": [
+                [
+                  5,
+                  5
+                ]
+              ]
+            },
+            "EnumValueOptions": {
+              "edition": "proto2",
+              "fields": {
+                "deprecated": {
+                  "type": "bool",
+                  "id": 1,
+                  "options": {
+                    "default": false
+                  }
+                },
+                "features": {
+                  "type": "FeatureSet",
+                  "id": 2
+                },
+                "debugRedact": {
+                  "type": "bool",
+                  "id": 3,
+                  "options": {
+                    "default": false
+                  }
+                },
+                "uninterpretedOption": {
+                  "rule": "repeated",
+                  "type": "UninterpretedOption",
+                  "id": 999
+                }
+              },
+              "extensions": [
+                [
+                  1000,
+                  536870911
+                ]
+              ]
+            },
+            "ServiceOptions": {
+              "edition": "proto2",
+              "fields": {
+                "features": {
+                  "type": "FeatureSet",
+                  "id": 34
+                },
+                "deprecated": {
+                  "type": "bool",
+                  "id": 33,
+                  "options": {
+                    "default": false
+                  }
+                },
+                "uninterpretedOption": {
+                  "rule": "repeated",
+                  "type": "UninterpretedOption",
+                  "id": 999
+                }
+              },
+              "extensions": [
+                [
+                  1000,
+                  536870911
+                ]
+              ]
+            },
+            "MethodOptions": {
+              "edition": "proto2",
+              "fields": {
+                "deprecated": {
+                  "type": "bool",
+                  "id": 33,
+                  "options": {
+                    "default": false
+                  }
+                },
+                "idempotencyLevel": {
+                  "type": "IdempotencyLevel",
+                  "id": 34,
+                  "options": {
+                    "default": "IDEMPOTENCY_UNKNOWN"
+                  }
+                },
+                "features": {
+                  "type": "FeatureSet",
+                  "id": 35
+                },
+                "uninterpretedOption": {
+                  "rule": "repeated",
+                  "type": "UninterpretedOption",
+                  "id": 999
+                }
+              },
+              "extensions": [
+                [
+                  1000,
+                  536870911
+                ]
+              ],
+              "nested": {
+                "IdempotencyLevel": {
+                  "values": {
+                    "IDEMPOTENCY_UNKNOWN": 0,
+                    "NO_SIDE_EFFECTS": 1,
+                    "IDEMPOTENT": 2
+                  }
+                }
+              }
+            },
+            "UninterpretedOption": {
+              "edition": "proto2",
+              "fields": {
+                "name": {
+                  "rule": "repeated",
+                  "type": "NamePart",
+                  "id": 2
+                },
+                "identifierValue": {
+                  "type": "string",
+                  "id": 3
+                },
+                "positiveIntValue": {
+                  "type": "uint64",
+                  "id": 4
+                },
+                "negativeIntValue": {
+                  "type": "int64",
+                  "id": 5
+                },
+                "doubleValue": {
+                  "type": "double",
+                  "id": 6
+                },
+                "stringValue": {
+                  "type": "bytes",
+                  "id": 7
+                },
+                "aggregateValue": {
+                  "type": "string",
+                  "id": 8
+                }
+              },
+              "nested": {
+                "NamePart": {
+                  "fields": {
+                    "namePart": {
+                      "rule": "required",
+                      "type": "string",
+                      "id": 1
+                    },
+                    "isExtension": {
+                      "rule": "required",
+                      "type": "bool",
+                      "id": 2
+                    }
+                  }
+                }
+              }
+            },
+            "FeatureSet": {
+              "edition": "proto2",
+              "fields": {
+                "fieldPresence": {
+                  "type": "FieldPresence",
+                  "id": 1,
+                  "options": {
+                    "retention": "RETENTION_RUNTIME",
+                    "targets": "TARGET_TYPE_FILE",
+                    "edition_defaults.edition": "EDITION_2023",
+                    "edition_defaults.value": "EXPLICIT"
+                  }
+                },
+                "enumType": {
+                  "type": "EnumType",
+                  "id": 2,
+                  "options": {
+                    "retention": "RETENTION_RUNTIME",
+                    "targets": "TARGET_TYPE_FILE",
+                    "edition_defaults.edition": "EDITION_PROTO3",
+                    "edition_defaults.value": "OPEN"
+                  }
+                },
+                "repeatedFieldEncoding": {
+                  "type": "RepeatedFieldEncoding",
+                  "id": 3,
+                  "options": {
+                    "retention": "RETENTION_RUNTIME",
+                    "targets": "TARGET_TYPE_FILE",
+                    "edition_defaults.edition": "EDITION_PROTO3",
+                    "edition_defaults.value": "PACKED"
+                  }
+                },
+                "utf8Validation": {
+                  "type": "Utf8Validation",
+                  "id": 4,
+                  "options": {
+                    "retention": "RETENTION_RUNTIME",
+                    "targets": "TARGET_TYPE_FILE",
+                    "edition_defaults.edition": "EDITION_PROTO3",
+                    "edition_defaults.value": "VERIFY"
+                  }
+                },
+                "messageEncoding": {
+                  "type": "MessageEncoding",
+                  "id": 5,
+                  "options": {
+                    "retention": "RETENTION_RUNTIME",
+                    "targets": "TARGET_TYPE_FILE",
+                    "edition_defaults.edition": "EDITION_PROTO2",
+                    "edition_defaults.value": "LENGTH_PREFIXED"
+                  }
+                },
+                "jsonFormat": {
+                  "type": "JsonFormat",
+                  "id": 6,
+                  "options": {
+                    "retention": "RETENTION_RUNTIME",
+                    "targets": "TARGET_TYPE_FILE",
+                    "edition_defaults.edition": "EDITION_PROTO3",
+                    "edition_defaults.value": "ALLOW"
+                  }
+                }
+              },
+              "extensions": [
+                [
+                  1000,
+                  1000
+                ],
+                [
+                  1001,
+                  1001
+                ],
+                [
+                  1002,
+                  1002
+                ],
+                [
+                  9990,
+                  9990
+                ],
+                [
+                  9995,
+                  9999
+                ],
+                [
+                  10000,
+                  10000
+                ]
+              ],
+              "reserved": [
+                [
+                  999,
+                  999
+                ]
+              ],
+              "nested": {
+                "FieldPresence": {
+                  "values": {
+                    "FIELD_PRESENCE_UNKNOWN": 0,
+                    "EXPLICIT": 1,
+                    "IMPLICIT": 2,
+                    "LEGACY_REQUIRED": 3
+                  }
+                },
+                "EnumType": {
+                  "values": {
+                    "ENUM_TYPE_UNKNOWN": 0,
+                    "OPEN": 1,
+                    "CLOSED": 2
+                  }
+                },
+                "RepeatedFieldEncoding": {
+                  "values": {
+                    "REPEATED_FIELD_ENCODING_UNKNOWN": 0,
+                    "PACKED": 1,
+                    "EXPANDED": 2
+                  }
+                },
+                "Utf8Validation": {
+                  "values": {
+                    "UTF8_VALIDATION_UNKNOWN": 0,
+                    "VERIFY": 2,
+                    "NONE": 3
+                  }
+                },
+                "MessageEncoding": {
+                  "values": {
+                    "MESSAGE_ENCODING_UNKNOWN": 0,
+                    "LENGTH_PREFIXED": 1,
+                    "DELIMITED": 2
+                  }
+                },
+                "JsonFormat": {
+                  "values": {
+                    "JSON_FORMAT_UNKNOWN": 0,
+                    "ALLOW": 1,
+                    "LEGACY_BEST_EFFORT": 2
+                  }
+                }
+              }
+            },
+            "FeatureSetDefaults": {
+              "edition": "proto2",
+              "fields": {
+                "defaults": {
+                  "rule": "repeated",
+                  "type": "FeatureSetEditionDefault",
+                  "id": 1
+                },
+                "minimumEdition": {
+                  "type": "Edition",
+                  "id": 4
+                },
+                "maximumEdition": {
+                  "type": "Edition",
+                  "id": 5
+                }
+              },
+              "nested": {
+                "FeatureSetEditionDefault": {
+                  "fields": {
+                    "edition": {
+                      "type": "Edition",
+                      "id": 3
+                    },
+                    "features": {
+                      "type": "FeatureSet",
+                      "id": 2
+                    }
+                  }
+                }
+              }
+            },
+            "SourceCodeInfo": {
+              "edition": "proto2",
+              "fields": {
+                "location": {
+                  "rule": "repeated",
+                  "type": "Location",
+                  "id": 1
+                }
+              },
+              "nested": {
+                "Location": {
+                  "fields": {
+                    "path": {
+                      "rule": "repeated",
+                      "type": "int32",
+                      "id": 1,
+                      "options": {
+                        "packed": true
+                      }
+                    },
+                    "span": {
+                      "rule": "repeated",
+                      "type": "int32",
+                      "id": 2,
+                      "options": {
+                        "packed": true
+                      }
+                    },
+                    "leadingComments": {
+                      "type": "string",
+                      "id": 3
+                    },
+                    "trailingComments": {
+                      "type": "string",
+                      "id": 4
+                    },
+                    "leadingDetachedComments": {
+                      "rule": "repeated",
+                      "type": "string",
+                      "id": 6
+                    }
+                  }
+                }
+              }
+            },
+            "GeneratedCodeInfo": {
+              "edition": "proto2",
+              "fields": {
+                "annotation": {
+                  "rule": "repeated",
+                  "type": "Annotation",
+                  "id": 1
+                }
+              },
+              "nested": {
+                "Annotation": {
+                  "fields": {
+                    "path": {
+                      "rule": "repeated",
+                      "type": "int32",
+                      "id": 1,
+                      "options": {
+                        "packed": true
+                      }
+                    },
+                    "sourceFile": {
+                      "type": "string",
+                      "id": 2
+                    },
+                    "begin": {
+                      "type": "int32",
+                      "id": 3
+                    },
+                    "end": {
+                      "type": "int32",
+                      "id": 4
+                    },
+                    "semantic": {
+                      "type": "Semantic",
+                      "id": 5
+                    }
+                  },
+                  "nested": {
+                    "Semantic": {
+                      "values": {
+                        "NONE": 0,
+                        "SET": 1,
+                        "ALIAS": 2
+                      }
+                    }
+                  }
+                }
+              }
+            },
+            "Timestamp": {
+              "fields": {
+                "seconds": {
+                  "type": "int64",
+                  "id": 1
+                },
+                "nanos": {
+                  "type": "int32",
+                  "id": 2
+                }
+              }
+            },
+            "Duration": {
+              "fields": {
+                "seconds": {
+                  "type": "int64",
+                  "id": 1
+                },
+                "nanos": {
+                  "type": "int32",
+                  "id": 2
+                }
+              }
+            },
+            "DoubleValue": {
+              "fields": {
+                "value": {
+                  "type": "double",
+                  "id": 1
+                }
+              }
+            },
+            "FloatValue": {
+              "fields": {
+                "value": {
+                  "type": "float",
+                  "id": 1
+                }
+              }
+            },
+            "Int64Value": {
+              "fields": {
+                "value": {
+                  "type": "int64",
+                  "id": 1
+                }
+              }
+            },
+            "UInt64Value": {
+              "fields": {
+                "value": {
+                  "type": "uint64",
+                  "id": 1
+                }
+              }
+            },
+            "Int32Value": {
+              "fields": {
+                "value": {
+                  "type": "int32",
+                  "id": 1
+                }
+              }
+            },
+            "UInt32Value": {
+              "fields": {
+                "value": {
+                  "type": "uint32",
+                  "id": 1
+                }
+              }
+            },
+            "BoolValue": {
+              "fields": {
+                "value": {
+                  "type": "bool",
+                  "id": 1
+                }
+              }
+            },
+            "StringValue": {
+              "fields": {
+                "value": {
+                  "type": "string",
+                  "id": 1
+                }
+              }
+            },
+            "BytesValue": {
+              "fields": {
+                "value": {
+                  "type": "bytes",
+                  "id": 1
+                }
+              }
+            }
+          }
+        },
+        "type": {
+          "options": {
+            "cc_enable_arenas": true,
+            "go_package": "google.golang.org/genproto/googleapis/type/timeofday;timeofday",
+            "java_multiple_files": true,
+            "java_outer_classname": "TimeOfDayProto",
+            "java_package": "com.google.type",
+            "objc_class_prefix": "GTP"
+          },
+          "nested": {
+            "Date": {
+              "fields": {
+                "year": {
+                  "type": "int32",
+                  "id": 1
+                },
+                "month": {
+                  "type": "int32",
+                  "id": 2
+                },
+                "day": {
+                  "type": "int32",
+                  "id": 3
+                }
+              }
+            },
+            "DayOfWeek": {
+              "values": {
+                "DAY_OF_WEEK_UNSPECIFIED": 0,
+                "MONDAY": 1,
+                "TUESDAY": 2,
+                "WEDNESDAY": 3,
+                "THURSDAY": 4,
+                "FRIDAY": 5,
+                "SATURDAY": 6,
+                "SUNDAY": 7
+              }
+            },
+            "TimeOfDay": {
+              "fields": {
+                "hours": {
+                  "type": "int32",
+                  "id": 1
+                },
+                "minutes": {
+                  "type": "int32",
+                  "id": 2
+                },
+                "seconds": {
+                  "type": "int32",
+                  "id": 3
+                },
+                "nanos": {
+                  "type": "int32",
+                  "id": 4
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_fleet.js b/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_fleet.js
new file mode 100644
index 000000000000..ba635b068726
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_fleet.js
@@ -0,0 +1,143 @@
+// Copyright 2026 Google LLC
+//
+// 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
+//
+//     https://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.
+//
+// ** This file is automatically generated by gapic-generator-typescript. **
+// ** https://github.com/googleapis/gapic-generator-typescript **
+// ** All changes to this file may be overwritten. **
+
+
+
+'use strict';
+
+function main(parent) {
+  // [START databasecenter_v1beta_generated_DatabaseCenter_AggregateFleet_async]
+  /**
+   * This snippet has been automatically generated and should be regarded as a code template only.
+   * It will require modifications to work.
+   * It may require correct/in-range values for request initialization.
+   * TODO(developer): Uncomment these variables before running the sample.
+   */
+  /**
+   *  Required. Parent can be a project, a folder, or an organization. The search
+   *  is limited to the resources within the `scope`.
+   *  The allowed values are:
+   *  * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
+   *  * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
+   *  * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
+   *  * organizations/{ORGANIZATION_NUMBER} (e.g.,
+   *  "organizations/123456")
+   */
+  // const parent = 'abc123'
+  /**
+   *  Optional. The expression to filter resources.
+   *  Supported fields are: `full_resource_name`, `resource_type`, `container`,
+   *    `product.type`, `product.engine`, `product.version`, `location`,
+   *    `labels`, `issues`, fields of availability_info, data_protection_info,
+   *    'resource_name', etc.
+   *  The expression is a list of zero or more restrictions combined via logical
+   *  operators `AND` and `OR`. When `AND` and `OR` are both used in the
+   *  expression, parentheses must be appropriately used to group the
+   *  combinations.
+   *  Example: `location="us-east1"`
+   *  Example: `container="projects/123" OR container="projects/456"`
+   *  Example: `(container="projects/123" OR
+   *            container="projects/456") AND location="us-east1"`
+   */
+  // const filter = 'abc123'
+  /**
+   *  Optional. A field that statistics are grouped by.
+   *  Valid values are any combination of the following:
+   *    * container
+   *    * product.type
+   *    * product.engine
+   *    * product.version
+   *    * location
+   *    * sub_resource_type
+   *    * management_type
+   *    * tag.key
+   *    * tag.value
+   *    * tag.source
+   *    * tag.inherited
+   *    * label.key
+   *    * label.value
+   *    * label.source
+   *    * has_maintenance_schedule
+   *    * has_deny_maintenance_schedules
+   *  Comma separated list.
+   */
+  // const groupBy = 'abc123'
+  /**
+   *  Optional. Valid values to order by are:
+   *    * resource_groups_count
+   *    * resources_count
+   *    * and all fields supported by `group_by`
+   *  The default order is ascending. Add "DESC" after the field name to indicate
+   *  descending order. Add "ASC" after the field name to indicate ascending
+   *  order. It supports ordering using multiple fields.
+   *  For example:
+   *   `order_by = "resource_groups_count"` sorts response in ascending order
+   *   `order_by = "resource_groups_count DESC"` sorts response in descending
+   *   order
+   *   `order_by = "product.type, product.version DESC, location"` orders by type
+   *   in ascending order, version in descending order and location in ascending
+   *   order
+   */
+  // const orderBy = 'abc123'
+  /**
+   *  Optional. If unspecified, at most 50 items will be returned.
+   *  The maximum value is 1000; values above 1000 will be coerced to 1000.
+   */
+  // const pageSize = 1234
+  /**
+   *  Optional. A page token, received from a previous `AggregateFleet` call.
+   *  Provide this to retrieve the subsequent page.
+   *  All other parameters should match the parameters in the call that provided
+   *  the page token except for page_size which can be different.
+   */
+  // const pageToken = 'abc123'
+  /**
+   *  Optional. The baseline date w.r.t. which the delta counts are calculated.
+   *  If not set, delta counts are not included in the response and the response
+   *  indicates the current state of the fleet.
+   */
+  // const baselineDate = {}
+
+  // Imports the Databasecenter library
+  const {DatabaseCenterClient} = require('@google-cloud/databasecenter').v1beta;
+
+  // Instantiates a client
+  const databasecenterClient = new DatabaseCenterClient();
+
+  async function callAggregateFleet() {
+    // Construct request
+    const request = {
+      parent,
+    };
+
+    // Run request
+    const iterable = databasecenterClient.aggregateFleetAsync(request);
+    for await (const response of iterable) {
+        console.log(response);
+    }
+  }
+
+  callAggregateFleet();
+  // [END databasecenter_v1beta_generated_DatabaseCenter_AggregateFleet_async]
+}
+
+process.on('unhandledRejection', err => {
+  console.error(err.message);
+  process.exitCode = 1;
+});
+main(...process.argv.slice(2));
diff --git a/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_issue_stats.js b/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_issue_stats.js
new file mode 100644
index 000000000000..866db3df044e
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_issue_stats.js
@@ -0,0 +1,93 @@
+// Copyright 2026 Google LLC
+//
+// 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
+//
+//     https://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.
+//
+// ** This file is automatically generated by gapic-generator-typescript. **
+// ** https://github.com/googleapis/gapic-generator-typescript **
+// ** All changes to this file may be overwritten. **
+
+
+
+'use strict';
+
+function main(parent) {
+  // [START databasecenter_v1beta_generated_DatabaseCenter_AggregateIssueStats_async]
+  /**
+   * This snippet has been automatically generated and should be regarded as a code template only.
+   * It will require modifications to work.
+   * It may require correct/in-range values for request initialization.
+   * TODO(developer): Uncomment these variables before running the sample.
+   */
+  /**
+   *  Required. Parent can be a project, a folder, or an organization. The search
+   *  is limited to the resources within the `scope`.
+   *  The allowed values are:
+   *  * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
+   *  * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
+   *  * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
+   *  * organizations/{ORGANIZATION_NUMBER} (e.g., "organizations/123456")
+   */
+  // const parent = 'abc123'
+  /**
+   *  Optional. The expression to filter resources.
+   *  Supported fields are: `full_resource_name`, `resource_type`, `container`,
+   *    `product.type`, `product.engine`, `product.version`, `location`,
+   *    `labels`, `issues`, fields of availability_info,
+   *    data_protection_info,'resource_name', etc.
+   *  The expression is a list of zero or more restrictions combined via logical
+   *  operators `AND` and `OR`. When `AND` and `OR` are both used in the
+   *  expression, parentheses must be appropriately used to group the
+   *  combinations.
+   *  Example: `location="us-east1"`
+   *  Example: `container="projects/123" OR container="projects/456"`
+   *  Example: `(container="projects/123" OR
+   *            container="projects/456") AND location="us-east1"`
+   */
+  // const filter = 'abc123'
+  /**
+   *  Optional. Lists of signal types that are issues.
+   */
+  // const signalTypeGroups = [1,2,3,4]
+  /**
+   *  Optional. The baseline date w.r.t. which the delta counts are calculated.
+   *  If not set, delta counts are not included in the response and the response
+   *  indicates the current state of the fleet.
+   */
+  // const baselineDate = {}
+
+  // Imports the Databasecenter library
+  const {DatabaseCenterClient} = require('@google-cloud/databasecenter').v1beta;
+
+  // Instantiates a client
+  const databasecenterClient = new DatabaseCenterClient();
+
+  async function callAggregateIssueStats() {
+    // Construct request
+    const request = {
+      parent,
+    };
+
+    // Run request
+    const response = await databasecenterClient.aggregateIssueStats(request);
+    console.log(response);
+  }
+
+  callAggregateIssueStats();
+  // [END databasecenter_v1beta_generated_DatabaseCenter_AggregateIssueStats_async]
+}
+
+process.on('unhandledRejection', err => {
+  console.error(err.message);
+  process.exitCode = 1;
+});
+main(...process.argv.slice(2));
diff --git a/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_database_resource_groups.js b/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_database_resource_groups.js
new file mode 100644
index 000000000000..f6d2a1ced4f3
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_database_resource_groups.js
@@ -0,0 +1,161 @@
+// Copyright 2026 Google LLC
+//
+// 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
+//
+//     https://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.
+//
+// ** This file is automatically generated by gapic-generator-typescript. **
+// ** https://github.com/googleapis/gapic-generator-typescript **
+// ** All changes to this file may be overwritten. **
+
+
+
+'use strict';
+
+function main(parent) {
+  // [START databasecenter_v1beta_generated_DatabaseCenter_QueryDatabaseResourceGroups_async]
+  /**
+   * This snippet has been automatically generated and should be regarded as a code template only.
+   * It will require modifications to work.
+   * It may require correct/in-range values for request initialization.
+   * TODO(developer): Uncomment these variables before running the sample.
+   */
+  /**
+   *  Required. Parent can be a project, a folder, or an organization. The search
+   *  is limited to the resources within the `scope`.
+   *  The allowed values are:
+   *  * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
+   *  * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
+   *  * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
+   *  * organizations/{ORGANIZATION_NUMBER} (e.g., "organizations/123456")
+   */
+  // const parent = 'abc123'
+  /**
+   *  Optional. The expression to filter resources.
+   *  The following fields are filterable:
+   *    * full_resource_name
+   *    * resource_type
+   *    * container
+   *    * product.type
+   *    * product.engine
+   *    * product.version
+   *    * location
+   *    * labels
+   *    * resource_category
+   *    * machine_config.cpu_count
+   *    * machine_config.memory_size_bytes
+   *    * machine_config.shard_count
+   *    * resource_name
+   *    * tags
+   *    * backupdr_config.backupdr_managed
+   *    * edition
+   *  The expression is a list of zero or more restrictions combined via logical
+   *  operators `AND` and `OR`. When `AND` and `OR` are both used in the
+   *  expression, parentheses must be appropriately used to group the
+   *  combinations.
+   *  Example: `location="us-east1"`
+   *  Example: `container="projects/123" OR container="projects/456"`
+   *  Example: `(container="projects/123" OR
+   *            container="projects/456") AND location="us-east1"`
+   *  Example: `full_resource_name=~"test"`
+   *  Example: `full_resource_name=~"test.*master"`
+   */
+  // const filter = 'abc123'
+  /**
+   *  Optional. Groups of signal types that are requested.
+   */
+  // const signalTypeGroups = [1,2,3,4]
+  /**
+   *  Optional. Filters based on signals. The list will be ORed together and then
+   *  ANDed with the `filters` field above.
+   */
+  // const signalFilters = [1,2,3,4]
+  /**
+   *  Optional. A field that specifies the sort order of the results.
+   *  The following fields are sortable:
+   *    * full_resource_name
+   *    * product.type
+   *    * product.engine
+   *    * product.version
+   *    * container
+   *    * issue_count
+   *    * machine_config.vcpu_count
+   *    * machine_config.memory_size_bytes
+   *    * machine_config.shard_count
+   *    * resource_name
+   *    * issue_severity
+   *    * signal_type
+   *    * location
+   *    * resource_type
+   *    * instance_type
+   *    * edition
+   *    * metrics.p99_cpu_utilization
+   *    * metrics.p95_cpu_utilization
+   *    * metrics.current_storage_used_bytes
+   *    * metrics.node_count
+   *    * metrics.processing_unit_count
+   *    * metrics.current_memory_used_bytes
+   *    * metrics.peak_storage_utilization
+   *    * metrics.peak_number_connections
+   *    * metrics.peak_memory_utilization
+   *  The default order is ascending. Add "DESC" after the field name to indicate
+   *  descending order. Add "ASC" after the field name to indicate ascending
+   *  order. It only supports a single field at a time.
+   *  For example:
+   *   `order_by = "full_resource_name"` sorts response in ascending order
+   *   `order_by = "full_resource_name DESC"` sorts response in descending order
+   *   `order_by = "issue_count DESC"` sorts response in descending order of
+   *   count of all issues associated with a resource.
+   *  More explicitly, `order_by = "full_resource_name, product"` is not
+   *  supported.
+   */
+  // const orderBy = 'abc123'
+  /**
+   *  Optional. If unspecified, at most 50 resource groups will be returned.
+   *  The maximum value is 1000; values above 1000 will be coerced to 1000.
+   */
+  // const pageSize = 1234
+  /**
+   *  Optional. A page token, received from a previous
+   *  `QueryDatabaseResourceGroupsRequest` call. Provide this to retrieve the
+   *  subsequent page. All parameters except page_token should match the
+   *  parameters in the call that provided the page page token.
+   */
+  // const pageToken = 'abc123'
+
+  // Imports the Databasecenter library
+  const {DatabaseCenterClient} = require('@google-cloud/databasecenter').v1beta;
+
+  // Instantiates a client
+  const databasecenterClient = new DatabaseCenterClient();
+
+  async function callQueryDatabaseResourceGroups() {
+    // Construct request
+    const request = {
+      parent,
+    };
+
+    // Run request
+    const iterable = databasecenterClient.queryDatabaseResourceGroupsAsync(request);
+    for await (const response of iterable) {
+        console.log(response);
+    }
+  }
+
+  callQueryDatabaseResourceGroups();
+  // [END databasecenter_v1beta_generated_DatabaseCenter_QueryDatabaseResourceGroups_async]
+}
+
+process.on('unhandledRejection', err => {
+  console.error(err.message);
+  process.exitCode = 1;
+});
+main(...process.argv.slice(2));
diff --git a/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_issues.js b/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_issues.js
new file mode 100644
index 000000000000..fb59ebec8913
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_issues.js
@@ -0,0 +1,108 @@
+// Copyright 2026 Google LLC
+//
+// 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
+//
+//     https://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.
+//
+// ** This file is automatically generated by gapic-generator-typescript. **
+// ** https://github.com/googleapis/gapic-generator-typescript **
+// ** All changes to this file may be overwritten. **
+
+
+
+'use strict';
+
+function main(parent) {
+  // [START databasecenter_v1beta_generated_DatabaseCenter_QueryIssues_async]
+  /**
+   * This snippet has been automatically generated and should be regarded as a code template only.
+   * It will require modifications to work.
+   * It may require correct/in-range values for request initialization.
+   * TODO(developer): Uncomment these variables before running the sample.
+   */
+  /**
+   *  Required. Parent can be a project, a folder, or an organization. The list
+   *  is limited to the one attached to resources within the `scope` that a user
+   *  has access to.
+   *  The allowed values are:
+   *  * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
+   *  * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
+   *  * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
+   *  * organizations/{ORGANIZATION_NUMBER} (e.g., "organizations/123456")
+   */
+  // const parent = 'abc123'
+  /**
+   *  Optional.
+   *  Supported fields are:
+   *  'product',
+   *  `location`,
+   *  `issue_severity`,
+   *  'tags',
+   *  'labels',
+   */
+  // const filter = 'abc123'
+  /**
+   *  Optional. Filters based on signal and product. The filter list will be ORed
+   *  across pairs and ANDed within a signal and products pair.
+   */
+  // const signalProductsFilters = [1,2,3,4]
+  /**
+   *  Optional. Following fields are sortable:
+   *  SignalType
+   *  Product
+   *  Location
+   *  IssueSeverity
+   *  The default order is ascending. Add "DESC" after the field name to indicate
+   *  descending order. Add "ASC" after the field name to indicate ascending
+   *  order. It only supports a single field at a time.
+   */
+  // const orderBy = 'abc123'
+  /**
+   *  Optional. If unspecified, at most 50 issues will be returned.
+   *  The maximum value is 1000; values above 1000 will be coerced to 1000.
+   */
+  // const pageSize = 1234
+  /**
+   *  Optional. A page token, received from a previous `QueryIssues` call.
+   *  Provide this to retrieve the subsequent page.
+   *  All parameters except page size should match the parameters used in the
+   *  call that provided the page token.
+   */
+  // const pageToken = 'abc123'
+
+  // Imports the Databasecenter library
+  const {DatabaseCenterClient} = require('@google-cloud/databasecenter').v1beta;
+
+  // Instantiates a client
+  const databasecenterClient = new DatabaseCenterClient();
+
+  async function callQueryIssues() {
+    // Construct request
+    const request = {
+      parent,
+    };
+
+    // Run request
+    const iterable = databasecenterClient.queryIssuesAsync(request);
+    for await (const response of iterable) {
+        console.log(response);
+    }
+  }
+
+  callQueryIssues();
+  // [END databasecenter_v1beta_generated_DatabaseCenter_QueryIssues_async]
+}
+
+process.on('unhandledRejection', err => {
+  console.error(err.message);
+  process.exitCode = 1;
+});
+main(...process.argv.slice(2));
diff --git a/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_products.js b/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_products.js
new file mode 100644
index 000000000000..022d79d85516
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_products.js
@@ -0,0 +1,88 @@
+// Copyright 2026 Google LLC
+//
+// 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
+//
+//     https://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.
+//
+// ** This file is automatically generated by gapic-generator-typescript. **
+// ** https://github.com/googleapis/gapic-generator-typescript **
+// ** All changes to this file may be overwritten. **
+
+
+
+'use strict';
+
+function main(parent) {
+  // [START databasecenter_v1beta_generated_DatabaseCenter_QueryProducts_async]
+  /**
+   * This snippet has been automatically generated and should be regarded as a code template only.
+   * It will require modifications to work.
+   * It may require correct/in-range values for request initialization.
+   * TODO(developer): Uncomment these variables before running the sample.
+   */
+  /**
+   *  Required. Parent can be a project, a folder, or an organization.
+   *  The allowed values are:
+   *  * projects/{PROJECT_ID}/locations/{LOCATION}
+   *  (e.g.,"projects/foo-bar/locations/us-central1")
+   *  * projects/{PROJECT_NUMBER}/locations/{LOCATION}
+   *  (e.g.,"projects/12345678/locations/us-central1")
+   *  * folders/{FOLDER_NUMBER}/locations/{LOCATION}
+   *  (e.g.,"folders/1234567/locations/us-central1")
+   *  * organizations/{ORGANIZATION_NUMBER}/locations/{LOCATION}
+   *  (e.g.,"organizations/123456/locations/us-central1")
+   *  * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
+   *  * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
+   *  * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
+   *  * organizations/{ORGANIZATION_NUMBER} (e.g., "organizations/123456")
+   */
+  // const parent = 'abc123'
+  /**
+   *  Optional. If unspecified, at most 50 products will be returned.
+   *  The maximum value is 1000; values above 1000 will be coerced to 1000.
+   */
+  // const pageSize = 1234
+  /**
+   *  Optional. A page token, received from a previous `ListLocations` call.
+   *  Provide this to retrieve the subsequent page.
+   *  All other parameters except page size should match the call that provided
+   *  the page page token.
+   */
+  // const pageToken = 'abc123'
+
+  // Imports the Databasecenter library
+  const {DatabaseCenterClient} = require('@google-cloud/databasecenter').v1beta;
+
+  // Instantiates a client
+  const databasecenterClient = new DatabaseCenterClient();
+
+  async function callQueryProducts() {
+    // Construct request
+    const request = {
+      parent,
+    };
+
+    // Run request
+    const iterable = databasecenterClient.queryProductsAsync(request);
+    for await (const response of iterable) {
+        console.log(response);
+    }
+  }
+
+  callQueryProducts();
+  // [END databasecenter_v1beta_generated_DatabaseCenter_QueryProducts_async]
+}
+
+process.on('unhandledRejection', err => {
+  console.error(err.message);
+  process.exitCode = 1;
+});
+main(...process.argv.slice(2));
diff --git a/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/snippet_metadata_google.cloud.databasecenter.v1beta.json b/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/snippet_metadata_google.cloud.databasecenter.v1beta.json
new file mode 100644
index 000000000000..9df12116e6d3
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/snippet_metadata_google.cloud.databasecenter.v1beta.json
@@ -0,0 +1,303 @@
+{
+  "clientLibrary": {
+    "name": "nodejs-databasecenter",
+    "version": "0.1.0",
+    "language": "TYPESCRIPT",
+    "apis": [
+      {
+        "id": "google.cloud.databasecenter.v1beta",
+        "version": "v1beta"
+      }
+    ]
+  },
+  "snippets": [
+    {
+      "regionTag": "databasecenter_v1beta_generated_DatabaseCenter_QueryProducts_async",
+      "title": "DatabaseCenter queryProducts Sample",
+      "origin": "API_DEFINITION",
+      "description": " QueryProducts provides a list of all possible products which can be used to filter database resources.",
+      "canonical": true,
+      "file": "database_center.query_products.js",
+      "language": "JAVASCRIPT",
+      "segments": [
+        {
+          "start": 25,
+          "end": 80,
+          "type": "FULL"
+        }
+      ],
+      "clientMethod": {
+        "shortName": "QueryProducts",
+        "fullName": "google.cloud.databasecenter.v1beta.DatabaseCenter.QueryProducts",
+        "async": true,
+        "parameters": [
+          {
+            "name": "parent",
+            "type": "TYPE_STRING"
+          },
+          {
+            "name": "page_size",
+            "type": "TYPE_INT32"
+          },
+          {
+            "name": "page_token",
+            "type": "TYPE_STRING"
+          }
+        ],
+        "resultType": ".google.cloud.databasecenter.v1beta.QueryProductsResponse",
+        "client": {
+          "shortName": "DatabaseCenterClient",
+          "fullName": "google.cloud.databasecenter.v1beta.DatabaseCenterClient"
+        },
+        "method": {
+          "shortName": "QueryProducts",
+          "fullName": "google.cloud.databasecenter.v1beta.DatabaseCenter.QueryProducts",
+          "service": {
+            "shortName": "DatabaseCenter",
+            "fullName": "google.cloud.databasecenter.v1beta.DatabaseCenter"
+          }
+        }
+      }
+    },
+    {
+      "regionTag": "databasecenter_v1beta_generated_DatabaseCenter_AggregateFleet_async",
+      "title": "DatabaseCenter aggregateFleet Sample",
+      "origin": "API_DEFINITION",
+      "description": " AggregateFleet provides statistics about the fleet grouped by various fields.",
+      "canonical": true,
+      "file": "database_center.aggregate_fleet.js",
+      "language": "JAVASCRIPT",
+      "segments": [
+        {
+          "start": 25,
+          "end": 135,
+          "type": "FULL"
+        }
+      ],
+      "clientMethod": {
+        "shortName": "AggregateFleet",
+        "fullName": "google.cloud.databasecenter.v1beta.DatabaseCenter.AggregateFleet",
+        "async": true,
+        "parameters": [
+          {
+            "name": "parent",
+            "type": "TYPE_STRING"
+          },
+          {
+            "name": "filter",
+            "type": "TYPE_STRING"
+          },
+          {
+            "name": "group_by",
+            "type": "TYPE_STRING"
+          },
+          {
+            "name": "order_by",
+            "type": "TYPE_STRING"
+          },
+          {
+            "name": "page_size",
+            "type": "TYPE_INT32"
+          },
+          {
+            "name": "page_token",
+            "type": "TYPE_STRING"
+          },
+          {
+            "name": "baseline_date",
+            "type": ".google.type.Date"
+          }
+        ],
+        "resultType": ".google.cloud.databasecenter.v1beta.AggregateFleetResponse",
+        "client": {
+          "shortName": "DatabaseCenterClient",
+          "fullName": "google.cloud.databasecenter.v1beta.DatabaseCenterClient"
+        },
+        "method": {
+          "shortName": "AggregateFleet",
+          "fullName": "google.cloud.databasecenter.v1beta.DatabaseCenter.AggregateFleet",
+          "service": {
+            "shortName": "DatabaseCenter",
+            "fullName": "google.cloud.databasecenter.v1beta.DatabaseCenter"
+          }
+        }
+      }
+    },
+    {
+      "regionTag": "databasecenter_v1beta_generated_DatabaseCenter_QueryDatabaseResourceGroups_async",
+      "title": "DatabaseCenter queryDatabaseResourceGroups Sample",
+      "origin": "API_DEFINITION",
+      "description": " QueryDatabaseResourceGroups returns paginated results of database groups.",
+      "canonical": true,
+      "file": "database_center.query_database_resource_groups.js",
+      "language": "JAVASCRIPT",
+      "segments": [
+        {
+          "start": 25,
+          "end": 153,
+          "type": "FULL"
+        }
+      ],
+      "clientMethod": {
+        "shortName": "QueryDatabaseResourceGroups",
+        "fullName": "google.cloud.databasecenter.v1beta.DatabaseCenter.QueryDatabaseResourceGroups",
+        "async": true,
+        "parameters": [
+          {
+            "name": "parent",
+            "type": "TYPE_STRING"
+          },
+          {
+            "name": "filter",
+            "type": "TYPE_STRING"
+          },
+          {
+            "name": "signal_type_groups",
+            "type": "TYPE_MESSAGE[]"
+          },
+          {
+            "name": "signal_filters",
+            "type": "TYPE_MESSAGE[]"
+          },
+          {
+            "name": "order_by",
+            "type": "TYPE_STRING"
+          },
+          {
+            "name": "page_size",
+            "type": "TYPE_INT32"
+          },
+          {
+            "name": "page_token",
+            "type": "TYPE_STRING"
+          }
+        ],
+        "resultType": ".google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse",
+        "client": {
+          "shortName": "DatabaseCenterClient",
+          "fullName": "google.cloud.databasecenter.v1beta.DatabaseCenterClient"
+        },
+        "method": {
+          "shortName": "QueryDatabaseResourceGroups",
+          "fullName": "google.cloud.databasecenter.v1beta.DatabaseCenter.QueryDatabaseResourceGroups",
+          "service": {
+            "shortName": "DatabaseCenter",
+            "fullName": "google.cloud.databasecenter.v1beta.DatabaseCenter"
+          }
+        }
+      }
+    },
+    {
+      "regionTag": "databasecenter_v1beta_generated_DatabaseCenter_AggregateIssueStats_async",
+      "title": "DatabaseCenter aggregateIssueStats Sample",
+      "origin": "API_DEFINITION",
+      "description": " AggregateIssueStats provides database resource issues statistics.",
+      "canonical": true,
+      "file": "database_center.aggregate_issue_stats.js",
+      "language": "JAVASCRIPT",
+      "segments": [
+        {
+          "start": 25,
+          "end": 85,
+          "type": "FULL"
+        }
+      ],
+      "clientMethod": {
+        "shortName": "AggregateIssueStats",
+        "fullName": "google.cloud.databasecenter.v1beta.DatabaseCenter.AggregateIssueStats",
+        "async": true,
+        "parameters": [
+          {
+            "name": "parent",
+            "type": "TYPE_STRING"
+          },
+          {
+            "name": "filter",
+            "type": "TYPE_STRING"
+          },
+          {
+            "name": "signal_type_groups",
+            "type": "TYPE_MESSAGE[]"
+          },
+          {
+            "name": "baseline_date",
+            "type": ".google.type.Date"
+          }
+        ],
+        "resultType": ".google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse",
+        "client": {
+          "shortName": "DatabaseCenterClient",
+          "fullName": "google.cloud.databasecenter.v1beta.DatabaseCenterClient"
+        },
+        "method": {
+          "shortName": "AggregateIssueStats",
+          "fullName": "google.cloud.databasecenter.v1beta.DatabaseCenter.AggregateIssueStats",
+          "service": {
+            "shortName": "DatabaseCenter",
+            "fullName": "google.cloud.databasecenter.v1beta.DatabaseCenter"
+          }
+        }
+      }
+    },
+    {
+      "regionTag": "databasecenter_v1beta_generated_DatabaseCenter_QueryIssues_async",
+      "title": "DatabaseCenter queryIssues Sample",
+      "origin": "API_DEFINITION",
+      "description": " QueryIssues provides a list of issues and recommendations that a user has access to and that are within the requested scope.",
+      "canonical": true,
+      "file": "database_center.query_issues.js",
+      "language": "JAVASCRIPT",
+      "segments": [
+        {
+          "start": 25,
+          "end": 100,
+          "type": "FULL"
+        }
+      ],
+      "clientMethod": {
+        "shortName": "QueryIssues",
+        "fullName": "google.cloud.databasecenter.v1beta.DatabaseCenter.QueryIssues",
+        "async": true,
+        "parameters": [
+          {
+            "name": "parent",
+            "type": "TYPE_STRING"
+          },
+          {
+            "name": "filter",
+            "type": "TYPE_STRING"
+          },
+          {
+            "name": "signal_products_filters",
+            "type": "TYPE_MESSAGE[]"
+          },
+          {
+            "name": "order_by",
+            "type": "TYPE_STRING"
+          },
+          {
+            "name": "page_size",
+            "type": "TYPE_INT32"
+          },
+          {
+            "name": "page_token",
+            "type": "TYPE_STRING"
+          }
+        ],
+        "resultType": ".google.cloud.databasecenter.v1beta.QueryIssuesResponse",
+        "client": {
+          "shortName": "DatabaseCenterClient",
+          "fullName": "google.cloud.databasecenter.v1beta.DatabaseCenterClient"
+        },
+        "method": {
+          "shortName": "QueryIssues",
+          "fullName": "google.cloud.databasecenter.v1beta.DatabaseCenter.QueryIssues",
+          "service": {
+            "shortName": "DatabaseCenter",
+            "fullName": "google.cloud.databasecenter.v1beta.DatabaseCenter"
+          }
+        }
+      }
+    }
+  ]
+}
diff --git a/owl-bot-staging/google-cloud-databasecenter/src/index.ts b/owl-bot-staging/google-cloud-databasecenter/src/index.ts
new file mode 100644
index 000000000000..f9d35119b947
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/src/index.ts
@@ -0,0 +1,27 @@
+// Copyright 2025 Google LLC
+//
+// 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
+//
+//     https://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.
+//
+// ** This file is automatically generated by synthtool. **
+// ** https://github.com/googleapis/synthtool **
+// ** All changes to this file may be overwritten. **
+
+import * as v1beta from './v1beta';
+
+const DatabaseCenterClient = v1beta.DatabaseCenterClient;
+type DatabaseCenterClient = v1beta.DatabaseCenterClient;
+
+export {v1beta, DatabaseCenterClient};
+export default {v1beta, DatabaseCenterClient};
+import * as protos from '../protos/protos';
+export {protos};
diff --git a/owl-bot-staging/google-cloud-databasecenter/src/v1beta/database_center_client.ts b/owl-bot-staging/google-cloud-databasecenter/src/v1beta/database_center_client.ts
new file mode 100644
index 000000000000..19b5cbeec0ee
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/src/v1beta/database_center_client.ts
@@ -0,0 +1,1819 @@
+// Copyright 2026 Google LLC
+//
+// 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
+//
+//     https://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.
+//
+// ** This file is automatically generated by gapic-generator-typescript. **
+// ** https://github.com/googleapis/gapic-generator-typescript **
+// ** All changes to this file may be overwritten. **
+
+/* global window */
+import type * as gax from 'google-gax';
+import type {Callback, CallOptions, Descriptors, ClientOptions, PaginationCallback, GaxCall} from 'google-gax';
+import {Transform} from 'stream';
+import * as protos from '../../protos/protos';
+import jsonProtos = require('../../protos/protos.json');
+import {loggingUtils as logging, decodeAnyProtosInArray} from 'google-gax';
+
+/**
+ * Client JSON configuration object, loaded from
+ * `src/v1beta/database_center_client_config.json`.
+ * This file defines retry strategy and timeouts for all API methods in this library.
+ */
+import * as gapicConfig from './database_center_client_config.json';
+const version = require('../../../package.json').version;
+
+/**
+ *  DatabaseCenter contains methods to query fleet view for database resources.
+ * @class
+ * @memberof v1beta
+ */
+export class DatabaseCenterClient {
+  private _terminated = false;
+  private _opts: ClientOptions;
+  private _providedCustomServicePath: boolean;
+  private _gaxModule: typeof gax | typeof gax.fallback;
+  private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient;
+  private _protos: {};
+  private _defaults: {[method: string]: gax.CallSettings};
+  private _universeDomain: string;
+  private _servicePath: string;
+  private _log = logging.log('databasecenter');
+
+  auth: gax.GoogleAuth;
+  descriptors: Descriptors = {
+    page: {},
+    stream: {},
+    longrunning: {},
+    batching: {},
+  };
+  warn: (code: string, message: string, warnType?: string) => void;
+  innerApiCalls: {[name: string]: Function};
+  databaseCenterStub?: Promise<{[name: string]: Function}>;
+
+  /**
+   * Construct an instance of DatabaseCenterClient.
+   *
+   * @param {object} [options] - The configuration object.
+   * The options accepted by the constructor are described in detail
+   * in [this document](https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md#creating-the-client-instance).
+   * The common options are:
+   * @param {object} [options.credentials] - Credentials object.
+   * @param {string} [options.credentials.client_email]
+   * @param {string} [options.credentials.private_key]
+   * @param {string} [options.email] - Account email address. Required when
+   *     using a .pem or .p12 keyFilename.
+   * @param {string} [options.keyFilename] - Full path to the a .json, .pem, or
+   *     .p12 key downloaded from the Google Developers Console. If you provide
+   *     a path to a JSON file, the projectId option below is not necessary.
+   *     NOTE: .pem and .p12 require you to specify options.email as well.
+   * @param {number} [options.port] - The port on which to connect to
+   *     the remote host.
+   * @param {string} [options.projectId] - The project ID from the Google
+   *     Developer's Console, e.g. 'grape-spaceship-123'. We will also check
+   *     the environment variable GCLOUD_PROJECT for your project ID. If your
+   *     app is running in an environment which supports
+   *     {@link https://cloud.google.com/docs/authentication/application-default-credentials Application Default Credentials},
+   *     your project ID will be detected automatically.
+   * @param {string} [options.apiEndpoint] - The domain name of the
+   *     API remote host.
+   * @param {gax.ClientConfig} [options.clientConfig] - Client configuration override.
+   *     Follows the structure of {@link gapicConfig}.
+   * @param {boolean} [options.fallback] - Use HTTP/1.1 REST mode.
+   *     For more information, please check the
+   *     {@link https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md#http11-rest-api-mode documentation}.
+   * @param {gax} [gaxInstance]: loaded instance of `google-gax`. Useful if you
+   *     need to avoid loading the default gRPC version and want to use the fallback
+   *     HTTP implementation. Load only fallback version and pass it to the constructor:
+   *     ```
+   *     const gax = require('google-gax/build/src/fallback'); // avoids loading google-gax with gRPC
+   *     const client = new DatabaseCenterClient({fallback: true}, gax);
+   *     ```
+   */
+  constructor(opts?: ClientOptions, gaxInstance?: typeof gax | typeof gax.fallback) {
+    // Ensure that options include all the required fields.
+    const staticMembers = this.constructor as typeof DatabaseCenterClient;
+    if (opts?.universe_domain && opts?.universeDomain && opts?.universe_domain !== opts?.universeDomain) {
+      throw new Error('Please set either universe_domain or universeDomain, but not both.');
+    }
+    const universeDomainEnvVar = (typeof process === 'object' && typeof process.env === 'object') ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] : undefined;
+    this._universeDomain = opts?.universeDomain ?? opts?.universe_domain ?? universeDomainEnvVar ?? 'googleapis.com';
+    this._servicePath = 'databasecenter.' + this._universeDomain;
+    const servicePath = opts?.servicePath || opts?.apiEndpoint || this._servicePath;
+    this._providedCustomServicePath = !!(opts?.servicePath || opts?.apiEndpoint);
+    const port = opts?.port || staticMembers.port;
+    const clientConfig = opts?.clientConfig ?? {};
+    const fallback = opts?.fallback ?? (typeof window !== 'undefined' && typeof window?.fetch === 'function');
+    opts = Object.assign({servicePath, port, clientConfig, fallback}, opts);
+
+    // Request numeric enum values if REST transport is used.
+    opts.numericEnums = true;
+
+    // If scopes are unset in options and we're connecting to a non-default endpoint, set scopes just in case.
+    if (servicePath !== this._servicePath && !('scopes' in opts)) {
+      opts['scopes'] = staticMembers.scopes;
+    }
+
+    // Load google-gax module synchronously if needed
+    if (!gaxInstance) {
+      gaxInstance = require('google-gax') as typeof gax;
+    }
+
+    // Choose either gRPC or proto-over-HTTP implementation of google-gax.
+    this._gaxModule = opts.fallback ? gaxInstance.fallback : gaxInstance;
+
+    // Create a `gaxGrpc` object, with any grpc-specific options sent to the client.
+    this._gaxGrpc = new this._gaxModule.GrpcClient(opts);
+
+    // Save options to use in initialize() method.
+    this._opts = opts;
+
+    // Save the auth object to the client, for use by other methods.
+    this.auth = (this._gaxGrpc.auth as gax.GoogleAuth);
+
+    // Set useJWTAccessWithScope on the auth object.
+    this.auth.useJWTAccessWithScope = true;
+
+    // Set defaultServicePath on the auth object.
+    this.auth.defaultServicePath = this._servicePath;
+
+    // Set the default scopes in auth client if needed.
+    if (servicePath === this._servicePath) {
+      this.auth.defaultScopes = staticMembers.scopes;
+    }
+
+    // Determine the client header string.
+    const clientHeader = [
+      `gax/${this._gaxModule.version}`,
+      `gapic/${version}`,
+    ];
+    if (typeof process === 'object' && 'versions' in process) {
+      clientHeader.push(`gl-node/${process.versions.node}`);
+    } else {
+      clientHeader.push(`gl-web/${this._gaxModule.version}`);
+    }
+    if (!opts.fallback) {
+      clientHeader.push(`grpc/${this._gaxGrpc.grpcVersion}`);
+    } else {
+      clientHeader.push(`rest/${this._gaxGrpc.grpcVersion}`);
+    }
+    if (opts.libName && opts.libVersion) {
+      clientHeader.push(`${opts.libName}/${opts.libVersion}`);
+    }
+    // Load the applicable protos.
+    this._protos = this._gaxGrpc.loadProtoJSON(jsonProtos);
+
+    // Some of the methods on this service return "paged" results,
+    // (e.g. 50 results at a time, with tokens to get subsequent
+    // pages). Denote the keys used for pagination and results.
+    this.descriptors.page = {
+      queryProducts:
+          new this._gaxModule.PageDescriptor('pageToken', 'nextPageToken', 'products'),
+      aggregateFleet:
+          new this._gaxModule.PageDescriptor('pageToken', 'nextPageToken', 'rows'),
+      queryDatabaseResourceGroups:
+          new this._gaxModule.PageDescriptor('pageToken', 'nextPageToken', 'resourceGroups'),
+      queryIssues:
+          new this._gaxModule.PageDescriptor('pageToken', 'nextPageToken', 'resourceIssues')
+    };
+
+    // Put together the default options sent with requests.
+    this._defaults = this._gaxGrpc.constructSettings(
+        'google.cloud.databasecenter.v1beta.DatabaseCenter', gapicConfig as gax.ClientConfig,
+        opts.clientConfig || {}, {'x-goog-api-client': clientHeader.join(' ')});
+
+    // Set up a dictionary of "inner API calls"; the core implementation
+    // of calling the API is handled in `google-gax`, with this code
+    // merely providing the destination and request information.
+    this.innerApiCalls = {};
+
+    // Add a warn function to the client constructor so it can be easily tested.
+    this.warn = this._gaxModule.warn;
+  }
+
+  /**
+   * Initialize the client.
+   * Performs asynchronous operations (such as authentication) and prepares the client.
+   * This function will be called automatically when any class method is called for the
+   * first time, but if you need to initialize it before calling an actual method,
+   * feel free to call initialize() directly.
+   *
+   * You can await on this method if you want to make sure the client is initialized.
+   *
+   * @returns {Promise} A promise that resolves to an authenticated service stub.
+   */
+  initialize() {
+    // If the client stub promise is already initialized, return immediately.
+    if (this.databaseCenterStub) {
+      return this.databaseCenterStub;
+    }
+
+    // Put together the "service stub" for
+    // google.cloud.databasecenter.v1beta.DatabaseCenter.
+    this.databaseCenterStub = this._gaxGrpc.createStub(
+        this._opts.fallback ?
+          (this._protos as protobuf.Root).lookupService('google.cloud.databasecenter.v1beta.DatabaseCenter') :
+          // eslint-disable-next-line @typescript-eslint/no-explicit-any
+          (this._protos as any).google.cloud.databasecenter.v1beta.DatabaseCenter,
+        this._opts, this._providedCustomServicePath) as Promise<{[method: string]: Function}>;
+
+    // Iterate over each of the methods that the service provides
+    // and create an API call method for each.
+    const databaseCenterStubMethods =
+        ['queryProducts', 'aggregateFleet', 'queryDatabaseResourceGroups', 'aggregateIssueStats', 'queryIssues'];
+    for (const methodName of databaseCenterStubMethods) {
+      const callPromise = this.databaseCenterStub.then(
+        stub => (...args: Array<{}>) => {
+          if (this._terminated) {
+            return Promise.reject('The client has already been closed.');
+          }
+          const func = stub[methodName];
+          return func.apply(stub, args);
+        },
+        (err: Error|null|undefined) => () => {
+          throw err;
+        });
+
+      const descriptor =
+        this.descriptors.page[methodName] ||
+        undefined;
+      const apiCall = this._gaxModule.createApiCall(
+        callPromise,
+        this._defaults[methodName],
+        descriptor,
+        this._opts.fallback
+      );
+
+      this.innerApiCalls[methodName] = apiCall;
+    }
+
+    return this.databaseCenterStub;
+  }
+
+  /**
+   * The DNS address for this API service.
+   * @deprecated Use the apiEndpoint method of the client instance.
+   * @returns {string} The DNS address for this service.
+   */
+  static get servicePath() {
+    if (typeof process === 'object' && typeof process.emitWarning === 'function') {
+      process.emitWarning('Static servicePath is deprecated, please use the instance method instead.', 'DeprecationWarning');
+    }
+    return 'databasecenter.googleapis.com';
+  }
+
+  /**
+   * The DNS address for this API service - same as servicePath.
+   * @deprecated Use the apiEndpoint method of the client instance.
+   * @returns {string} The DNS address for this service.
+   */
+  static get apiEndpoint() {
+    if (typeof process === 'object' && typeof process.emitWarning === 'function') {
+      process.emitWarning('Static apiEndpoint is deprecated, please use the instance method instead.', 'DeprecationWarning');
+    }
+    return 'databasecenter.googleapis.com';
+  }
+
+  /**
+   * The DNS address for this API service.
+   * @returns {string} The DNS address for this service.
+   */
+  get apiEndpoint() {
+    return this._servicePath;
+  }
+
+  get universeDomain() {
+    return this._universeDomain;
+  }
+
+  /**
+   * The port for this API service.
+   * @returns {number} The default port for this service.
+   */
+  static get port() {
+    return 443;
+  }
+
+  /**
+   * The scopes needed to make gRPC calls for every method defined
+   * in this service.
+   * @returns {string[]} List of default scopes.
+   */
+  static get scopes() {
+    return [
+      'https://www.googleapis.com/auth/cloud-platform'
+    ];
+  }
+
+  getProjectId(): Promise<string>;
+  getProjectId(callback: Callback<string, undefined, undefined>): void;
+  /**
+   * Return the project ID used by this class.
+   * @returns {Promise} A promise that resolves to string containing the project ID.
+   */
+  getProjectId(callback?: Callback<string, undefined, undefined>):
+      Promise<string>|void {
+    if (callback) {
+      this.auth.getProjectId(callback);
+      return;
+    }
+    return this.auth.getProjectId();
+  }
+
+  // -------------------
+  // -- Service calls --
+  // -------------------
+/**
+ * AggregateIssueStats provides database resource issues statistics.
+ *
+ * @param {Object} request
+ *   The request object that will be sent.
+ * @param {string} request.parent
+ *   Required. Parent can be a project, a folder, or an organization. The search
+ *   is limited to the resources within the `scope`.
+ *
+ *   The allowed values are:
+ *
+ *   * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
+ *   * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
+ *   * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
+ *   * organizations/{ORGANIZATION_NUMBER} (e.g., "organizations/123456")
+ * @param {string} [request.filter]
+ *   Optional. The expression to filter resources.
+ *
+ *   Supported fields are: `full_resource_name`, `resource_type`, `container`,
+ *     `product.type`, `product.engine`, `product.version`, `location`,
+ *     `labels`, `issues`, fields of availability_info,
+ *     data_protection_info,'resource_name', etc.
+ *
+ *   The expression is a list of zero or more restrictions combined via logical
+ *   operators `AND` and `OR`. When `AND` and `OR` are both used in the
+ *   expression, parentheses must be appropriately used to group the
+ *   combinations.
+ *
+ *   Example: `location="us-east1"`
+ *   Example: `container="projects/123" OR container="projects/456"`
+ *   Example: `(container="projects/123" OR
+ *             container="projects/456") AND location="us-east1"`
+ * @param {number[]} [request.signalTypeGroups]
+ *   Optional. Lists of signal types that are issues.
+ * @param {google.type.Date} [request.baselineDate]
+ *   Optional. The baseline date w.r.t. which the delta counts are calculated.
+ *   If not set, delta counts are not included in the response and the response
+ *   indicates the current state of the fleet.
+ * @param {object} [options]
+ *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+ * @returns {Promise} - The promise which resolves to an array.
+ *   The first element of the array is an object representing {@link protos.google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse|AggregateIssueStatsResponse}.
+ *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+ *   for more details and examples.
+ * @example <caption>include:samples/generated/v1beta/database_center.aggregate_issue_stats.js</caption>
+ * region_tag:databasecenter_v1beta_generated_DatabaseCenter_AggregateIssueStats_async
+ */
+  aggregateIssueStats(
+      request?: protos.google.cloud.databasecenter.v1beta.IAggregateIssueStatsRequest,
+      options?: CallOptions):
+      Promise<[
+        protos.google.cloud.databasecenter.v1beta.IAggregateIssueStatsResponse,
+        protos.google.cloud.databasecenter.v1beta.IAggregateIssueStatsRequest|undefined, {}|undefined
+      ]>;
+  aggregateIssueStats(
+      request: protos.google.cloud.databasecenter.v1beta.IAggregateIssueStatsRequest,
+      options: CallOptions,
+      callback: Callback<
+          protos.google.cloud.databasecenter.v1beta.IAggregateIssueStatsResponse,
+          protos.google.cloud.databasecenter.v1beta.IAggregateIssueStatsRequest|null|undefined,
+          {}|null|undefined>): void;
+  aggregateIssueStats(
+      request: protos.google.cloud.databasecenter.v1beta.IAggregateIssueStatsRequest,
+      callback: Callback<
+          protos.google.cloud.databasecenter.v1beta.IAggregateIssueStatsResponse,
+          protos.google.cloud.databasecenter.v1beta.IAggregateIssueStatsRequest|null|undefined,
+          {}|null|undefined>): void;
+  aggregateIssueStats(
+      request?: protos.google.cloud.databasecenter.v1beta.IAggregateIssueStatsRequest,
+      optionsOrCallback?: CallOptions|Callback<
+          protos.google.cloud.databasecenter.v1beta.IAggregateIssueStatsResponse,
+          protos.google.cloud.databasecenter.v1beta.IAggregateIssueStatsRequest|null|undefined,
+          {}|null|undefined>,
+      callback?: Callback<
+          protos.google.cloud.databasecenter.v1beta.IAggregateIssueStatsResponse,
+          protos.google.cloud.databasecenter.v1beta.IAggregateIssueStatsRequest|null|undefined,
+          {}|null|undefined>):
+      Promise<[
+        protos.google.cloud.databasecenter.v1beta.IAggregateIssueStatsResponse,
+        protos.google.cloud.databasecenter.v1beta.IAggregateIssueStatsRequest|undefined, {}|undefined
+      ]>|void {
+    request = request || {};
+    let options: CallOptions;
+    if (typeof optionsOrCallback === 'function' && callback === undefined) {
+      callback = optionsOrCallback;
+      options = {};
+    }
+    else {
+      options = optionsOrCallback as CallOptions;
+    }
+    options = options || {};
+    options.otherArgs = options.otherArgs || {};
+    options.otherArgs.headers = options.otherArgs.headers || {};
+    this.initialize().catch(err => {throw err});
+    this._log.info('aggregateIssueStats request %j', request);
+    const wrappedCallback: Callback<
+        protos.google.cloud.databasecenter.v1beta.IAggregateIssueStatsResponse,
+        protos.google.cloud.databasecenter.v1beta.IAggregateIssueStatsRequest|null|undefined,
+        {}|null|undefined>|undefined = callback
+      ? (error, response, options, rawResponse) => {
+          this._log.info('aggregateIssueStats response %j', response);
+          callback!(error, response, options, rawResponse); // We verified callback above.
+        }
+      : undefined;
+    return this.innerApiCalls.aggregateIssueStats(request, options, wrappedCallback)
+      ?.then(([response, options, rawResponse]: [
+        protos.google.cloud.databasecenter.v1beta.IAggregateIssueStatsResponse,
+        protos.google.cloud.databasecenter.v1beta.IAggregateIssueStatsRequest|undefined,
+        {}|undefined
+      ]) => {
+        this._log.info('aggregateIssueStats response %j', response);
+        return [response, options, rawResponse];
+      }).catch((error: any) => {
+        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+        }
+        throw error;
+      });
+  }
+
+ /**
+ * QueryProducts provides a list of all possible products which can be used to
+ * filter database resources.
+ *
+ * @param {Object} request
+ *   The request object that will be sent.
+ * @param {string} request.parent
+ *   Required. Parent can be a project, a folder, or an organization.
+ *
+ *   The allowed values are:
+ *
+ *   * projects/{PROJECT_ID}/locations/{LOCATION}
+ *   (e.g.,"projects/foo-bar/locations/us-central1")
+ *   * projects/{PROJECT_NUMBER}/locations/{LOCATION}
+ *   (e.g.,"projects/12345678/locations/us-central1")
+ *   * folders/{FOLDER_NUMBER}/locations/{LOCATION}
+ *   (e.g.,"folders/1234567/locations/us-central1")
+ *   * organizations/{ORGANIZATION_NUMBER}/locations/{LOCATION}
+ *   (e.g.,"organizations/123456/locations/us-central1")
+ *   * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
+ *   * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
+ *   * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
+ *   * organizations/{ORGANIZATION_NUMBER} (e.g., "organizations/123456")
+ * @param {number} [request.pageSize]
+ *   Optional. If unspecified, at most 50 products will be returned.
+ *   The maximum value is 1000; values above 1000 will be coerced to 1000.
+ * @param {string} [request.pageToken]
+ *   Optional. A page token, received from a previous `ListLocations` call.
+ *   Provide this to retrieve the subsequent page.
+ *   All other parameters except page size should match the call that provided
+ *   the page page token.
+ * @param {object} [options]
+ *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+ * @returns {Promise} - The promise which resolves to an array.
+ *   The first element of the array is Array of {@link protos.google.cloud.databasecenter.v1beta.Product|Product}.
+ *   The client library will perform auto-pagination by default: it will call the API as many
+ *   times as needed and will merge results from all the pages into this array.
+ *   Note that it can affect your quota.
+ *   We recommend using `queryProductsAsync()`
+ *   method described below for async iteration which you can stop as needed.
+ *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+ *   for more details and examples.
+ */
+  queryProducts(
+      request?: protos.google.cloud.databasecenter.v1beta.IQueryProductsRequest,
+      options?: CallOptions):
+      Promise<[
+        protos.google.cloud.databasecenter.v1beta.IProduct[],
+        protos.google.cloud.databasecenter.v1beta.IQueryProductsRequest|null,
+        protos.google.cloud.databasecenter.v1beta.IQueryProductsResponse
+      ]>;
+  queryProducts(
+      request: protos.google.cloud.databasecenter.v1beta.IQueryProductsRequest,
+      options: CallOptions,
+      callback: PaginationCallback<
+          protos.google.cloud.databasecenter.v1beta.IQueryProductsRequest,
+          protos.google.cloud.databasecenter.v1beta.IQueryProductsResponse|null|undefined,
+          protos.google.cloud.databasecenter.v1beta.IProduct>): void;
+  queryProducts(
+      request: protos.google.cloud.databasecenter.v1beta.IQueryProductsRequest,
+      callback: PaginationCallback<
+          protos.google.cloud.databasecenter.v1beta.IQueryProductsRequest,
+          protos.google.cloud.databasecenter.v1beta.IQueryProductsResponse|null|undefined,
+          protos.google.cloud.databasecenter.v1beta.IProduct>): void;
+  queryProducts(
+      request?: protos.google.cloud.databasecenter.v1beta.IQueryProductsRequest,
+      optionsOrCallback?: CallOptions|PaginationCallback<
+          protos.google.cloud.databasecenter.v1beta.IQueryProductsRequest,
+          protos.google.cloud.databasecenter.v1beta.IQueryProductsResponse|null|undefined,
+          protos.google.cloud.databasecenter.v1beta.IProduct>,
+      callback?: PaginationCallback<
+          protos.google.cloud.databasecenter.v1beta.IQueryProductsRequest,
+          protos.google.cloud.databasecenter.v1beta.IQueryProductsResponse|null|undefined,
+          protos.google.cloud.databasecenter.v1beta.IProduct>):
+      Promise<[
+        protos.google.cloud.databasecenter.v1beta.IProduct[],
+        protos.google.cloud.databasecenter.v1beta.IQueryProductsRequest|null,
+        protos.google.cloud.databasecenter.v1beta.IQueryProductsResponse
+      ]>|void {
+    request = request || {};
+    let options: CallOptions;
+    if (typeof optionsOrCallback === 'function' && callback === undefined) {
+      callback = optionsOrCallback;
+      options = {};
+    }
+    else {
+      options = optionsOrCallback as CallOptions;
+    }
+    options = options || {};
+    options.otherArgs = options.otherArgs || {};
+    options.otherArgs.headers = options.otherArgs.headers || {};
+    this.initialize().catch(err => {throw err});
+    const wrappedCallback: PaginationCallback<
+      protos.google.cloud.databasecenter.v1beta.IQueryProductsRequest,
+      protos.google.cloud.databasecenter.v1beta.IQueryProductsResponse|null|undefined,
+      protos.google.cloud.databasecenter.v1beta.IProduct>|undefined = callback
+      ? (error, values, nextPageRequest, rawResponse) => {
+          this._log.info('queryProducts values %j', values);
+          callback!(error, values, nextPageRequest, rawResponse); // We verified callback above.
+        }
+      : undefined;
+    this._log.info('queryProducts request %j', request);
+    return this.innerApiCalls
+      .queryProducts(request, options, wrappedCallback)
+      ?.then(([response, input, output]: [
+        protos.google.cloud.databasecenter.v1beta.IProduct[],
+        protos.google.cloud.databasecenter.v1beta.IQueryProductsRequest|null,
+        protos.google.cloud.databasecenter.v1beta.IQueryProductsResponse
+      ]) => {
+        this._log.info('queryProducts values %j', response);
+        return [response, input, output];
+      });
+  }
+
+/**
+ * Equivalent to `queryProducts`, but returns a NodeJS Stream object.
+ * @param {Object} request
+ *   The request object that will be sent.
+ * @param {string} request.parent
+ *   Required. Parent can be a project, a folder, or an organization.
+ *
+ *   The allowed values are:
+ *
+ *   * projects/{PROJECT_ID}/locations/{LOCATION}
+ *   (e.g.,"projects/foo-bar/locations/us-central1")
+ *   * projects/{PROJECT_NUMBER}/locations/{LOCATION}
+ *   (e.g.,"projects/12345678/locations/us-central1")
+ *   * folders/{FOLDER_NUMBER}/locations/{LOCATION}
+ *   (e.g.,"folders/1234567/locations/us-central1")
+ *   * organizations/{ORGANIZATION_NUMBER}/locations/{LOCATION}
+ *   (e.g.,"organizations/123456/locations/us-central1")
+ *   * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
+ *   * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
+ *   * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
+ *   * organizations/{ORGANIZATION_NUMBER} (e.g., "organizations/123456")
+ * @param {number} [request.pageSize]
+ *   Optional. If unspecified, at most 50 products will be returned.
+ *   The maximum value is 1000; values above 1000 will be coerced to 1000.
+ * @param {string} [request.pageToken]
+ *   Optional. A page token, received from a previous `ListLocations` call.
+ *   Provide this to retrieve the subsequent page.
+ *   All other parameters except page size should match the call that provided
+ *   the page page token.
+ * @param {object} [options]
+ *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+ * @returns {Stream}
+ *   An object stream which emits an object representing {@link protos.google.cloud.databasecenter.v1beta.Product|Product} on 'data' event.
+ *   The client library will perform auto-pagination by default: it will call the API as many
+ *   times as needed. Note that it can affect your quota.
+ *   We recommend using `queryProductsAsync()`
+ *   method described below for async iteration which you can stop as needed.
+ *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+ *   for more details and examples.
+ */
+  queryProductsStream(
+      request?: protos.google.cloud.databasecenter.v1beta.IQueryProductsRequest,
+      options?: CallOptions):
+    Transform{
+    request = request || {};
+    options = options || {};
+    options.otherArgs = options.otherArgs || {};
+    options.otherArgs.headers = options.otherArgs.headers || {};
+    const defaultCallSettings = this._defaults['queryProducts'];
+    const callSettings = defaultCallSettings.merge(options);
+    this.initialize().catch(err => {throw err});
+    this._log.info('queryProducts stream %j', request);
+    return this.descriptors.page.queryProducts.createStream(
+      this.innerApiCalls.queryProducts as GaxCall,
+      request,
+      callSettings
+    );
+  }
+
+/**
+ * Equivalent to `queryProducts`, but returns an iterable object.
+ *
+ * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
+ * @param {Object} request
+ *   The request object that will be sent.
+ * @param {string} request.parent
+ *   Required. Parent can be a project, a folder, or an organization.
+ *
+ *   The allowed values are:
+ *
+ *   * projects/{PROJECT_ID}/locations/{LOCATION}
+ *   (e.g.,"projects/foo-bar/locations/us-central1")
+ *   * projects/{PROJECT_NUMBER}/locations/{LOCATION}
+ *   (e.g.,"projects/12345678/locations/us-central1")
+ *   * folders/{FOLDER_NUMBER}/locations/{LOCATION}
+ *   (e.g.,"folders/1234567/locations/us-central1")
+ *   * organizations/{ORGANIZATION_NUMBER}/locations/{LOCATION}
+ *   (e.g.,"organizations/123456/locations/us-central1")
+ *   * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
+ *   * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
+ *   * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
+ *   * organizations/{ORGANIZATION_NUMBER} (e.g., "organizations/123456")
+ * @param {number} [request.pageSize]
+ *   Optional. If unspecified, at most 50 products will be returned.
+ *   The maximum value is 1000; values above 1000 will be coerced to 1000.
+ * @param {string} [request.pageToken]
+ *   Optional. A page token, received from a previous `ListLocations` call.
+ *   Provide this to retrieve the subsequent page.
+ *   All other parameters except page size should match the call that provided
+ *   the page page token.
+ * @param {object} [options]
+ *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+ * @returns {Object}
+ *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
+ *   When you iterate the returned iterable, each element will be an object representing
+ *   {@link protos.google.cloud.databasecenter.v1beta.Product|Product}. The API will be called under the hood as needed, once per the page,
+ *   so you can stop the iteration when you don't need more results.
+ *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+ *   for more details and examples.
+ * @example <caption>include:samples/generated/v1beta/database_center.query_products.js</caption>
+ * region_tag:databasecenter_v1beta_generated_DatabaseCenter_QueryProducts_async
+ */
+  queryProductsAsync(
+      request?: protos.google.cloud.databasecenter.v1beta.IQueryProductsRequest,
+      options?: CallOptions):
+    AsyncIterable<protos.google.cloud.databasecenter.v1beta.IProduct>{
+    request = request || {};
+    options = options || {};
+    options.otherArgs = options.otherArgs || {};
+    options.otherArgs.headers = options.otherArgs.headers || {};
+    const defaultCallSettings = this._defaults['queryProducts'];
+    const callSettings = defaultCallSettings.merge(options);
+    this.initialize().catch(err => {throw err});
+    this._log.info('queryProducts iterate %j', request);
+    return this.descriptors.page.queryProducts.asyncIterate(
+      this.innerApiCalls['queryProducts'] as GaxCall,
+      request as {},
+      callSettings
+    ) as AsyncIterable<protos.google.cloud.databasecenter.v1beta.IProduct>;
+  }
+ /**
+ * AggregateFleet provides statistics about the fleet grouped by various
+ * fields.
+ *
+ * @param {Object} request
+ *   The request object that will be sent.
+ * @param {string} request.parent
+ *   Required. Parent can be a project, a folder, or an organization. The search
+ *   is limited to the resources within the `scope`.
+ *
+ *   The allowed values are:
+ *
+ *   * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
+ *   * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
+ *   * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
+ *   * organizations/{ORGANIZATION_NUMBER} (e.g.,
+ *   "organizations/123456")
+ * @param {string} [request.filter]
+ *   Optional. The expression to filter resources.
+ *
+ *   Supported fields are: `full_resource_name`, `resource_type`, `container`,
+ *     `product.type`, `product.engine`, `product.version`, `location`,
+ *     `labels`, `issues`, fields of availability_info, data_protection_info,
+ *     'resource_name', etc.
+ *
+ *   The expression is a list of zero or more restrictions combined via logical
+ *   operators `AND` and `OR`. When `AND` and `OR` are both used in the
+ *   expression, parentheses must be appropriately used to group the
+ *   combinations.
+ *
+ *   Example: `location="us-east1"`
+ *   Example: `container="projects/123" OR container="projects/456"`
+ *   Example: `(container="projects/123" OR
+ *             container="projects/456") AND location="us-east1"`
+ * @param {string} [request.groupBy]
+ *   Optional. A field that statistics are grouped by.
+ *   Valid values are any combination of the following:
+ *     * container
+ *     * product.type
+ *     * product.engine
+ *     * product.version
+ *     * location
+ *     * sub_resource_type
+ *     * management_type
+ *     * tag.key
+ *     * tag.value
+ *     * tag.source
+ *     * tag.inherited
+ *     * label.key
+ *     * label.value
+ *     * label.source
+ *     * has_maintenance_schedule
+ *     * has_deny_maintenance_schedules
+ *   Comma separated list.
+ * @param {string} [request.orderBy]
+ *   Optional. Valid values to order by are:
+ *     * resource_groups_count
+ *     * resources_count
+ *     * and all fields supported by `group_by`
+ *   The default order is ascending. Add "DESC" after the field name to indicate
+ *   descending order. Add "ASC" after the field name to indicate ascending
+ *   order. It supports ordering using multiple fields.
+ *   For example:
+ *    `order_by = "resource_groups_count"` sorts response in ascending order
+ *    `order_by = "resource_groups_count DESC"` sorts response in descending
+ *    order
+ *    `order_by = "product.type, product.version DESC, location"` orders by type
+ *    in ascending order, version in descending order and location in ascending
+ *    order
+ * @param {number} [request.pageSize]
+ *   Optional. If unspecified, at most 50 items will be returned.
+ *   The maximum value is 1000; values above 1000 will be coerced to 1000.
+ * @param {string} [request.pageToken]
+ *   Optional. A page token, received from a previous `AggregateFleet` call.
+ *   Provide this to retrieve the subsequent page.
+ *   All other parameters should match the parameters in the call that provided
+ *   the page token except for page_size which can be different.
+ * @param {google.type.Date} [request.baselineDate]
+ *   Optional. The baseline date w.r.t. which the delta counts are calculated.
+ *   If not set, delta counts are not included in the response and the response
+ *   indicates the current state of the fleet.
+ * @param {object} [options]
+ *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+ * @returns {Promise} - The promise which resolves to an array.
+ *   The first element of the array is Array of {@link protos.google.cloud.databasecenter.v1beta.AggregateFleetRow|AggregateFleetRow}.
+ *   The client library will perform auto-pagination by default: it will call the API as many
+ *   times as needed and will merge results from all the pages into this array.
+ *   Note that it can affect your quota.
+ *   We recommend using `aggregateFleetAsync()`
+ *   method described below for async iteration which you can stop as needed.
+ *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+ *   for more details and examples.
+ */
+  aggregateFleet(
+      request?: protos.google.cloud.databasecenter.v1beta.IAggregateFleetRequest,
+      options?: CallOptions):
+      Promise<[
+        protos.google.cloud.databasecenter.v1beta.IAggregateFleetRow[],
+        protos.google.cloud.databasecenter.v1beta.IAggregateFleetRequest|null,
+        protos.google.cloud.databasecenter.v1beta.IAggregateFleetResponse
+      ]>;
+  aggregateFleet(
+      request: protos.google.cloud.databasecenter.v1beta.IAggregateFleetRequest,
+      options: CallOptions,
+      callback: PaginationCallback<
+          protos.google.cloud.databasecenter.v1beta.IAggregateFleetRequest,
+          protos.google.cloud.databasecenter.v1beta.IAggregateFleetResponse|null|undefined,
+          protos.google.cloud.databasecenter.v1beta.IAggregateFleetRow>): void;
+  aggregateFleet(
+      request: protos.google.cloud.databasecenter.v1beta.IAggregateFleetRequest,
+      callback: PaginationCallback<
+          protos.google.cloud.databasecenter.v1beta.IAggregateFleetRequest,
+          protos.google.cloud.databasecenter.v1beta.IAggregateFleetResponse|null|undefined,
+          protos.google.cloud.databasecenter.v1beta.IAggregateFleetRow>): void;
+  aggregateFleet(
+      request?: protos.google.cloud.databasecenter.v1beta.IAggregateFleetRequest,
+      optionsOrCallback?: CallOptions|PaginationCallback<
+          protos.google.cloud.databasecenter.v1beta.IAggregateFleetRequest,
+          protos.google.cloud.databasecenter.v1beta.IAggregateFleetResponse|null|undefined,
+          protos.google.cloud.databasecenter.v1beta.IAggregateFleetRow>,
+      callback?: PaginationCallback<
+          protos.google.cloud.databasecenter.v1beta.IAggregateFleetRequest,
+          protos.google.cloud.databasecenter.v1beta.IAggregateFleetResponse|null|undefined,
+          protos.google.cloud.databasecenter.v1beta.IAggregateFleetRow>):
+      Promise<[
+        protos.google.cloud.databasecenter.v1beta.IAggregateFleetRow[],
+        protos.google.cloud.databasecenter.v1beta.IAggregateFleetRequest|null,
+        protos.google.cloud.databasecenter.v1beta.IAggregateFleetResponse
+      ]>|void {
+    request = request || {};
+    let options: CallOptions;
+    if (typeof optionsOrCallback === 'function' && callback === undefined) {
+      callback = optionsOrCallback;
+      options = {};
+    }
+    else {
+      options = optionsOrCallback as CallOptions;
+    }
+    options = options || {};
+    options.otherArgs = options.otherArgs || {};
+    options.otherArgs.headers = options.otherArgs.headers || {};
+    this.initialize().catch(err => {throw err});
+    const wrappedCallback: PaginationCallback<
+      protos.google.cloud.databasecenter.v1beta.IAggregateFleetRequest,
+      protos.google.cloud.databasecenter.v1beta.IAggregateFleetResponse|null|undefined,
+      protos.google.cloud.databasecenter.v1beta.IAggregateFleetRow>|undefined = callback
+      ? (error, values, nextPageRequest, rawResponse) => {
+          this._log.info('aggregateFleet values %j', values);
+          callback!(error, values, nextPageRequest, rawResponse); // We verified callback above.
+        }
+      : undefined;
+    this._log.info('aggregateFleet request %j', request);
+    return this.innerApiCalls
+      .aggregateFleet(request, options, wrappedCallback)
+      ?.then(([response, input, output]: [
+        protos.google.cloud.databasecenter.v1beta.IAggregateFleetRow[],
+        protos.google.cloud.databasecenter.v1beta.IAggregateFleetRequest|null,
+        protos.google.cloud.databasecenter.v1beta.IAggregateFleetResponse
+      ]) => {
+        this._log.info('aggregateFleet values %j', response);
+        return [response, input, output];
+      });
+  }
+
+/**
+ * Equivalent to `aggregateFleet`, but returns a NodeJS Stream object.
+ * @param {Object} request
+ *   The request object that will be sent.
+ * @param {string} request.parent
+ *   Required. Parent can be a project, a folder, or an organization. The search
+ *   is limited to the resources within the `scope`.
+ *
+ *   The allowed values are:
+ *
+ *   * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
+ *   * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
+ *   * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
+ *   * organizations/{ORGANIZATION_NUMBER} (e.g.,
+ *   "organizations/123456")
+ * @param {string} [request.filter]
+ *   Optional. The expression to filter resources.
+ *
+ *   Supported fields are: `full_resource_name`, `resource_type`, `container`,
+ *     `product.type`, `product.engine`, `product.version`, `location`,
+ *     `labels`, `issues`, fields of availability_info, data_protection_info,
+ *     'resource_name', etc.
+ *
+ *   The expression is a list of zero or more restrictions combined via logical
+ *   operators `AND` and `OR`. When `AND` and `OR` are both used in the
+ *   expression, parentheses must be appropriately used to group the
+ *   combinations.
+ *
+ *   Example: `location="us-east1"`
+ *   Example: `container="projects/123" OR container="projects/456"`
+ *   Example: `(container="projects/123" OR
+ *             container="projects/456") AND location="us-east1"`
+ * @param {string} [request.groupBy]
+ *   Optional. A field that statistics are grouped by.
+ *   Valid values are any combination of the following:
+ *     * container
+ *     * product.type
+ *     * product.engine
+ *     * product.version
+ *     * location
+ *     * sub_resource_type
+ *     * management_type
+ *     * tag.key
+ *     * tag.value
+ *     * tag.source
+ *     * tag.inherited
+ *     * label.key
+ *     * label.value
+ *     * label.source
+ *     * has_maintenance_schedule
+ *     * has_deny_maintenance_schedules
+ *   Comma separated list.
+ * @param {string} [request.orderBy]
+ *   Optional. Valid values to order by are:
+ *     * resource_groups_count
+ *     * resources_count
+ *     * and all fields supported by `group_by`
+ *   The default order is ascending. Add "DESC" after the field name to indicate
+ *   descending order. Add "ASC" after the field name to indicate ascending
+ *   order. It supports ordering using multiple fields.
+ *   For example:
+ *    `order_by = "resource_groups_count"` sorts response in ascending order
+ *    `order_by = "resource_groups_count DESC"` sorts response in descending
+ *    order
+ *    `order_by = "product.type, product.version DESC, location"` orders by type
+ *    in ascending order, version in descending order and location in ascending
+ *    order
+ * @param {number} [request.pageSize]
+ *   Optional. If unspecified, at most 50 items will be returned.
+ *   The maximum value is 1000; values above 1000 will be coerced to 1000.
+ * @param {string} [request.pageToken]
+ *   Optional. A page token, received from a previous `AggregateFleet` call.
+ *   Provide this to retrieve the subsequent page.
+ *   All other parameters should match the parameters in the call that provided
+ *   the page token except for page_size which can be different.
+ * @param {google.type.Date} [request.baselineDate]
+ *   Optional. The baseline date w.r.t. which the delta counts are calculated.
+ *   If not set, delta counts are not included in the response and the response
+ *   indicates the current state of the fleet.
+ * @param {object} [options]
+ *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+ * @returns {Stream}
+ *   An object stream which emits an object representing {@link protos.google.cloud.databasecenter.v1beta.AggregateFleetRow|AggregateFleetRow} on 'data' event.
+ *   The client library will perform auto-pagination by default: it will call the API as many
+ *   times as needed. Note that it can affect your quota.
+ *   We recommend using `aggregateFleetAsync()`
+ *   method described below for async iteration which you can stop as needed.
+ *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+ *   for more details and examples.
+ */
+  aggregateFleetStream(
+      request?: protos.google.cloud.databasecenter.v1beta.IAggregateFleetRequest,
+      options?: CallOptions):
+    Transform{
+    request = request || {};
+    options = options || {};
+    options.otherArgs = options.otherArgs || {};
+    options.otherArgs.headers = options.otherArgs.headers || {};
+    const defaultCallSettings = this._defaults['aggregateFleet'];
+    const callSettings = defaultCallSettings.merge(options);
+    this.initialize().catch(err => {throw err});
+    this._log.info('aggregateFleet stream %j', request);
+    return this.descriptors.page.aggregateFleet.createStream(
+      this.innerApiCalls.aggregateFleet as GaxCall,
+      request,
+      callSettings
+    );
+  }
+
+/**
+ * Equivalent to `aggregateFleet`, but returns an iterable object.
+ *
+ * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
+ * @param {Object} request
+ *   The request object that will be sent.
+ * @param {string} request.parent
+ *   Required. Parent can be a project, a folder, or an organization. The search
+ *   is limited to the resources within the `scope`.
+ *
+ *   The allowed values are:
+ *
+ *   * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
+ *   * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
+ *   * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
+ *   * organizations/{ORGANIZATION_NUMBER} (e.g.,
+ *   "organizations/123456")
+ * @param {string} [request.filter]
+ *   Optional. The expression to filter resources.
+ *
+ *   Supported fields are: `full_resource_name`, `resource_type`, `container`,
+ *     `product.type`, `product.engine`, `product.version`, `location`,
+ *     `labels`, `issues`, fields of availability_info, data_protection_info,
+ *     'resource_name', etc.
+ *
+ *   The expression is a list of zero or more restrictions combined via logical
+ *   operators `AND` and `OR`. When `AND` and `OR` are both used in the
+ *   expression, parentheses must be appropriately used to group the
+ *   combinations.
+ *
+ *   Example: `location="us-east1"`
+ *   Example: `container="projects/123" OR container="projects/456"`
+ *   Example: `(container="projects/123" OR
+ *             container="projects/456") AND location="us-east1"`
+ * @param {string} [request.groupBy]
+ *   Optional. A field that statistics are grouped by.
+ *   Valid values are any combination of the following:
+ *     * container
+ *     * product.type
+ *     * product.engine
+ *     * product.version
+ *     * location
+ *     * sub_resource_type
+ *     * management_type
+ *     * tag.key
+ *     * tag.value
+ *     * tag.source
+ *     * tag.inherited
+ *     * label.key
+ *     * label.value
+ *     * label.source
+ *     * has_maintenance_schedule
+ *     * has_deny_maintenance_schedules
+ *   Comma separated list.
+ * @param {string} [request.orderBy]
+ *   Optional. Valid values to order by are:
+ *     * resource_groups_count
+ *     * resources_count
+ *     * and all fields supported by `group_by`
+ *   The default order is ascending. Add "DESC" after the field name to indicate
+ *   descending order. Add "ASC" after the field name to indicate ascending
+ *   order. It supports ordering using multiple fields.
+ *   For example:
+ *    `order_by = "resource_groups_count"` sorts response in ascending order
+ *    `order_by = "resource_groups_count DESC"` sorts response in descending
+ *    order
+ *    `order_by = "product.type, product.version DESC, location"` orders by type
+ *    in ascending order, version in descending order and location in ascending
+ *    order
+ * @param {number} [request.pageSize]
+ *   Optional. If unspecified, at most 50 items will be returned.
+ *   The maximum value is 1000; values above 1000 will be coerced to 1000.
+ * @param {string} [request.pageToken]
+ *   Optional. A page token, received from a previous `AggregateFleet` call.
+ *   Provide this to retrieve the subsequent page.
+ *   All other parameters should match the parameters in the call that provided
+ *   the page token except for page_size which can be different.
+ * @param {google.type.Date} [request.baselineDate]
+ *   Optional. The baseline date w.r.t. which the delta counts are calculated.
+ *   If not set, delta counts are not included in the response and the response
+ *   indicates the current state of the fleet.
+ * @param {object} [options]
+ *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+ * @returns {Object}
+ *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
+ *   When you iterate the returned iterable, each element will be an object representing
+ *   {@link protos.google.cloud.databasecenter.v1beta.AggregateFleetRow|AggregateFleetRow}. The API will be called under the hood as needed, once per the page,
+ *   so you can stop the iteration when you don't need more results.
+ *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+ *   for more details and examples.
+ * @example <caption>include:samples/generated/v1beta/database_center.aggregate_fleet.js</caption>
+ * region_tag:databasecenter_v1beta_generated_DatabaseCenter_AggregateFleet_async
+ */
+  aggregateFleetAsync(
+      request?: protos.google.cloud.databasecenter.v1beta.IAggregateFleetRequest,
+      options?: CallOptions):
+    AsyncIterable<protos.google.cloud.databasecenter.v1beta.IAggregateFleetRow>{
+    request = request || {};
+    options = options || {};
+    options.otherArgs = options.otherArgs || {};
+    options.otherArgs.headers = options.otherArgs.headers || {};
+    const defaultCallSettings = this._defaults['aggregateFleet'];
+    const callSettings = defaultCallSettings.merge(options);
+    this.initialize().catch(err => {throw err});
+    this._log.info('aggregateFleet iterate %j', request);
+    return this.descriptors.page.aggregateFleet.asyncIterate(
+      this.innerApiCalls['aggregateFleet'] as GaxCall,
+      request as {},
+      callSettings
+    ) as AsyncIterable<protos.google.cloud.databasecenter.v1beta.IAggregateFleetRow>;
+  }
+ /**
+ * QueryDatabaseResourceGroups returns paginated results of database groups.
+ *
+ * @param {Object} request
+ *   The request object that will be sent.
+ * @param {string} request.parent
+ *   Required. Parent can be a project, a folder, or an organization. The search
+ *   is limited to the resources within the `scope`.
+ *
+ *   The allowed values are:
+ *
+ *   * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
+ *   * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
+ *   * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
+ *   * organizations/{ORGANIZATION_NUMBER} (e.g., "organizations/123456")
+ * @param {string} [request.filter]
+ *   Optional. The expression to filter resources.
+ *
+ *   The following fields are filterable:
+ *     * full_resource_name
+ *     * resource_type
+ *     * container
+ *     * product.type
+ *     * product.engine
+ *     * product.version
+ *     * location
+ *     * labels
+ *     * resource_category
+ *     * machine_config.cpu_count
+ *     * machine_config.memory_size_bytes
+ *     * machine_config.shard_count
+ *     * resource_name
+ *     * tags
+ *     * backupdr_config.backupdr_managed
+ *     * edition
+ *
+ *   The expression is a list of zero or more restrictions combined via logical
+ *   operators `AND` and `OR`. When `AND` and `OR` are both used in the
+ *   expression, parentheses must be appropriately used to group the
+ *   combinations.
+ *
+ *   Example: `location="us-east1"`
+ *   Example: `container="projects/123" OR container="projects/456"`
+ *   Example: `(container="projects/123" OR
+ *             container="projects/456") AND location="us-east1"`
+ *   Example: `full_resource_name=~"test"`
+ *   Example: `full_resource_name=~"test.*master"`
+ * @param {number[]} [request.signalTypeGroups]
+ *   Optional. Groups of signal types that are requested.
+ * @param {number[]} [request.signalFilters]
+ *   Optional. Filters based on signals. The list will be ORed together and then
+ *   ANDed with the `filters` field above.
+ * @param {string} [request.orderBy]
+ *   Optional. A field that specifies the sort order of the results.
+ *
+ *   The following fields are sortable:
+ *     * full_resource_name
+ *     * product.type
+ *     * product.engine
+ *     * product.version
+ *     * container
+ *     * issue_count
+ *     * machine_config.vcpu_count
+ *     * machine_config.memory_size_bytes
+ *     * machine_config.shard_count
+ *     * resource_name
+ *     * issue_severity
+ *     * signal_type
+ *     * location
+ *     * resource_type
+ *     * instance_type
+ *     * edition
+ *     * metrics.p99_cpu_utilization
+ *     * metrics.p95_cpu_utilization
+ *     * metrics.current_storage_used_bytes
+ *     * metrics.node_count
+ *     * metrics.processing_unit_count
+ *     * metrics.current_memory_used_bytes
+ *     * metrics.peak_storage_utilization
+ *     * metrics.peak_number_connections
+ *     * metrics.peak_memory_utilization
+ *
+ *   The default order is ascending. Add "DESC" after the field name to indicate
+ *   descending order. Add "ASC" after the field name to indicate ascending
+ *   order. It only supports a single field at a time.
+ *
+ *   For example:
+ *    `order_by = "full_resource_name"` sorts response in ascending order
+ *    `order_by = "full_resource_name DESC"` sorts response in descending order
+ *    `order_by = "issue_count DESC"` sorts response in descending order of
+ *    count of all issues associated with a resource.
+ *
+ *   More explicitly, `order_by = "full_resource_name, product"` is not
+ *   supported.
+ * @param {number} [request.pageSize]
+ *   Optional. If unspecified, at most 50 resource groups will be returned.
+ *   The maximum value is 1000; values above 1000 will be coerced to 1000.
+ * @param {string} [request.pageToken]
+ *   Optional. A page token, received from a previous
+ *   `QueryDatabaseResourceGroupsRequest` call. Provide this to retrieve the
+ *   subsequent page. All parameters except page_token should match the
+ *   parameters in the call that provided the page page token.
+ * @param {object} [options]
+ *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+ * @returns {Promise} - The promise which resolves to an array.
+ *   The first element of the array is Array of {@link protos.google.cloud.databasecenter.v1beta.DatabaseResourceGroup|DatabaseResourceGroup}.
+ *   The client library will perform auto-pagination by default: it will call the API as many
+ *   times as needed and will merge results from all the pages into this array.
+ *   Note that it can affect your quota.
+ *   We recommend using `queryDatabaseResourceGroupsAsync()`
+ *   method described below for async iteration which you can stop as needed.
+ *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+ *   for more details and examples.
+ */
+  queryDatabaseResourceGroups(
+      request?: protos.google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsRequest,
+      options?: CallOptions):
+      Promise<[
+        protos.google.cloud.databasecenter.v1beta.IDatabaseResourceGroup[],
+        protos.google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsRequest|null,
+        protos.google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsResponse
+      ]>;
+  queryDatabaseResourceGroups(
+      request: protos.google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsRequest,
+      options: CallOptions,
+      callback: PaginationCallback<
+          protos.google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsRequest,
+          protos.google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsResponse|null|undefined,
+          protos.google.cloud.databasecenter.v1beta.IDatabaseResourceGroup>): void;
+  queryDatabaseResourceGroups(
+      request: protos.google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsRequest,
+      callback: PaginationCallback<
+          protos.google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsRequest,
+          protos.google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsResponse|null|undefined,
+          protos.google.cloud.databasecenter.v1beta.IDatabaseResourceGroup>): void;
+  queryDatabaseResourceGroups(
+      request?: protos.google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsRequest,
+      optionsOrCallback?: CallOptions|PaginationCallback<
+          protos.google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsRequest,
+          protos.google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsResponse|null|undefined,
+          protos.google.cloud.databasecenter.v1beta.IDatabaseResourceGroup>,
+      callback?: PaginationCallback<
+          protos.google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsRequest,
+          protos.google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsResponse|null|undefined,
+          protos.google.cloud.databasecenter.v1beta.IDatabaseResourceGroup>):
+      Promise<[
+        protos.google.cloud.databasecenter.v1beta.IDatabaseResourceGroup[],
+        protos.google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsRequest|null,
+        protos.google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsResponse
+      ]>|void {
+    request = request || {};
+    let options: CallOptions;
+    if (typeof optionsOrCallback === 'function' && callback === undefined) {
+      callback = optionsOrCallback;
+      options = {};
+    }
+    else {
+      options = optionsOrCallback as CallOptions;
+    }
+    options = options || {};
+    options.otherArgs = options.otherArgs || {};
+    options.otherArgs.headers = options.otherArgs.headers || {};
+    this.initialize().catch(err => {throw err});
+    const wrappedCallback: PaginationCallback<
+      protos.google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsRequest,
+      protos.google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsResponse|null|undefined,
+      protos.google.cloud.databasecenter.v1beta.IDatabaseResourceGroup>|undefined = callback
+      ? (error, values, nextPageRequest, rawResponse) => {
+          this._log.info('queryDatabaseResourceGroups values %j', values);
+          callback!(error, values, nextPageRequest, rawResponse); // We verified callback above.
+        }
+      : undefined;
+    this._log.info('queryDatabaseResourceGroups request %j', request);
+    return this.innerApiCalls
+      .queryDatabaseResourceGroups(request, options, wrappedCallback)
+      ?.then(([response, input, output]: [
+        protos.google.cloud.databasecenter.v1beta.IDatabaseResourceGroup[],
+        protos.google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsRequest|null,
+        protos.google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsResponse
+      ]) => {
+        this._log.info('queryDatabaseResourceGroups values %j', response);
+        return [response, input, output];
+      });
+  }
+
+/**
+ * Equivalent to `queryDatabaseResourceGroups`, but returns a NodeJS Stream object.
+ * @param {Object} request
+ *   The request object that will be sent.
+ * @param {string} request.parent
+ *   Required. Parent can be a project, a folder, or an organization. The search
+ *   is limited to the resources within the `scope`.
+ *
+ *   The allowed values are:
+ *
+ *   * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
+ *   * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
+ *   * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
+ *   * organizations/{ORGANIZATION_NUMBER} (e.g., "organizations/123456")
+ * @param {string} [request.filter]
+ *   Optional. The expression to filter resources.
+ *
+ *   The following fields are filterable:
+ *     * full_resource_name
+ *     * resource_type
+ *     * container
+ *     * product.type
+ *     * product.engine
+ *     * product.version
+ *     * location
+ *     * labels
+ *     * resource_category
+ *     * machine_config.cpu_count
+ *     * machine_config.memory_size_bytes
+ *     * machine_config.shard_count
+ *     * resource_name
+ *     * tags
+ *     * backupdr_config.backupdr_managed
+ *     * edition
+ *
+ *   The expression is a list of zero or more restrictions combined via logical
+ *   operators `AND` and `OR`. When `AND` and `OR` are both used in the
+ *   expression, parentheses must be appropriately used to group the
+ *   combinations.
+ *
+ *   Example: `location="us-east1"`
+ *   Example: `container="projects/123" OR container="projects/456"`
+ *   Example: `(container="projects/123" OR
+ *             container="projects/456") AND location="us-east1"`
+ *   Example: `full_resource_name=~"test"`
+ *   Example: `full_resource_name=~"test.*master"`
+ * @param {number[]} [request.signalTypeGroups]
+ *   Optional. Groups of signal types that are requested.
+ * @param {number[]} [request.signalFilters]
+ *   Optional. Filters based on signals. The list will be ORed together and then
+ *   ANDed with the `filters` field above.
+ * @param {string} [request.orderBy]
+ *   Optional. A field that specifies the sort order of the results.
+ *
+ *   The following fields are sortable:
+ *     * full_resource_name
+ *     * product.type
+ *     * product.engine
+ *     * product.version
+ *     * container
+ *     * issue_count
+ *     * machine_config.vcpu_count
+ *     * machine_config.memory_size_bytes
+ *     * machine_config.shard_count
+ *     * resource_name
+ *     * issue_severity
+ *     * signal_type
+ *     * location
+ *     * resource_type
+ *     * instance_type
+ *     * edition
+ *     * metrics.p99_cpu_utilization
+ *     * metrics.p95_cpu_utilization
+ *     * metrics.current_storage_used_bytes
+ *     * metrics.node_count
+ *     * metrics.processing_unit_count
+ *     * metrics.current_memory_used_bytes
+ *     * metrics.peak_storage_utilization
+ *     * metrics.peak_number_connections
+ *     * metrics.peak_memory_utilization
+ *
+ *   The default order is ascending. Add "DESC" after the field name to indicate
+ *   descending order. Add "ASC" after the field name to indicate ascending
+ *   order. It only supports a single field at a time.
+ *
+ *   For example:
+ *    `order_by = "full_resource_name"` sorts response in ascending order
+ *    `order_by = "full_resource_name DESC"` sorts response in descending order
+ *    `order_by = "issue_count DESC"` sorts response in descending order of
+ *    count of all issues associated with a resource.
+ *
+ *   More explicitly, `order_by = "full_resource_name, product"` is not
+ *   supported.
+ * @param {number} [request.pageSize]
+ *   Optional. If unspecified, at most 50 resource groups will be returned.
+ *   The maximum value is 1000; values above 1000 will be coerced to 1000.
+ * @param {string} [request.pageToken]
+ *   Optional. A page token, received from a previous
+ *   `QueryDatabaseResourceGroupsRequest` call. Provide this to retrieve the
+ *   subsequent page. All parameters except page_token should match the
+ *   parameters in the call that provided the page page token.
+ * @param {object} [options]
+ *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+ * @returns {Stream}
+ *   An object stream which emits an object representing {@link protos.google.cloud.databasecenter.v1beta.DatabaseResourceGroup|DatabaseResourceGroup} on 'data' event.
+ *   The client library will perform auto-pagination by default: it will call the API as many
+ *   times as needed. Note that it can affect your quota.
+ *   We recommend using `queryDatabaseResourceGroupsAsync()`
+ *   method described below for async iteration which you can stop as needed.
+ *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+ *   for more details and examples.
+ */
+  queryDatabaseResourceGroupsStream(
+      request?: protos.google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsRequest,
+      options?: CallOptions):
+    Transform{
+    request = request || {};
+    options = options || {};
+    options.otherArgs = options.otherArgs || {};
+    options.otherArgs.headers = options.otherArgs.headers || {};
+    const defaultCallSettings = this._defaults['queryDatabaseResourceGroups'];
+    const callSettings = defaultCallSettings.merge(options);
+    this.initialize().catch(err => {throw err});
+    this._log.info('queryDatabaseResourceGroups stream %j', request);
+    return this.descriptors.page.queryDatabaseResourceGroups.createStream(
+      this.innerApiCalls.queryDatabaseResourceGroups as GaxCall,
+      request,
+      callSettings
+    );
+  }
+
+/**
+ * Equivalent to `queryDatabaseResourceGroups`, but returns an iterable object.
+ *
+ * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
+ * @param {Object} request
+ *   The request object that will be sent.
+ * @param {string} request.parent
+ *   Required. Parent can be a project, a folder, or an organization. The search
+ *   is limited to the resources within the `scope`.
+ *
+ *   The allowed values are:
+ *
+ *   * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
+ *   * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
+ *   * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
+ *   * organizations/{ORGANIZATION_NUMBER} (e.g., "organizations/123456")
+ * @param {string} [request.filter]
+ *   Optional. The expression to filter resources.
+ *
+ *   The following fields are filterable:
+ *     * full_resource_name
+ *     * resource_type
+ *     * container
+ *     * product.type
+ *     * product.engine
+ *     * product.version
+ *     * location
+ *     * labels
+ *     * resource_category
+ *     * machine_config.cpu_count
+ *     * machine_config.memory_size_bytes
+ *     * machine_config.shard_count
+ *     * resource_name
+ *     * tags
+ *     * backupdr_config.backupdr_managed
+ *     * edition
+ *
+ *   The expression is a list of zero or more restrictions combined via logical
+ *   operators `AND` and `OR`. When `AND` and `OR` are both used in the
+ *   expression, parentheses must be appropriately used to group the
+ *   combinations.
+ *
+ *   Example: `location="us-east1"`
+ *   Example: `container="projects/123" OR container="projects/456"`
+ *   Example: `(container="projects/123" OR
+ *             container="projects/456") AND location="us-east1"`
+ *   Example: `full_resource_name=~"test"`
+ *   Example: `full_resource_name=~"test.*master"`
+ * @param {number[]} [request.signalTypeGroups]
+ *   Optional. Groups of signal types that are requested.
+ * @param {number[]} [request.signalFilters]
+ *   Optional. Filters based on signals. The list will be ORed together and then
+ *   ANDed with the `filters` field above.
+ * @param {string} [request.orderBy]
+ *   Optional. A field that specifies the sort order of the results.
+ *
+ *   The following fields are sortable:
+ *     * full_resource_name
+ *     * product.type
+ *     * product.engine
+ *     * product.version
+ *     * container
+ *     * issue_count
+ *     * machine_config.vcpu_count
+ *     * machine_config.memory_size_bytes
+ *     * machine_config.shard_count
+ *     * resource_name
+ *     * issue_severity
+ *     * signal_type
+ *     * location
+ *     * resource_type
+ *     * instance_type
+ *     * edition
+ *     * metrics.p99_cpu_utilization
+ *     * metrics.p95_cpu_utilization
+ *     * metrics.current_storage_used_bytes
+ *     * metrics.node_count
+ *     * metrics.processing_unit_count
+ *     * metrics.current_memory_used_bytes
+ *     * metrics.peak_storage_utilization
+ *     * metrics.peak_number_connections
+ *     * metrics.peak_memory_utilization
+ *
+ *   The default order is ascending. Add "DESC" after the field name to indicate
+ *   descending order. Add "ASC" after the field name to indicate ascending
+ *   order. It only supports a single field at a time.
+ *
+ *   For example:
+ *    `order_by = "full_resource_name"` sorts response in ascending order
+ *    `order_by = "full_resource_name DESC"` sorts response in descending order
+ *    `order_by = "issue_count DESC"` sorts response in descending order of
+ *    count of all issues associated with a resource.
+ *
+ *   More explicitly, `order_by = "full_resource_name, product"` is not
+ *   supported.
+ * @param {number} [request.pageSize]
+ *   Optional. If unspecified, at most 50 resource groups will be returned.
+ *   The maximum value is 1000; values above 1000 will be coerced to 1000.
+ * @param {string} [request.pageToken]
+ *   Optional. A page token, received from a previous
+ *   `QueryDatabaseResourceGroupsRequest` call. Provide this to retrieve the
+ *   subsequent page. All parameters except page_token should match the
+ *   parameters in the call that provided the page page token.
+ * @param {object} [options]
+ *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+ * @returns {Object}
+ *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
+ *   When you iterate the returned iterable, each element will be an object representing
+ *   {@link protos.google.cloud.databasecenter.v1beta.DatabaseResourceGroup|DatabaseResourceGroup}. The API will be called under the hood as needed, once per the page,
+ *   so you can stop the iteration when you don't need more results.
+ *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+ *   for more details and examples.
+ * @example <caption>include:samples/generated/v1beta/database_center.query_database_resource_groups.js</caption>
+ * region_tag:databasecenter_v1beta_generated_DatabaseCenter_QueryDatabaseResourceGroups_async
+ */
+  queryDatabaseResourceGroupsAsync(
+      request?: protos.google.cloud.databasecenter.v1beta.IQueryDatabaseResourceGroupsRequest,
+      options?: CallOptions):
+    AsyncIterable<protos.google.cloud.databasecenter.v1beta.IDatabaseResourceGroup>{
+    request = request || {};
+    options = options || {};
+    options.otherArgs = options.otherArgs || {};
+    options.otherArgs.headers = options.otherArgs.headers || {};
+    const defaultCallSettings = this._defaults['queryDatabaseResourceGroups'];
+    const callSettings = defaultCallSettings.merge(options);
+    this.initialize().catch(err => {throw err});
+    this._log.info('queryDatabaseResourceGroups iterate %j', request);
+    return this.descriptors.page.queryDatabaseResourceGroups.asyncIterate(
+      this.innerApiCalls['queryDatabaseResourceGroups'] as GaxCall,
+      request as {},
+      callSettings
+    ) as AsyncIterable<protos.google.cloud.databasecenter.v1beta.IDatabaseResourceGroup>;
+  }
+ /**
+ * QueryIssues provides a list of issues and recommendations
+ * that a user has access to and that are within the requested scope.
+ *
+ * @param {Object} request
+ *   The request object that will be sent.
+ * @param {string} request.parent
+ *   Required. Parent can be a project, a folder, or an organization. The list
+ *   is limited to the one attached to resources within the `scope` that a user
+ *   has access to.
+ *
+ *   The allowed values are:
+ *
+ *   * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
+ *   * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
+ *   * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
+ *   * organizations/{ORGANIZATION_NUMBER} (e.g., "organizations/123456")
+ * @param {string} [request.filter]
+ *   Optional.
+ *   Supported fields are:
+ *   'product',
+ *   `location`,
+ *   `issue_severity`,
+ *   'tags',
+ *   'labels',
+ * @param {number[]} [request.signalProductsFilters]
+ *   Optional. Filters based on signal and product. The filter list will be ORed
+ *   across pairs and ANDed within a signal and products pair.
+ * @param {string} [request.orderBy]
+ *   Optional. Following fields are sortable:
+ *   SignalType
+ *   Product
+ *   Location
+ *   IssueSeverity
+ *
+ *   The default order is ascending. Add "DESC" after the field name to indicate
+ *   descending order. Add "ASC" after the field name to indicate ascending
+ *   order. It only supports a single field at a time.
+ * @param {number} [request.pageSize]
+ *   Optional. If unspecified, at most 50 issues will be returned.
+ *   The maximum value is 1000; values above 1000 will be coerced to 1000.
+ * @param {string} [request.pageToken]
+ *   Optional. A page token, received from a previous `QueryIssues` call.
+ *   Provide this to retrieve the subsequent page.
+ *   All parameters except page size should match the parameters used in the
+ *   call that provided the page token.
+ * @param {object} [options]
+ *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+ * @returns {Promise} - The promise which resolves to an array.
+ *   The first element of the array is Array of {@link protos.google.cloud.databasecenter.v1beta.DatabaseResourceIssue|DatabaseResourceIssue}.
+ *   The client library will perform auto-pagination by default: it will call the API as many
+ *   times as needed and will merge results from all the pages into this array.
+ *   Note that it can affect your quota.
+ *   We recommend using `queryIssuesAsync()`
+ *   method described below for async iteration which you can stop as needed.
+ *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+ *   for more details and examples.
+ */
+  queryIssues(
+      request?: protos.google.cloud.databasecenter.v1beta.IQueryIssuesRequest,
+      options?: CallOptions):
+      Promise<[
+        protos.google.cloud.databasecenter.v1beta.IDatabaseResourceIssue[],
+        protos.google.cloud.databasecenter.v1beta.IQueryIssuesRequest|null,
+        protos.google.cloud.databasecenter.v1beta.IQueryIssuesResponse
+      ]>;
+  queryIssues(
+      request: protos.google.cloud.databasecenter.v1beta.IQueryIssuesRequest,
+      options: CallOptions,
+      callback: PaginationCallback<
+          protos.google.cloud.databasecenter.v1beta.IQueryIssuesRequest,
+          protos.google.cloud.databasecenter.v1beta.IQueryIssuesResponse|null|undefined,
+          protos.google.cloud.databasecenter.v1beta.IDatabaseResourceIssue>): void;
+  queryIssues(
+      request: protos.google.cloud.databasecenter.v1beta.IQueryIssuesRequest,
+      callback: PaginationCallback<
+          protos.google.cloud.databasecenter.v1beta.IQueryIssuesRequest,
+          protos.google.cloud.databasecenter.v1beta.IQueryIssuesResponse|null|undefined,
+          protos.google.cloud.databasecenter.v1beta.IDatabaseResourceIssue>): void;
+  queryIssues(
+      request?: protos.google.cloud.databasecenter.v1beta.IQueryIssuesRequest,
+      optionsOrCallback?: CallOptions|PaginationCallback<
+          protos.google.cloud.databasecenter.v1beta.IQueryIssuesRequest,
+          protos.google.cloud.databasecenter.v1beta.IQueryIssuesResponse|null|undefined,
+          protos.google.cloud.databasecenter.v1beta.IDatabaseResourceIssue>,
+      callback?: PaginationCallback<
+          protos.google.cloud.databasecenter.v1beta.IQueryIssuesRequest,
+          protos.google.cloud.databasecenter.v1beta.IQueryIssuesResponse|null|undefined,
+          protos.google.cloud.databasecenter.v1beta.IDatabaseResourceIssue>):
+      Promise<[
+        protos.google.cloud.databasecenter.v1beta.IDatabaseResourceIssue[],
+        protos.google.cloud.databasecenter.v1beta.IQueryIssuesRequest|null,
+        protos.google.cloud.databasecenter.v1beta.IQueryIssuesResponse
+      ]>|void {
+    request = request || {};
+    let options: CallOptions;
+    if (typeof optionsOrCallback === 'function' && callback === undefined) {
+      callback = optionsOrCallback;
+      options = {};
+    }
+    else {
+      options = optionsOrCallback as CallOptions;
+    }
+    options = options || {};
+    options.otherArgs = options.otherArgs || {};
+    options.otherArgs.headers = options.otherArgs.headers || {};
+    this.initialize().catch(err => {throw err});
+    const wrappedCallback: PaginationCallback<
+      protos.google.cloud.databasecenter.v1beta.IQueryIssuesRequest,
+      protos.google.cloud.databasecenter.v1beta.IQueryIssuesResponse|null|undefined,
+      protos.google.cloud.databasecenter.v1beta.IDatabaseResourceIssue>|undefined = callback
+      ? (error, values, nextPageRequest, rawResponse) => {
+          this._log.info('queryIssues values %j', values);
+          callback!(error, values, nextPageRequest, rawResponse); // We verified callback above.
+        }
+      : undefined;
+    this._log.info('queryIssues request %j', request);
+    return this.innerApiCalls
+      .queryIssues(request, options, wrappedCallback)
+      ?.then(([response, input, output]: [
+        protos.google.cloud.databasecenter.v1beta.IDatabaseResourceIssue[],
+        protos.google.cloud.databasecenter.v1beta.IQueryIssuesRequest|null,
+        protos.google.cloud.databasecenter.v1beta.IQueryIssuesResponse
+      ]) => {
+        this._log.info('queryIssues values %j', response);
+        return [response, input, output];
+      });
+  }
+
+/**
+ * Equivalent to `queryIssues`, but returns a NodeJS Stream object.
+ * @param {Object} request
+ *   The request object that will be sent.
+ * @param {string} request.parent
+ *   Required. Parent can be a project, a folder, or an organization. The list
+ *   is limited to the one attached to resources within the `scope` that a user
+ *   has access to.
+ *
+ *   The allowed values are:
+ *
+ *   * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
+ *   * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
+ *   * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
+ *   * organizations/{ORGANIZATION_NUMBER} (e.g., "organizations/123456")
+ * @param {string} [request.filter]
+ *   Optional.
+ *   Supported fields are:
+ *   'product',
+ *   `location`,
+ *   `issue_severity`,
+ *   'tags',
+ *   'labels',
+ * @param {number[]} [request.signalProductsFilters]
+ *   Optional. Filters based on signal and product. The filter list will be ORed
+ *   across pairs and ANDed within a signal and products pair.
+ * @param {string} [request.orderBy]
+ *   Optional. Following fields are sortable:
+ *   SignalType
+ *   Product
+ *   Location
+ *   IssueSeverity
+ *
+ *   The default order is ascending. Add "DESC" after the field name to indicate
+ *   descending order. Add "ASC" after the field name to indicate ascending
+ *   order. It only supports a single field at a time.
+ * @param {number} [request.pageSize]
+ *   Optional. If unspecified, at most 50 issues will be returned.
+ *   The maximum value is 1000; values above 1000 will be coerced to 1000.
+ * @param {string} [request.pageToken]
+ *   Optional. A page token, received from a previous `QueryIssues` call.
+ *   Provide this to retrieve the subsequent page.
+ *   All parameters except page size should match the parameters used in the
+ *   call that provided the page token.
+ * @param {object} [options]
+ *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+ * @returns {Stream}
+ *   An object stream which emits an object representing {@link protos.google.cloud.databasecenter.v1beta.DatabaseResourceIssue|DatabaseResourceIssue} on 'data' event.
+ *   The client library will perform auto-pagination by default: it will call the API as many
+ *   times as needed. Note that it can affect your quota.
+ *   We recommend using `queryIssuesAsync()`
+ *   method described below for async iteration which you can stop as needed.
+ *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+ *   for more details and examples.
+ */
+  queryIssuesStream(
+      request?: protos.google.cloud.databasecenter.v1beta.IQueryIssuesRequest,
+      options?: CallOptions):
+    Transform{
+    request = request || {};
+    options = options || {};
+    options.otherArgs = options.otherArgs || {};
+    options.otherArgs.headers = options.otherArgs.headers || {};
+    const defaultCallSettings = this._defaults['queryIssues'];
+    const callSettings = defaultCallSettings.merge(options);
+    this.initialize().catch(err => {throw err});
+    this._log.info('queryIssues stream %j', request);
+    return this.descriptors.page.queryIssues.createStream(
+      this.innerApiCalls.queryIssues as GaxCall,
+      request,
+      callSettings
+    );
+  }
+
+/**
+ * Equivalent to `queryIssues`, but returns an iterable object.
+ *
+ * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
+ * @param {Object} request
+ *   The request object that will be sent.
+ * @param {string} request.parent
+ *   Required. Parent can be a project, a folder, or an organization. The list
+ *   is limited to the one attached to resources within the `scope` that a user
+ *   has access to.
+ *
+ *   The allowed values are:
+ *
+ *   * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
+ *   * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
+ *   * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
+ *   * organizations/{ORGANIZATION_NUMBER} (e.g., "organizations/123456")
+ * @param {string} [request.filter]
+ *   Optional.
+ *   Supported fields are:
+ *   'product',
+ *   `location`,
+ *   `issue_severity`,
+ *   'tags',
+ *   'labels',
+ * @param {number[]} [request.signalProductsFilters]
+ *   Optional. Filters based on signal and product. The filter list will be ORed
+ *   across pairs and ANDed within a signal and products pair.
+ * @param {string} [request.orderBy]
+ *   Optional. Following fields are sortable:
+ *   SignalType
+ *   Product
+ *   Location
+ *   IssueSeverity
+ *
+ *   The default order is ascending. Add "DESC" after the field name to indicate
+ *   descending order. Add "ASC" after the field name to indicate ascending
+ *   order. It only supports a single field at a time.
+ * @param {number} [request.pageSize]
+ *   Optional. If unspecified, at most 50 issues will be returned.
+ *   The maximum value is 1000; values above 1000 will be coerced to 1000.
+ * @param {string} [request.pageToken]
+ *   Optional. A page token, received from a previous `QueryIssues` call.
+ *   Provide this to retrieve the subsequent page.
+ *   All parameters except page size should match the parameters used in the
+ *   call that provided the page token.
+ * @param {object} [options]
+ *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+ * @returns {Object}
+ *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
+ *   When you iterate the returned iterable, each element will be an object representing
+ *   {@link protos.google.cloud.databasecenter.v1beta.DatabaseResourceIssue|DatabaseResourceIssue}. The API will be called under the hood as needed, once per the page,
+ *   so you can stop the iteration when you don't need more results.
+ *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+ *   for more details and examples.
+ * @example <caption>include:samples/generated/v1beta/database_center.query_issues.js</caption>
+ * region_tag:databasecenter_v1beta_generated_DatabaseCenter_QueryIssues_async
+ */
+  queryIssuesAsync(
+      request?: protos.google.cloud.databasecenter.v1beta.IQueryIssuesRequest,
+      options?: CallOptions):
+    AsyncIterable<protos.google.cloud.databasecenter.v1beta.IDatabaseResourceIssue>{
+    request = request || {};
+    options = options || {};
+    options.otherArgs = options.otherArgs || {};
+    options.otherArgs.headers = options.otherArgs.headers || {};
+    const defaultCallSettings = this._defaults['queryIssues'];
+    const callSettings = defaultCallSettings.merge(options);
+    this.initialize().catch(err => {throw err});
+    this._log.info('queryIssues iterate %j', request);
+    return this.descriptors.page.queryIssues.asyncIterate(
+      this.innerApiCalls['queryIssues'] as GaxCall,
+      request as {},
+      callSettings
+    ) as AsyncIterable<protos.google.cloud.databasecenter.v1beta.IDatabaseResourceIssue>;
+  }
+
+  /**
+   * Terminate the gRPC channel and close the client.
+   *
+   * The client will no longer be usable and all future behavior is undefined.
+   * @returns {Promise} A promise that resolves when the client is closed.
+   */
+  close(): Promise<void> {
+    if (this.databaseCenterStub && !this._terminated) {
+      return this.databaseCenterStub.then(stub => {
+        this._log.info('ending gRPC channel');
+        this._terminated = true;
+        stub.close();
+      });
+    }
+    return Promise.resolve();
+  }
+}
\ No newline at end of file
diff --git a/owl-bot-staging/google-cloud-databasecenter/src/v1beta/database_center_client_config.json b/owl-bot-staging/google-cloud-databasecenter/src/v1beta/database_center_client_config.json
new file mode 100644
index 000000000000..c086bc02179a
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/src/v1beta/database_center_client_config.json
@@ -0,0 +1,46 @@
+{
+  "interfaces": {
+    "google.cloud.databasecenter.v1beta.DatabaseCenter": {
+      "retry_codes": {
+        "non_idempotent": [],
+        "idempotent": [
+          "DEADLINE_EXCEEDED",
+          "UNAVAILABLE"
+        ]
+      },
+      "retry_params": {
+        "default": {
+          "initial_retry_delay_millis": 100,
+          "retry_delay_multiplier": 1.3,
+          "max_retry_delay_millis": 60000,
+          "initial_rpc_timeout_millis": 60000,
+          "rpc_timeout_multiplier": 1,
+          "max_rpc_timeout_millis": 60000,
+          "total_timeout_millis": 600000
+        }
+      },
+      "methods": {
+        "QueryProducts": {
+          "retry_codes_name": "non_idempotent",
+          "retry_params_name": "default"
+        },
+        "AggregateFleet": {
+          "retry_codes_name": "non_idempotent",
+          "retry_params_name": "default"
+        },
+        "QueryDatabaseResourceGroups": {
+          "retry_codes_name": "non_idempotent",
+          "retry_params_name": "default"
+        },
+        "AggregateIssueStats": {
+          "retry_codes_name": "non_idempotent",
+          "retry_params_name": "default"
+        },
+        "QueryIssues": {
+          "retry_codes_name": "non_idempotent",
+          "retry_params_name": "default"
+        }
+      }
+    }
+  }
+}
diff --git a/owl-bot-staging/google-cloud-databasecenter/src/v1beta/database_center_proto_list.json b/owl-bot-staging/google-cloud-databasecenter/src/v1beta/database_center_proto_list.json
new file mode 100644
index 000000000000..1301ba42acc2
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/src/v1beta/database_center_proto_list.json
@@ -0,0 +1,11 @@
+[
+  "../../protos/google/cloud/databasecenter/v1beta/affiliation.proto",
+  "../../protos/google/cloud/databasecenter/v1beta/machine_config.proto",
+  "../../protos/google/cloud/databasecenter/v1beta/maintenance.proto",
+  "../../protos/google/cloud/databasecenter/v1beta/metric_data.proto",
+  "../../protos/google/cloud/databasecenter/v1beta/operation_error_type.proto",
+  "../../protos/google/cloud/databasecenter/v1beta/product.proto",
+  "../../protos/google/cloud/databasecenter/v1beta/service.proto",
+  "../../protos/google/cloud/databasecenter/v1beta/signals.proto",
+  "../../protos/google/cloud/databasecenter/v1beta/suspension_reason.proto"
+]
diff --git a/owl-bot-staging/google-cloud-databasecenter/src/v1beta/gapic_metadata.json b/owl-bot-staging/google-cloud-databasecenter/src/v1beta/gapic_metadata.json
new file mode 100644
index 000000000000..81836ea11a28
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/src/v1beta/gapic_metadata.json
@@ -0,0 +1,89 @@
+{
+  "schema": "1.0",
+  "comment": "This file maps proto services/RPCs to the corresponding library clients/methods",
+  "language": "typescript",
+  "protoPackage": "google.cloud.databasecenter.v1beta",
+  "libraryPackage": "@google-cloud/databasecenter",
+  "services": {
+    "DatabaseCenter": {
+      "clients": {
+        "grpc": {
+          "libraryClient": "DatabaseCenterClient",
+          "rpcs": {
+            "AggregateIssueStats": {
+              "methods": [
+                "aggregateIssueStats"
+              ]
+            },
+            "QueryProducts": {
+              "methods": [
+                "queryProducts",
+                "queryProductsStream",
+                "queryProductsAsync"
+              ]
+            },
+            "AggregateFleet": {
+              "methods": [
+                "aggregateFleet",
+                "aggregateFleetStream",
+                "aggregateFleetAsync"
+              ]
+            },
+            "QueryDatabaseResourceGroups": {
+              "methods": [
+                "queryDatabaseResourceGroups",
+                "queryDatabaseResourceGroupsStream",
+                "queryDatabaseResourceGroupsAsync"
+              ]
+            },
+            "QueryIssues": {
+              "methods": [
+                "queryIssues",
+                "queryIssuesStream",
+                "queryIssuesAsync"
+              ]
+            }
+          }
+        },
+        "grpc-fallback": {
+          "libraryClient": "DatabaseCenterClient",
+          "rpcs": {
+            "AggregateIssueStats": {
+              "methods": [
+                "aggregateIssueStats"
+              ]
+            },
+            "QueryProducts": {
+              "methods": [
+                "queryProducts",
+                "queryProductsStream",
+                "queryProductsAsync"
+              ]
+            },
+            "AggregateFleet": {
+              "methods": [
+                "aggregateFleet",
+                "aggregateFleetStream",
+                "aggregateFleetAsync"
+              ]
+            },
+            "QueryDatabaseResourceGroups": {
+              "methods": [
+                "queryDatabaseResourceGroups",
+                "queryDatabaseResourceGroupsStream",
+                "queryDatabaseResourceGroupsAsync"
+              ]
+            },
+            "QueryIssues": {
+              "methods": [
+                "queryIssues",
+                "queryIssuesStream",
+                "queryIssuesAsync"
+              ]
+            }
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/owl-bot-staging/google-cloud-databasecenter/src/v1beta/index.ts b/owl-bot-staging/google-cloud-databasecenter/src/v1beta/index.ts
new file mode 100644
index 000000000000..c20b333732da
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/src/v1beta/index.ts
@@ -0,0 +1,19 @@
+// Copyright 2026 Google LLC
+//
+// 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
+//
+//     https://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.
+//
+// ** This file is automatically generated by gapic-generator-typescript. **
+// ** https://github.com/googleapis/gapic-generator-typescript **
+// ** All changes to this file may be overwritten. **
+
+export {DatabaseCenterClient} from './database_center_client';
diff --git a/owl-bot-staging/google-cloud-databasecenter/system-test/fixtures/sample/src/index.js b/owl-bot-staging/google-cloud-databasecenter/system-test/fixtures/sample/src/index.js
new file mode 100644
index 000000000000..887ed9ccb7e7
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/system-test/fixtures/sample/src/index.js
@@ -0,0 +1,27 @@
+// Copyright 2026 Google LLC
+//
+// 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
+//
+//     https://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.
+//
+// ** This file is automatically generated by gapic-generator-typescript. **
+// ** https://github.com/googleapis/gapic-generator-typescript **
+// ** All changes to this file may be overwritten. **
+
+
+/* eslint-disable node/no-missing-require, no-unused-vars */
+const databasecenter = require('@google-cloud/databasecenter');
+
+function main() {
+  const databaseCenterClient = new databasecenter.DatabaseCenterClient();
+}
+
+main();
diff --git a/owl-bot-staging/google-cloud-databasecenter/system-test/fixtures/sample/src/index.ts b/owl-bot-staging/google-cloud-databasecenter/system-test/fixtures/sample/src/index.ts
new file mode 100644
index 000000000000..c9c95cb033f4
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/system-test/fixtures/sample/src/index.ts
@@ -0,0 +1,32 @@
+// Copyright 2026 Google LLC
+//
+// 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
+//
+//     https://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.
+//
+// ** This file is automatically generated by gapic-generator-typescript. **
+// ** https://github.com/googleapis/gapic-generator-typescript **
+// ** All changes to this file may be overwritten. **
+
+import {DatabaseCenterClient} from '@google-cloud/databasecenter';
+
+// check that the client class type name can be used
+function doStuffWithDatabaseCenterClient(client: DatabaseCenterClient) {
+  client.close();
+}
+
+function main() {
+  // check that the client instance can be created
+  const databaseCenterClient = new DatabaseCenterClient();
+  doStuffWithDatabaseCenterClient(databaseCenterClient);
+}
+
+main();
diff --git a/owl-bot-staging/google-cloud-databasecenter/system-test/install.ts b/owl-bot-staging/google-cloud-databasecenter/system-test/install.ts
new file mode 100644
index 000000000000..f66069aa3940
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/system-test/install.ts
@@ -0,0 +1,49 @@
+// Copyright 2026 Google LLC
+//
+// 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
+//
+//     https://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.
+//
+// ** This file is automatically generated by gapic-generator-typescript. **
+// ** https://github.com/googleapis/gapic-generator-typescript **
+// ** All changes to this file may be overwritten. **
+
+import {packNTest} from 'pack-n-play';
+import {readFileSync} from 'fs';
+import {describe, it} from 'mocha';
+
+describe('📦 pack-n-play test', () => {
+
+  it('TypeScript code', async function() {
+    this.timeout(300000);
+    const options = {
+      packageDir: process.cwd(),
+      sample: {
+        description: 'TypeScript user can use the type definitions',
+        ts: readFileSync('./system-test/fixtures/sample/src/index.ts').toString()
+      }
+    };
+    await packNTest(options);
+  });
+
+  it('JavaScript code', async function() {
+    this.timeout(300000);
+    const options = {
+      packageDir: process.cwd(),
+      sample: {
+        description: 'JavaScript user can use the library',
+        cjs: readFileSync('./system-test/fixtures/sample/src/index.js').toString()
+      }
+    };
+    await packNTest(options);
+  });
+
+});
diff --git a/owl-bot-staging/google-cloud-databasecenter/test/gapic_database_center_v1beta.ts b/owl-bot-staging/google-cloud-databasecenter/test/gapic_database_center_v1beta.ts
new file mode 100644
index 000000000000..c2a98de41383
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/test/gapic_database_center_v1beta.ts
@@ -0,0 +1,1036 @@
+// Copyright 2026 Google LLC
+//
+// 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
+//
+//     https://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.
+//
+// ** This file is automatically generated by gapic-generator-typescript. **
+// ** https://github.com/googleapis/gapic-generator-typescript **
+// ** All changes to this file may be overwritten. **
+
+import * as protos from '../protos/protos';
+import * as assert from 'assert';
+import * as sinon from 'sinon';
+import {SinonStub} from 'sinon';
+import {describe, it} from 'mocha';
+import * as databasecenterModule from '../src';
+
+import {PassThrough} from 'stream';
+
+import {protobuf} from 'google-gax';
+
+// Dynamically loaded proto JSON is needed to get the type information
+// to fill in default values for request objects
+const root = protobuf.Root.fromJSON(require('../protos/protos.json')).resolveAll();
+
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
+function getTypeDefaultValue(typeName: string, fields: string[]) {
+    let type = root.lookupType(typeName) as protobuf.Type;
+    for (const field of fields.slice(0, -1)) {
+        type = type.fields[field]?.resolvedType as protobuf.Type;
+    }
+    return type.fields[fields[fields.length - 1]]?.defaultValue;
+}
+
+function generateSampleMessage<T extends object>(instance: T) {
+    const filledObject = (instance.constructor as typeof protobuf.Message)
+        .toObject(instance as protobuf.Message<T>, {defaults: true});
+    return (instance.constructor as typeof protobuf.Message).fromObject(filledObject) as T;
+}
+
+function stubSimpleCall<ResponseType>(response?: ResponseType, error?: Error) {
+    return error ? sinon.stub().rejects(error) : sinon.stub().resolves([response]);
+}
+
+function stubSimpleCallWithCallback<ResponseType>(response?: ResponseType, error?: Error) {
+    return error ? sinon.stub().callsArgWith(2, error) : sinon.stub().callsArgWith(2, null, response);
+}
+
+function stubPageStreamingCall<ResponseType>(responses?: ResponseType[], error?: Error) {
+    const pagingStub = sinon.stub();
+    if (responses) {
+        for (let i = 0; i < responses.length; ++i) {
+            pagingStub.onCall(i).callsArgWith(2, null, responses[i]);
+        }
+    }
+    const transformStub = error ? sinon.stub().callsArgWith(2, error) : pagingStub;
+    const mockStream = new PassThrough({
+        objectMode: true,
+        transform: transformStub,
+    });
+    // trigger as many responses as needed
+    if (responses) {
+        for (let i = 0; i < responses.length; ++i) {
+            setImmediate(() => { mockStream.write({}); });
+        }
+        setImmediate(() => { mockStream.end(); });
+    } else {
+        setImmediate(() => { mockStream.write({}); });
+        setImmediate(() => { mockStream.end(); });
+    }
+    return sinon.stub().returns(mockStream);
+}
+
+function stubAsyncIterationCall<ResponseType>(responses?: ResponseType[], error?: Error) {
+    let counter = 0;
+    const asyncIterable = {
+        [Symbol.asyncIterator]() {
+            return {
+                async next() {
+                    if (error) {
+                        return Promise.reject(error);
+                    }
+                    if (counter >= responses!.length) {
+                        return Promise.resolve({done: true, value: undefined});
+                    }
+                    return Promise.resolve({done: false, value: responses![counter++]});
+                }
+            };
+        }
+    };
+    return sinon.stub().returns(asyncIterable);
+}
+
+describe('v1beta.DatabaseCenterClient', () => {
+    describe('Common methods', () => {
+        it('has apiEndpoint', () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient();
+            const apiEndpoint = client.apiEndpoint;
+            assert.strictEqual(apiEndpoint, 'databasecenter.googleapis.com');
+        });
+
+        it('has universeDomain', () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient();
+            const universeDomain = client.universeDomain;
+            assert.strictEqual(universeDomain, "googleapis.com");
+        });
+
+        if (typeof process === 'object' && typeof process.emitWarning === 'function') {
+            it('throws DeprecationWarning if static servicePath is used', () => {
+                const stub = sinon.stub(process, 'emitWarning');
+                const servicePath = databasecenterModule.v1beta.DatabaseCenterClient.servicePath;
+                assert.strictEqual(servicePath, 'databasecenter.googleapis.com');
+                assert(stub.called);
+                stub.restore();
+            });
+
+            it('throws DeprecationWarning if static apiEndpoint is used', () => {
+                const stub = sinon.stub(process, 'emitWarning');
+                const apiEndpoint = databasecenterModule.v1beta.DatabaseCenterClient.apiEndpoint;
+                assert.strictEqual(apiEndpoint, 'databasecenter.googleapis.com');
+                assert(stub.called);
+                stub.restore();
+            });
+        }
+        it('sets apiEndpoint according to universe domain camelCase', () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({universeDomain: 'example.com'});
+            const servicePath = client.apiEndpoint;
+            assert.strictEqual(servicePath, 'databasecenter.example.com');
+        });
+
+        it('sets apiEndpoint according to universe domain snakeCase', () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({universe_domain: 'example.com'});
+            const servicePath = client.apiEndpoint;
+            assert.strictEqual(servicePath, 'databasecenter.example.com');
+        });
+
+        if (typeof process === 'object' && 'env' in process) {
+            describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => {
+                it('sets apiEndpoint from environment variable', () => {
+                    const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+                    process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com';
+                    const client = new databasecenterModule.v1beta.DatabaseCenterClient();
+                    const servicePath = client.apiEndpoint;
+                    assert.strictEqual(servicePath, 'databasecenter.example.com');
+                    if (saved) {
+                        process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved;
+                    } else {
+                        delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+                    }
+                });
+
+                it('value configured in code has priority over environment variable', () => {
+                    const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+                    process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com';
+                    const client = new databasecenterModule.v1beta.DatabaseCenterClient({universeDomain: 'configured.example.com'});
+                    const servicePath = client.apiEndpoint;
+                    assert.strictEqual(servicePath, 'databasecenter.configured.example.com');
+                    if (saved) {
+                        process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved;
+                    } else {
+                        delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+                    }
+                });
+            });
+        }
+        it('does not allow setting both universeDomain and universe_domain', () => {
+            assert.throws(() => { new databasecenterModule.v1beta.DatabaseCenterClient({universe_domain: 'example.com', universeDomain: 'example.net'}); });
+        });
+
+        it('has port', () => {
+            const port = databasecenterModule.v1beta.DatabaseCenterClient.port;
+            assert(port);
+            assert(typeof port === 'number');
+        });
+
+        it('should create a client with no option', () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient();
+            assert(client);
+        });
+
+        it('should create a client with gRPC fallback', () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+                fallback: true,
+            });
+            assert(client);
+        });
+
+        it('has initialize method and supports deferred initialization', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+              credentials: {client_email: 'bogus', private_key: 'bogus'},
+              projectId: 'bogus',
+            });
+            assert.strictEqual(client.databaseCenterStub, undefined);
+            await client.initialize();
+            assert(client.databaseCenterStub);
+        });
+
+        it('has close method for the initialized client', done => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+              credentials: {client_email: 'bogus', private_key: 'bogus'},
+              projectId: 'bogus',
+            });
+            client.initialize().catch(err => {throw err});
+            assert(client.databaseCenterStub);
+            client.close().then(() => {
+                done();
+            }).catch(err => {throw err});
+        });
+
+        it('has close method for the non-initialized client', done => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+              credentials: {client_email: 'bogus', private_key: 'bogus'},
+              projectId: 'bogus',
+            });
+            assert.strictEqual(client.databaseCenterStub, undefined);
+            client.close().then(() => {
+                done();
+            }).catch(err => {throw err});
+        });
+
+        it('has getProjectId method', async () => {
+            const fakeProjectId = 'fake-project-id';
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+              credentials: {client_email: 'bogus', private_key: 'bogus'},
+              projectId: 'bogus',
+            });
+            client.auth.getProjectId = sinon.stub().resolves(fakeProjectId);
+            const result = await client.getProjectId();
+            assert.strictEqual(result, fakeProjectId);
+            assert((client.auth.getProjectId as SinonStub).calledWithExactly());
+        });
+
+        it('has getProjectId method with callback', async () => {
+            const fakeProjectId = 'fake-project-id';
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+              credentials: {client_email: 'bogus', private_key: 'bogus'},
+              projectId: 'bogus',
+            });
+            client.auth.getProjectId = sinon.stub().callsArgWith(0, null, fakeProjectId);
+            const promise = new Promise((resolve, reject) => {
+                client.getProjectId((err?: Error|null, projectId?: string|null) => {
+                    if (err) {
+                        reject(err);
+                    } else {
+                        resolve(projectId);
+                    }
+                });
+            });
+            const result = await promise;
+            assert.strictEqual(result, fakeProjectId);
+        });
+    });
+
+    describe('aggregateIssueStats', () => {
+        it('invokes aggregateIssueStats without error', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+              credentials: {client_email: 'bogus', private_key: 'bogus'},
+              projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest()
+            );
+            const expectedResponse = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse()
+            );
+            client.innerApiCalls.aggregateIssueStats = stubSimpleCall(expectedResponse);
+            const [response] = await client.aggregateIssueStats(request);
+            assert.deepStrictEqual(response, expectedResponse);
+        });
+
+        it('invokes aggregateIssueStats without error using callback', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+              credentials: {client_email: 'bogus', private_key: 'bogus'},
+              projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest()
+            );
+            const expectedResponse = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse()
+            );
+            client.innerApiCalls.aggregateIssueStats = stubSimpleCallWithCallback(expectedResponse);
+            const promise = new Promise((resolve, reject) => {
+                 client.aggregateIssueStats(
+                    request,
+                    (err?: Error|null, result?: protos.google.cloud.databasecenter.v1beta.IAggregateIssueStatsResponse|null) => {
+                        if (err) {
+                            reject(err);
+                        } else {
+                            resolve(result);
+                        }
+                    });
+            });
+            const response = await promise;
+            assert.deepStrictEqual(response, expectedResponse);
+        });
+
+        it('invokes aggregateIssueStats with error', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+              credentials: {client_email: 'bogus', private_key: 'bogus'},
+              projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest()
+            );
+            const expectedError = new Error('expected');
+            client.innerApiCalls.aggregateIssueStats = stubSimpleCall(undefined, expectedError);
+            await assert.rejects(client.aggregateIssueStats(request), expectedError);
+        });
+
+        it('invokes aggregateIssueStats with closed client', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+              credentials: {client_email: 'bogus', private_key: 'bogus'},
+              projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest()
+            );
+            const expectedError = new Error('The client has already been closed.');
+            client.close().catch(err => {throw err});
+            await assert.rejects(client.aggregateIssueStats(request), expectedError);
+        });
+    });
+
+    describe('queryProducts', () => {
+        it('invokes queryProducts without error', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+                credentials: {client_email: 'bogus', private_key: 'bogus'},
+                projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.QueryProductsRequest()
+            );const expectedResponse = [
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.Product()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.Product()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.Product()),
+            ];
+            client.innerApiCalls.queryProducts = stubSimpleCall(expectedResponse);
+            const [response] = await client.queryProducts(request);
+            assert.deepStrictEqual(response, expectedResponse);
+        });
+
+        it('invokes queryProducts without error using callback', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+                credentials: {client_email: 'bogus', private_key: 'bogus'},
+                projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.QueryProductsRequest()
+            );const expectedResponse = [
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.Product()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.Product()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.Product()),
+            ];
+            client.innerApiCalls.queryProducts = stubSimpleCallWithCallback(expectedResponse);
+            const promise = new Promise((resolve, reject) => {
+                 client.queryProducts(
+                    request,
+                    (err?: Error|null, result?: protos.google.cloud.databasecenter.v1beta.IProduct[]|null) => {
+                        if (err) {
+                            reject(err);
+                        } else {
+                            resolve(result);
+                        }
+                    });
+            });
+            const response = await promise;
+            assert.deepStrictEqual(response, expectedResponse);
+        });
+
+        it('invokes queryProducts with error', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+                credentials: {client_email: 'bogus', private_key: 'bogus'},
+                projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.QueryProductsRequest()
+            );
+            const expectedError = new Error('expected');
+            client.innerApiCalls.queryProducts = stubSimpleCall(undefined, expectedError);
+            await assert.rejects(client.queryProducts(request), expectedError);
+        });
+
+        it('invokes queryProductsStream without error', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+                credentials: {client_email: 'bogus', private_key: 'bogus'},
+                projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.QueryProductsRequest()
+            );
+            const expectedResponse = [
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.Product()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.Product()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.Product()),
+            ];
+            client.descriptors.page.queryProducts.createStream = stubPageStreamingCall(expectedResponse);
+            const stream = client.queryProductsStream(request);
+            const promise = new Promise((resolve, reject) => {
+                const responses: protos.google.cloud.databasecenter.v1beta.Product[] = [];
+                stream.on('data', (response: protos.google.cloud.databasecenter.v1beta.Product) => {
+                    responses.push(response);
+                });
+                stream.on('end', () => {
+                    resolve(responses);
+                });
+                stream.on('error', (err: Error) => {
+                    reject(err);
+                });
+            });
+            const responses = await promise;
+            assert.deepStrictEqual(responses, expectedResponse);
+            assert((client.descriptors.page.queryProducts.createStream as SinonStub)
+                .getCall(0).calledWith(client.innerApiCalls.queryProducts, request));
+        });
+
+        it('invokes queryProductsStream with error', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+                credentials: {client_email: 'bogus', private_key: 'bogus'},
+                projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.QueryProductsRequest()
+            );
+            const expectedError = new Error('expected');
+            client.descriptors.page.queryProducts.createStream = stubPageStreamingCall(undefined, expectedError);
+            const stream = client.queryProductsStream(request);
+            const promise = new Promise((resolve, reject) => {
+                const responses: protos.google.cloud.databasecenter.v1beta.Product[] = [];
+                stream.on('data', (response: protos.google.cloud.databasecenter.v1beta.Product) => {
+                    responses.push(response);
+                });
+                stream.on('end', () => {
+                    resolve(responses);
+                });
+                stream.on('error', (err: Error) => {
+                    reject(err);
+                });
+            });
+            await assert.rejects(promise, expectedError);
+            assert((client.descriptors.page.queryProducts.createStream as SinonStub)
+                .getCall(0).calledWith(client.innerApiCalls.queryProducts, request));
+        });
+
+        it('uses async iteration with queryProducts without error', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+              credentials: {client_email: 'bogus', private_key: 'bogus'},
+              projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.QueryProductsRequest()
+            );
+            const expectedResponse = [
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.Product()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.Product()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.Product()),
+            ];
+            client.descriptors.page.queryProducts.asyncIterate = stubAsyncIterationCall(expectedResponse);
+            const responses: protos.google.cloud.databasecenter.v1beta.IProduct[] = [];
+            const iterable = client.queryProductsAsync(request);
+            for await (const resource of iterable) {
+                responses.push(resource!);
+            }
+            assert.deepStrictEqual(responses, expectedResponse);
+            assert.deepStrictEqual(
+                (client.descriptors.page.queryProducts.asyncIterate as SinonStub)
+                    .getCall(0).args[1], request);
+        });
+
+        it('uses async iteration with queryProducts with error', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+                credentials: {client_email: 'bogus', private_key: 'bogus'},
+                projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.QueryProductsRequest()
+            );
+            const expectedError = new Error('expected');
+            client.descriptors.page.queryProducts.asyncIterate = stubAsyncIterationCall(undefined, expectedError);
+            const iterable = client.queryProductsAsync(request);
+            await assert.rejects(async () => {
+                const responses: protos.google.cloud.databasecenter.v1beta.IProduct[] = [];
+                for await (const resource of iterable) {
+                    responses.push(resource!);
+                }
+            });
+            assert.deepStrictEqual(
+                (client.descriptors.page.queryProducts.asyncIterate as SinonStub)
+                    .getCall(0).args[1], request);
+        });
+    });
+
+    describe('aggregateFleet', () => {
+        it('invokes aggregateFleet without error', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+                credentials: {client_email: 'bogus', private_key: 'bogus'},
+                projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.AggregateFleetRequest()
+            );const expectedResponse = [
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.AggregateFleetRow()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.AggregateFleetRow()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.AggregateFleetRow()),
+            ];
+            client.innerApiCalls.aggregateFleet = stubSimpleCall(expectedResponse);
+            const [response] = await client.aggregateFleet(request);
+            assert.deepStrictEqual(response, expectedResponse);
+        });
+
+        it('invokes aggregateFleet without error using callback', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+                credentials: {client_email: 'bogus', private_key: 'bogus'},
+                projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.AggregateFleetRequest()
+            );const expectedResponse = [
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.AggregateFleetRow()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.AggregateFleetRow()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.AggregateFleetRow()),
+            ];
+            client.innerApiCalls.aggregateFleet = stubSimpleCallWithCallback(expectedResponse);
+            const promise = new Promise((resolve, reject) => {
+                 client.aggregateFleet(
+                    request,
+                    (err?: Error|null, result?: protos.google.cloud.databasecenter.v1beta.IAggregateFleetRow[]|null) => {
+                        if (err) {
+                            reject(err);
+                        } else {
+                            resolve(result);
+                        }
+                    });
+            });
+            const response = await promise;
+            assert.deepStrictEqual(response, expectedResponse);
+        });
+
+        it('invokes aggregateFleet with error', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+                credentials: {client_email: 'bogus', private_key: 'bogus'},
+                projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.AggregateFleetRequest()
+            );
+            const expectedError = new Error('expected');
+            client.innerApiCalls.aggregateFleet = stubSimpleCall(undefined, expectedError);
+            await assert.rejects(client.aggregateFleet(request), expectedError);
+        });
+
+        it('invokes aggregateFleetStream without error', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+                credentials: {client_email: 'bogus', private_key: 'bogus'},
+                projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.AggregateFleetRequest()
+            );
+            const expectedResponse = [
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.AggregateFleetRow()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.AggregateFleetRow()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.AggregateFleetRow()),
+            ];
+            client.descriptors.page.aggregateFleet.createStream = stubPageStreamingCall(expectedResponse);
+            const stream = client.aggregateFleetStream(request);
+            const promise = new Promise((resolve, reject) => {
+                const responses: protos.google.cloud.databasecenter.v1beta.AggregateFleetRow[] = [];
+                stream.on('data', (response: protos.google.cloud.databasecenter.v1beta.AggregateFleetRow) => {
+                    responses.push(response);
+                });
+                stream.on('end', () => {
+                    resolve(responses);
+                });
+                stream.on('error', (err: Error) => {
+                    reject(err);
+                });
+            });
+            const responses = await promise;
+            assert.deepStrictEqual(responses, expectedResponse);
+            assert((client.descriptors.page.aggregateFleet.createStream as SinonStub)
+                .getCall(0).calledWith(client.innerApiCalls.aggregateFleet, request));
+        });
+
+        it('invokes aggregateFleetStream with error', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+                credentials: {client_email: 'bogus', private_key: 'bogus'},
+                projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.AggregateFleetRequest()
+            );
+            const expectedError = new Error('expected');
+            client.descriptors.page.aggregateFleet.createStream = stubPageStreamingCall(undefined, expectedError);
+            const stream = client.aggregateFleetStream(request);
+            const promise = new Promise((resolve, reject) => {
+                const responses: protos.google.cloud.databasecenter.v1beta.AggregateFleetRow[] = [];
+                stream.on('data', (response: protos.google.cloud.databasecenter.v1beta.AggregateFleetRow) => {
+                    responses.push(response);
+                });
+                stream.on('end', () => {
+                    resolve(responses);
+                });
+                stream.on('error', (err: Error) => {
+                    reject(err);
+                });
+            });
+            await assert.rejects(promise, expectedError);
+            assert((client.descriptors.page.aggregateFleet.createStream as SinonStub)
+                .getCall(0).calledWith(client.innerApiCalls.aggregateFleet, request));
+        });
+
+        it('uses async iteration with aggregateFleet without error', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+              credentials: {client_email: 'bogus', private_key: 'bogus'},
+              projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.AggregateFleetRequest()
+            );
+            const expectedResponse = [
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.AggregateFleetRow()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.AggregateFleetRow()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.AggregateFleetRow()),
+            ];
+            client.descriptors.page.aggregateFleet.asyncIterate = stubAsyncIterationCall(expectedResponse);
+            const responses: protos.google.cloud.databasecenter.v1beta.IAggregateFleetRow[] = [];
+            const iterable = client.aggregateFleetAsync(request);
+            for await (const resource of iterable) {
+                responses.push(resource!);
+            }
+            assert.deepStrictEqual(responses, expectedResponse);
+            assert.deepStrictEqual(
+                (client.descriptors.page.aggregateFleet.asyncIterate as SinonStub)
+                    .getCall(0).args[1], request);
+        });
+
+        it('uses async iteration with aggregateFleet with error', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+                credentials: {client_email: 'bogus', private_key: 'bogus'},
+                projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.AggregateFleetRequest()
+            );
+            const expectedError = new Error('expected');
+            client.descriptors.page.aggregateFleet.asyncIterate = stubAsyncIterationCall(undefined, expectedError);
+            const iterable = client.aggregateFleetAsync(request);
+            await assert.rejects(async () => {
+                const responses: protos.google.cloud.databasecenter.v1beta.IAggregateFleetRow[] = [];
+                for await (const resource of iterable) {
+                    responses.push(resource!);
+                }
+            });
+            assert.deepStrictEqual(
+                (client.descriptors.page.aggregateFleet.asyncIterate as SinonStub)
+                    .getCall(0).args[1], request);
+        });
+    });
+
+    describe('queryDatabaseResourceGroups', () => {
+        it('invokes queryDatabaseResourceGroups without error', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+                credentials: {client_email: 'bogus', private_key: 'bogus'},
+                projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest()
+            );const expectedResponse = [
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.DatabaseResourceGroup()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.DatabaseResourceGroup()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.DatabaseResourceGroup()),
+            ];
+            client.innerApiCalls.queryDatabaseResourceGroups = stubSimpleCall(expectedResponse);
+            const [response] = await client.queryDatabaseResourceGroups(request);
+            assert.deepStrictEqual(response, expectedResponse);
+        });
+
+        it('invokes queryDatabaseResourceGroups without error using callback', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+                credentials: {client_email: 'bogus', private_key: 'bogus'},
+                projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest()
+            );const expectedResponse = [
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.DatabaseResourceGroup()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.DatabaseResourceGroup()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.DatabaseResourceGroup()),
+            ];
+            client.innerApiCalls.queryDatabaseResourceGroups = stubSimpleCallWithCallback(expectedResponse);
+            const promise = new Promise((resolve, reject) => {
+                 client.queryDatabaseResourceGroups(
+                    request,
+                    (err?: Error|null, result?: protos.google.cloud.databasecenter.v1beta.IDatabaseResourceGroup[]|null) => {
+                        if (err) {
+                            reject(err);
+                        } else {
+                            resolve(result);
+                        }
+                    });
+            });
+            const response = await promise;
+            assert.deepStrictEqual(response, expectedResponse);
+        });
+
+        it('invokes queryDatabaseResourceGroups with error', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+                credentials: {client_email: 'bogus', private_key: 'bogus'},
+                projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest()
+            );
+            const expectedError = new Error('expected');
+            client.innerApiCalls.queryDatabaseResourceGroups = stubSimpleCall(undefined, expectedError);
+            await assert.rejects(client.queryDatabaseResourceGroups(request), expectedError);
+        });
+
+        it('invokes queryDatabaseResourceGroupsStream without error', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+                credentials: {client_email: 'bogus', private_key: 'bogus'},
+                projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest()
+            );
+            const expectedResponse = [
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.DatabaseResourceGroup()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.DatabaseResourceGroup()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.DatabaseResourceGroup()),
+            ];
+            client.descriptors.page.queryDatabaseResourceGroups.createStream = stubPageStreamingCall(expectedResponse);
+            const stream = client.queryDatabaseResourceGroupsStream(request);
+            const promise = new Promise((resolve, reject) => {
+                const responses: protos.google.cloud.databasecenter.v1beta.DatabaseResourceGroup[] = [];
+                stream.on('data', (response: protos.google.cloud.databasecenter.v1beta.DatabaseResourceGroup) => {
+                    responses.push(response);
+                });
+                stream.on('end', () => {
+                    resolve(responses);
+                });
+                stream.on('error', (err: Error) => {
+                    reject(err);
+                });
+            });
+            const responses = await promise;
+            assert.deepStrictEqual(responses, expectedResponse);
+            assert((client.descriptors.page.queryDatabaseResourceGroups.createStream as SinonStub)
+                .getCall(0).calledWith(client.innerApiCalls.queryDatabaseResourceGroups, request));
+        });
+
+        it('invokes queryDatabaseResourceGroupsStream with error', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+                credentials: {client_email: 'bogus', private_key: 'bogus'},
+                projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest()
+            );
+            const expectedError = new Error('expected');
+            client.descriptors.page.queryDatabaseResourceGroups.createStream = stubPageStreamingCall(undefined, expectedError);
+            const stream = client.queryDatabaseResourceGroupsStream(request);
+            const promise = new Promise((resolve, reject) => {
+                const responses: protos.google.cloud.databasecenter.v1beta.DatabaseResourceGroup[] = [];
+                stream.on('data', (response: protos.google.cloud.databasecenter.v1beta.DatabaseResourceGroup) => {
+                    responses.push(response);
+                });
+                stream.on('end', () => {
+                    resolve(responses);
+                });
+                stream.on('error', (err: Error) => {
+                    reject(err);
+                });
+            });
+            await assert.rejects(promise, expectedError);
+            assert((client.descriptors.page.queryDatabaseResourceGroups.createStream as SinonStub)
+                .getCall(0).calledWith(client.innerApiCalls.queryDatabaseResourceGroups, request));
+        });
+
+        it('uses async iteration with queryDatabaseResourceGroups without error', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+              credentials: {client_email: 'bogus', private_key: 'bogus'},
+              projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest()
+            );
+            const expectedResponse = [
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.DatabaseResourceGroup()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.DatabaseResourceGroup()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.DatabaseResourceGroup()),
+            ];
+            client.descriptors.page.queryDatabaseResourceGroups.asyncIterate = stubAsyncIterationCall(expectedResponse);
+            const responses: protos.google.cloud.databasecenter.v1beta.IDatabaseResourceGroup[] = [];
+            const iterable = client.queryDatabaseResourceGroupsAsync(request);
+            for await (const resource of iterable) {
+                responses.push(resource!);
+            }
+            assert.deepStrictEqual(responses, expectedResponse);
+            assert.deepStrictEqual(
+                (client.descriptors.page.queryDatabaseResourceGroups.asyncIterate as SinonStub)
+                    .getCall(0).args[1], request);
+        });
+
+        it('uses async iteration with queryDatabaseResourceGroups with error', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+                credentials: {client_email: 'bogus', private_key: 'bogus'},
+                projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest()
+            );
+            const expectedError = new Error('expected');
+            client.descriptors.page.queryDatabaseResourceGroups.asyncIterate = stubAsyncIterationCall(undefined, expectedError);
+            const iterable = client.queryDatabaseResourceGroupsAsync(request);
+            await assert.rejects(async () => {
+                const responses: protos.google.cloud.databasecenter.v1beta.IDatabaseResourceGroup[] = [];
+                for await (const resource of iterable) {
+                    responses.push(resource!);
+                }
+            });
+            assert.deepStrictEqual(
+                (client.descriptors.page.queryDatabaseResourceGroups.asyncIterate as SinonStub)
+                    .getCall(0).args[1], request);
+        });
+    });
+
+    describe('queryIssues', () => {
+        it('invokes queryIssues without error', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+                credentials: {client_email: 'bogus', private_key: 'bogus'},
+                projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.QueryIssuesRequest()
+            );const expectedResponse = [
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.DatabaseResourceIssue()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.DatabaseResourceIssue()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.DatabaseResourceIssue()),
+            ];
+            client.innerApiCalls.queryIssues = stubSimpleCall(expectedResponse);
+            const [response] = await client.queryIssues(request);
+            assert.deepStrictEqual(response, expectedResponse);
+        });
+
+        it('invokes queryIssues without error using callback', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+                credentials: {client_email: 'bogus', private_key: 'bogus'},
+                projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.QueryIssuesRequest()
+            );const expectedResponse = [
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.DatabaseResourceIssue()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.DatabaseResourceIssue()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.DatabaseResourceIssue()),
+            ];
+            client.innerApiCalls.queryIssues = stubSimpleCallWithCallback(expectedResponse);
+            const promise = new Promise((resolve, reject) => {
+                 client.queryIssues(
+                    request,
+                    (err?: Error|null, result?: protos.google.cloud.databasecenter.v1beta.IDatabaseResourceIssue[]|null) => {
+                        if (err) {
+                            reject(err);
+                        } else {
+                            resolve(result);
+                        }
+                    });
+            });
+            const response = await promise;
+            assert.deepStrictEqual(response, expectedResponse);
+        });
+
+        it('invokes queryIssues with error', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+                credentials: {client_email: 'bogus', private_key: 'bogus'},
+                projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.QueryIssuesRequest()
+            );
+            const expectedError = new Error('expected');
+            client.innerApiCalls.queryIssues = stubSimpleCall(undefined, expectedError);
+            await assert.rejects(client.queryIssues(request), expectedError);
+        });
+
+        it('invokes queryIssuesStream without error', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+                credentials: {client_email: 'bogus', private_key: 'bogus'},
+                projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.QueryIssuesRequest()
+            );
+            const expectedResponse = [
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.DatabaseResourceIssue()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.DatabaseResourceIssue()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.DatabaseResourceIssue()),
+            ];
+            client.descriptors.page.queryIssues.createStream = stubPageStreamingCall(expectedResponse);
+            const stream = client.queryIssuesStream(request);
+            const promise = new Promise((resolve, reject) => {
+                const responses: protos.google.cloud.databasecenter.v1beta.DatabaseResourceIssue[] = [];
+                stream.on('data', (response: protos.google.cloud.databasecenter.v1beta.DatabaseResourceIssue) => {
+                    responses.push(response);
+                });
+                stream.on('end', () => {
+                    resolve(responses);
+                });
+                stream.on('error', (err: Error) => {
+                    reject(err);
+                });
+            });
+            const responses = await promise;
+            assert.deepStrictEqual(responses, expectedResponse);
+            assert((client.descriptors.page.queryIssues.createStream as SinonStub)
+                .getCall(0).calledWith(client.innerApiCalls.queryIssues, request));
+        });
+
+        it('invokes queryIssuesStream with error', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+                credentials: {client_email: 'bogus', private_key: 'bogus'},
+                projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.QueryIssuesRequest()
+            );
+            const expectedError = new Error('expected');
+            client.descriptors.page.queryIssues.createStream = stubPageStreamingCall(undefined, expectedError);
+            const stream = client.queryIssuesStream(request);
+            const promise = new Promise((resolve, reject) => {
+                const responses: protos.google.cloud.databasecenter.v1beta.DatabaseResourceIssue[] = [];
+                stream.on('data', (response: protos.google.cloud.databasecenter.v1beta.DatabaseResourceIssue) => {
+                    responses.push(response);
+                });
+                stream.on('end', () => {
+                    resolve(responses);
+                });
+                stream.on('error', (err: Error) => {
+                    reject(err);
+                });
+            });
+            await assert.rejects(promise, expectedError);
+            assert((client.descriptors.page.queryIssues.createStream as SinonStub)
+                .getCall(0).calledWith(client.innerApiCalls.queryIssues, request));
+        });
+
+        it('uses async iteration with queryIssues without error', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+              credentials: {client_email: 'bogus', private_key: 'bogus'},
+              projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.QueryIssuesRequest()
+            );
+            const expectedResponse = [
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.DatabaseResourceIssue()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.DatabaseResourceIssue()),
+              generateSampleMessage(new protos.google.cloud.databasecenter.v1beta.DatabaseResourceIssue()),
+            ];
+            client.descriptors.page.queryIssues.asyncIterate = stubAsyncIterationCall(expectedResponse);
+            const responses: protos.google.cloud.databasecenter.v1beta.IDatabaseResourceIssue[] = [];
+            const iterable = client.queryIssuesAsync(request);
+            for await (const resource of iterable) {
+                responses.push(resource!);
+            }
+            assert.deepStrictEqual(responses, expectedResponse);
+            assert.deepStrictEqual(
+                (client.descriptors.page.queryIssues.asyncIterate as SinonStub)
+                    .getCall(0).args[1], request);
+        });
+
+        it('uses async iteration with queryIssues with error', async () => {
+            const client = new databasecenterModule.v1beta.DatabaseCenterClient({
+                credentials: {client_email: 'bogus', private_key: 'bogus'},
+                projectId: 'bogus',
+            });
+            await client.initialize();
+            const request = generateSampleMessage(
+              new protos.google.cloud.databasecenter.v1beta.QueryIssuesRequest()
+            );
+            const expectedError = new Error('expected');
+            client.descriptors.page.queryIssues.asyncIterate = stubAsyncIterationCall(undefined, expectedError);
+            const iterable = client.queryIssuesAsync(request);
+            await assert.rejects(async () => {
+                const responses: protos.google.cloud.databasecenter.v1beta.IDatabaseResourceIssue[] = [];
+                for await (const resource of iterable) {
+                    responses.push(resource!);
+                }
+            });
+            assert.deepStrictEqual(
+                (client.descriptors.page.queryIssues.asyncIterate as SinonStub)
+                    .getCall(0).args[1], request);
+        });
+    });
+});
diff --git a/owl-bot-staging/google-cloud-databasecenter/tsconfig.json b/owl-bot-staging/google-cloud-databasecenter/tsconfig.json
new file mode 100644
index 000000000000..ca73e7bfc824
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/tsconfig.json
@@ -0,0 +1,22 @@
+{
+  "extends": "./node_modules/gts/tsconfig-google.json",
+  "compilerOptions": {
+    "rootDir": ".",
+    "outDir": "build",
+    "resolveJsonModule": true,
+    "lib": [
+      "es2023",
+      "dom"
+    ]
+  },
+  "include": [
+    "src/*.ts",
+    "src/**/*.ts",
+    "test/*.ts",
+    "test/**/*.ts",
+    "system-test/*.ts",
+    "src/**/*.json",
+    "samples/**/*.json",
+    "protos/protos.json"
+  ]
+}
diff --git a/owl-bot-staging/google-cloud-databasecenter/webpack.config.js b/owl-bot-staging/google-cloud-databasecenter/webpack.config.js
new file mode 100644
index 000000000000..295693c1cd81
--- /dev/null
+++ b/owl-bot-staging/google-cloud-databasecenter/webpack.config.js
@@ -0,0 +1,64 @@
+// Copyright 2021 Google LLC
+//
+// 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
+//
+//     https://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.
+
+const path = require('path');
+
+module.exports = {
+  entry: './src/index.ts',
+  output: {
+    library: 'DatabaseCenter',
+    filename: './database-center.js',
+  },
+  node: {
+    child_process: 'empty',
+    fs: 'empty',
+    crypto: 'empty',
+  },
+  resolve: {
+    alias: {
+      '../../../package.json': path.resolve(__dirname, 'package.json'),
+    },
+    extensions: ['.js', '.json', '.ts'],
+  },
+  module: {
+    rules: [
+      {
+        test: /\.tsx?$/,
+        use: 'ts-loader',
+        exclude: /node_modules/
+      },
+      {
+        test: /node_modules[\\/]@grpc[\\/]grpc-js/,
+        use: 'null-loader'
+      },
+      {
+        test: /node_modules[\\/]grpc/,
+        use: 'null-loader'
+      },
+      {
+        test: /node_modules[\\/]retry-request/,
+        use: 'null-loader'
+      },
+      {
+        test: /node_modules[\\/]https?-proxy-agent/,
+        use: 'null-loader'
+      },
+      {
+        test: /node_modules[\\/]gtoken/,
+        use: 'null-loader'
+      },
+    ],
+  },
+  mode: 'production',
+};

From c536fa81bb40af688e2461ff25033c5882ae0f3e Mon Sep 17 00:00:00 2001
From: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
Date: Wed, 6 May 2026 21:11:04 +0000
Subject: [PATCH 5/6] =?UTF-8?q?=F0=9F=A6=89=20Updates=20from=20OwlBot=20po?=
 =?UTF-8?q?st-processor?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
---
 .../google-cloud-databasecenter/.OwlBot.yaml  |  19 --
 .../google-cloud-databasecenter/LICENSE       | 202 ------------------
 .../google-cloud-databasecenter/.OwlBot.yaml  |   4 +-
 .../google-cloud-databasecenter/.eslintignore |   0
 .../.eslintrc.json                            |   0
 .../.gitattributes                            |   0
 .../google-cloud-databasecenter/.gitignore    |   0
 .../google-cloud-databasecenter/.jsdoc.js     |   0
 .../google-cloud-databasecenter/.mocharc.js   |   0
 .../google-cloud-databasecenter/.nycrc        |   0
 .../.prettierignore                           |   0
 .../.prettierrc.js                            |   0
 .../CODE_OF_CONDUCT.md                        |   0
 .../CONTRIBUTING.md                           |   0
 .../google-cloud-databasecenter/README.md     |   0
 .../databasecenter/v1beta/affiliation.proto   |   0
 .../v1beta/machine_config.proto               |   0
 .../databasecenter/v1beta/maintenance.proto   |   0
 .../databasecenter/v1beta/metric_data.proto   |   0
 .../v1beta/operation_error_type.proto         |   0
 .../cloud/databasecenter/v1beta/product.proto |   0
 .../cloud/databasecenter/v1beta/service.proto |   0
 .../cloud/databasecenter/v1beta/signals.proto |   0
 .../v1beta/suspension_reason.proto            |   0
 .../protos/protos.d.ts                        |   0
 .../protos/protos.js                          |   0
 .../protos/protos.json                        |   0
 .../v1beta/database_center.aggregate_fleet.js |   0
 .../database_center.aggregate_issue_stats.js  |   0
 ...e_center.query_database_resource_groups.js |   0
 .../v1beta/database_center.query_issues.js    |   0
 .../v1beta/database_center.query_products.js  |   0
 ...ta_google.cloud.databasecenter.v1beta.json |   0
 .../google-cloud-databasecenter/src/index.ts  |   0
 .../src/v1beta/database_center_client.ts      |   0
 .../v1beta/database_center_client_config.json |   0
 .../v1beta/database_center_proto_list.json    |   0
 .../src/v1beta/gapic_metadata.json            |   0
 .../src/v1beta/index.ts                       |   0
 .../system-test/fixtures/sample/src/index.js  |   0
 .../system-test/fixtures/sample/src/index.ts  |   0
 .../system-test/install.ts                    |   0
 .../test/gapic_database_center_v1beta.ts      |   0
 .../google-cloud-databasecenter/tsconfig.json |   0
 .../webpack.config.js                         |   0
 45 files changed, 2 insertions(+), 223 deletions(-)
 delete mode 100644 owl-bot-staging/google-cloud-databasecenter/.OwlBot.yaml
 delete mode 100644 owl-bot-staging/google-cloud-databasecenter/LICENSE
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/.eslintignore (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/.eslintrc.json (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/.gitattributes (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/.gitignore (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/.jsdoc.js (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/.mocharc.js (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/.nycrc (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/.prettierignore (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/.prettierrc.js (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/CODE_OF_CONDUCT.md (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/CONTRIBUTING.md (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/README.md (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/affiliation.proto (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/machine_config.proto (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/maintenance.proto (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/metric_data.proto (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/operation_error_type.proto (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/product.proto (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/service.proto (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/signals.proto (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/suspension_reason.proto (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/protos/protos.d.ts (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/protos/protos.js (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/protos/protos.json (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_fleet.js (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_issue_stats.js (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_database_resource_groups.js (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_issues.js (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_products.js (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/samples/generated/v1beta/snippet_metadata_google.cloud.databasecenter.v1beta.json (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/src/index.ts (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/src/v1beta/database_center_client.ts (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/src/v1beta/database_center_client_config.json (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/src/v1beta/database_center_proto_list.json (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/src/v1beta/gapic_metadata.json (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/src/v1beta/index.ts (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/system-test/fixtures/sample/src/index.js (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/system-test/fixtures/sample/src/index.ts (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/system-test/install.ts (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/test/gapic_database_center_v1beta.ts (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/tsconfig.json (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/webpack.config.js (100%)

diff --git a/owl-bot-staging/google-cloud-databasecenter/.OwlBot.yaml b/owl-bot-staging/google-cloud-databasecenter/.OwlBot.yaml
deleted file mode 100644
index 75844859dea9..000000000000
--- a/owl-bot-staging/google-cloud-databasecenter/.OwlBot.yaml
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright 2025 Google LLC
-#
-# 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.
-
-deep-copy-regex:
-    - source: /google/cloud/databasecenter/google-cloud-databasecenter-nodejs
-      dest: /owl-bot-staging/google-cloud-databasecenter
-
-api-name: databasecenter
\ No newline at end of file
diff --git a/owl-bot-staging/google-cloud-databasecenter/LICENSE b/owl-bot-staging/google-cloud-databasecenter/LICENSE
deleted file mode 100644
index d64569567334..000000000000
--- a/owl-bot-staging/google-cloud-databasecenter/LICENSE
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/packages/google-cloud-databasecenter/.OwlBot.yaml b/packages/google-cloud-databasecenter/.OwlBot.yaml
index 9879f6a21b9b..75844859dea9 100644
--- a/packages/google-cloud-databasecenter/.OwlBot.yaml
+++ b/packages/google-cloud-databasecenter/.OwlBot.yaml
@@ -1,4 +1,4 @@
-# Copyright 2022 Google LLC
+# Copyright 2025 Google LLC
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -16,4 +16,4 @@ deep-copy-regex:
     - source: /google/cloud/databasecenter/google-cloud-databasecenter-nodejs
       dest: /owl-bot-staging/google-cloud-databasecenter
 
-api-name: databasecenter
+api-name: databasecenter
\ No newline at end of file
diff --git a/owl-bot-staging/google-cloud-databasecenter/.eslintignore b/packages/google-cloud-databasecenter/.eslintignore
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/.eslintignore
rename to packages/google-cloud-databasecenter/.eslintignore
diff --git a/owl-bot-staging/google-cloud-databasecenter/.eslintrc.json b/packages/google-cloud-databasecenter/.eslintrc.json
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/.eslintrc.json
rename to packages/google-cloud-databasecenter/.eslintrc.json
diff --git a/owl-bot-staging/google-cloud-databasecenter/.gitattributes b/packages/google-cloud-databasecenter/.gitattributes
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/.gitattributes
rename to packages/google-cloud-databasecenter/.gitattributes
diff --git a/owl-bot-staging/google-cloud-databasecenter/.gitignore b/packages/google-cloud-databasecenter/.gitignore
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/.gitignore
rename to packages/google-cloud-databasecenter/.gitignore
diff --git a/owl-bot-staging/google-cloud-databasecenter/.jsdoc.js b/packages/google-cloud-databasecenter/.jsdoc.js
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/.jsdoc.js
rename to packages/google-cloud-databasecenter/.jsdoc.js
diff --git a/owl-bot-staging/google-cloud-databasecenter/.mocharc.js b/packages/google-cloud-databasecenter/.mocharc.js
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/.mocharc.js
rename to packages/google-cloud-databasecenter/.mocharc.js
diff --git a/owl-bot-staging/google-cloud-databasecenter/.nycrc b/packages/google-cloud-databasecenter/.nycrc
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/.nycrc
rename to packages/google-cloud-databasecenter/.nycrc
diff --git a/owl-bot-staging/google-cloud-databasecenter/.prettierignore b/packages/google-cloud-databasecenter/.prettierignore
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/.prettierignore
rename to packages/google-cloud-databasecenter/.prettierignore
diff --git a/owl-bot-staging/google-cloud-databasecenter/.prettierrc.js b/packages/google-cloud-databasecenter/.prettierrc.js
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/.prettierrc.js
rename to packages/google-cloud-databasecenter/.prettierrc.js
diff --git a/owl-bot-staging/google-cloud-databasecenter/CODE_OF_CONDUCT.md b/packages/google-cloud-databasecenter/CODE_OF_CONDUCT.md
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/CODE_OF_CONDUCT.md
rename to packages/google-cloud-databasecenter/CODE_OF_CONDUCT.md
diff --git a/owl-bot-staging/google-cloud-databasecenter/CONTRIBUTING.md b/packages/google-cloud-databasecenter/CONTRIBUTING.md
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/CONTRIBUTING.md
rename to packages/google-cloud-databasecenter/CONTRIBUTING.md
diff --git a/owl-bot-staging/google-cloud-databasecenter/README.md b/packages/google-cloud-databasecenter/README.md
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/README.md
rename to packages/google-cloud-databasecenter/README.md
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/affiliation.proto b/packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/affiliation.proto
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/affiliation.proto
rename to packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/affiliation.proto
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/machine_config.proto b/packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/machine_config.proto
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/machine_config.proto
rename to packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/machine_config.proto
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/maintenance.proto b/packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/maintenance.proto
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/maintenance.proto
rename to packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/maintenance.proto
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/metric_data.proto b/packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/metric_data.proto
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/metric_data.proto
rename to packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/metric_data.proto
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/operation_error_type.proto b/packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/operation_error_type.proto
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/operation_error_type.proto
rename to packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/operation_error_type.proto
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/product.proto b/packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/product.proto
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/product.proto
rename to packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/product.proto
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/service.proto b/packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/service.proto
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/service.proto
rename to packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/service.proto
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/signals.proto b/packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/signals.proto
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/signals.proto
rename to packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/signals.proto
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/suspension_reason.proto b/packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/suspension_reason.proto
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/suspension_reason.proto
rename to packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/suspension_reason.proto
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/protos.d.ts b/packages/google-cloud-databasecenter/protos/protos.d.ts
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/protos/protos.d.ts
rename to packages/google-cloud-databasecenter/protos/protos.d.ts
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/protos.js b/packages/google-cloud-databasecenter/protos/protos.js
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/protos/protos.js
rename to packages/google-cloud-databasecenter/protos/protos.js
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/protos.json b/packages/google-cloud-databasecenter/protos/protos.json
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/protos/protos.json
rename to packages/google-cloud-databasecenter/protos/protos.json
diff --git a/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_fleet.js b/packages/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_fleet.js
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_fleet.js
rename to packages/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_fleet.js
diff --git a/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_issue_stats.js b/packages/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_issue_stats.js
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_issue_stats.js
rename to packages/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_issue_stats.js
diff --git a/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_database_resource_groups.js b/packages/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_database_resource_groups.js
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_database_resource_groups.js
rename to packages/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_database_resource_groups.js
diff --git a/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_issues.js b/packages/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_issues.js
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_issues.js
rename to packages/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_issues.js
diff --git a/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_products.js b/packages/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_products.js
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_products.js
rename to packages/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_products.js
diff --git a/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/snippet_metadata_google.cloud.databasecenter.v1beta.json b/packages/google-cloud-databasecenter/samples/generated/v1beta/snippet_metadata_google.cloud.databasecenter.v1beta.json
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/snippet_metadata_google.cloud.databasecenter.v1beta.json
rename to packages/google-cloud-databasecenter/samples/generated/v1beta/snippet_metadata_google.cloud.databasecenter.v1beta.json
diff --git a/owl-bot-staging/google-cloud-databasecenter/src/index.ts b/packages/google-cloud-databasecenter/src/index.ts
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/src/index.ts
rename to packages/google-cloud-databasecenter/src/index.ts
diff --git a/owl-bot-staging/google-cloud-databasecenter/src/v1beta/database_center_client.ts b/packages/google-cloud-databasecenter/src/v1beta/database_center_client.ts
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/src/v1beta/database_center_client.ts
rename to packages/google-cloud-databasecenter/src/v1beta/database_center_client.ts
diff --git a/owl-bot-staging/google-cloud-databasecenter/src/v1beta/database_center_client_config.json b/packages/google-cloud-databasecenter/src/v1beta/database_center_client_config.json
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/src/v1beta/database_center_client_config.json
rename to packages/google-cloud-databasecenter/src/v1beta/database_center_client_config.json
diff --git a/owl-bot-staging/google-cloud-databasecenter/src/v1beta/database_center_proto_list.json b/packages/google-cloud-databasecenter/src/v1beta/database_center_proto_list.json
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/src/v1beta/database_center_proto_list.json
rename to packages/google-cloud-databasecenter/src/v1beta/database_center_proto_list.json
diff --git a/owl-bot-staging/google-cloud-databasecenter/src/v1beta/gapic_metadata.json b/packages/google-cloud-databasecenter/src/v1beta/gapic_metadata.json
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/src/v1beta/gapic_metadata.json
rename to packages/google-cloud-databasecenter/src/v1beta/gapic_metadata.json
diff --git a/owl-bot-staging/google-cloud-databasecenter/src/v1beta/index.ts b/packages/google-cloud-databasecenter/src/v1beta/index.ts
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/src/v1beta/index.ts
rename to packages/google-cloud-databasecenter/src/v1beta/index.ts
diff --git a/owl-bot-staging/google-cloud-databasecenter/system-test/fixtures/sample/src/index.js b/packages/google-cloud-databasecenter/system-test/fixtures/sample/src/index.js
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/system-test/fixtures/sample/src/index.js
rename to packages/google-cloud-databasecenter/system-test/fixtures/sample/src/index.js
diff --git a/owl-bot-staging/google-cloud-databasecenter/system-test/fixtures/sample/src/index.ts b/packages/google-cloud-databasecenter/system-test/fixtures/sample/src/index.ts
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/system-test/fixtures/sample/src/index.ts
rename to packages/google-cloud-databasecenter/system-test/fixtures/sample/src/index.ts
diff --git a/owl-bot-staging/google-cloud-databasecenter/system-test/install.ts b/packages/google-cloud-databasecenter/system-test/install.ts
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/system-test/install.ts
rename to packages/google-cloud-databasecenter/system-test/install.ts
diff --git a/owl-bot-staging/google-cloud-databasecenter/test/gapic_database_center_v1beta.ts b/packages/google-cloud-databasecenter/test/gapic_database_center_v1beta.ts
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/test/gapic_database_center_v1beta.ts
rename to packages/google-cloud-databasecenter/test/gapic_database_center_v1beta.ts
diff --git a/owl-bot-staging/google-cloud-databasecenter/tsconfig.json b/packages/google-cloud-databasecenter/tsconfig.json
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/tsconfig.json
rename to packages/google-cloud-databasecenter/tsconfig.json
diff --git a/owl-bot-staging/google-cloud-databasecenter/webpack.config.js b/packages/google-cloud-databasecenter/webpack.config.js
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/webpack.config.js
rename to packages/google-cloud-databasecenter/webpack.config.js

From 62c4207d101bdf4bc1b32585214eb782e5870104 Mon Sep 17 00:00:00 2001
From: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
Date: Wed, 6 May 2026 21:18:38 +0000
Subject: [PATCH 6/6] =?UTF-8?q?=F0=9F=A6=89=20Updates=20from=20OwlBot=20po?=
 =?UTF-8?q?st-processor?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
---
 .../google-cloud-databasecenter/.OwlBot.yaml  |  19 --
 .../google-cloud-databasecenter/LICENSE       | 202 ------------------
 .../google-cloud-databasecenter/.OwlBot.yaml  |   4 +-
 .../google-cloud-databasecenter/.eslintignore |   0
 .../.eslintrc.json                            |   0
 .../.gitattributes                            |   0
 .../google-cloud-databasecenter/.gitignore    |   0
 .../google-cloud-databasecenter/.jsdoc.js     |   0
 .../google-cloud-databasecenter/.mocharc.js   |   0
 .../google-cloud-databasecenter/.nycrc        |   0
 .../.prettierignore                           |   0
 .../.prettierrc.js                            |   0
 .../CODE_OF_CONDUCT.md                        |   0
 .../CONTRIBUTING.md                           |   0
 .../google-cloud-databasecenter/README.md     |   0
 .../databasecenter/v1beta/affiliation.proto   |   0
 .../v1beta/machine_config.proto               |   0
 .../databasecenter/v1beta/maintenance.proto   |   0
 .../databasecenter/v1beta/metric_data.proto   |   0
 .../v1beta/operation_error_type.proto         |   0
 .../cloud/databasecenter/v1beta/product.proto |   0
 .../cloud/databasecenter/v1beta/service.proto |   0
 .../cloud/databasecenter/v1beta/signals.proto |   0
 .../v1beta/suspension_reason.proto            |   0
 .../protos/protos.d.ts                        |   0
 .../protos/protos.js                          |   0
 .../protos/protos.json                        |   0
 .../v1beta/database_center.aggregate_fleet.js |   0
 .../database_center.aggregate_issue_stats.js  |   0
 ...e_center.query_database_resource_groups.js |   0
 .../v1beta/database_center.query_issues.js    |   0
 .../v1beta/database_center.query_products.js  |   0
 ...ta_google.cloud.databasecenter.v1beta.json |   0
 .../google-cloud-databasecenter/src/index.ts  |   0
 .../src/v1beta/database_center_client.ts      |   0
 .../v1beta/database_center_client_config.json |   0
 .../v1beta/database_center_proto_list.json    |   0
 .../src/v1beta/gapic_metadata.json            |   0
 .../src/v1beta/index.ts                       |   0
 .../system-test/fixtures/sample/src/index.js  |   0
 .../system-test/fixtures/sample/src/index.ts  |   0
 .../system-test/install.ts                    |   0
 .../test/gapic_database_center_v1beta.ts      |   0
 .../google-cloud-databasecenter/tsconfig.json |   0
 .../webpack.config.js                         |   0
 45 files changed, 2 insertions(+), 223 deletions(-)
 delete mode 100644 owl-bot-staging/google-cloud-databasecenter/.OwlBot.yaml
 delete mode 100644 owl-bot-staging/google-cloud-databasecenter/LICENSE
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/.eslintignore (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/.eslintrc.json (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/.gitattributes (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/.gitignore (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/.jsdoc.js (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/.mocharc.js (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/.nycrc (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/.prettierignore (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/.prettierrc.js (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/CODE_OF_CONDUCT.md (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/CONTRIBUTING.md (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/README.md (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/affiliation.proto (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/machine_config.proto (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/maintenance.proto (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/metric_data.proto (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/operation_error_type.proto (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/product.proto (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/service.proto (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/signals.proto (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/suspension_reason.proto (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/protos/protos.d.ts (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/protos/protos.js (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/protos/protos.json (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_fleet.js (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_issue_stats.js (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_database_resource_groups.js (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_issues.js (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_products.js (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/samples/generated/v1beta/snippet_metadata_google.cloud.databasecenter.v1beta.json (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/src/index.ts (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/src/v1beta/database_center_client.ts (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/src/v1beta/database_center_client_config.json (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/src/v1beta/database_center_proto_list.json (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/src/v1beta/gapic_metadata.json (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/src/v1beta/index.ts (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/system-test/fixtures/sample/src/index.js (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/system-test/fixtures/sample/src/index.ts (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/system-test/install.ts (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/test/gapic_database_center_v1beta.ts (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/tsconfig.json (100%)
 rename {owl-bot-staging => packages}/google-cloud-databasecenter/webpack.config.js (100%)

diff --git a/owl-bot-staging/google-cloud-databasecenter/.OwlBot.yaml b/owl-bot-staging/google-cloud-databasecenter/.OwlBot.yaml
deleted file mode 100644
index 75844859dea9..000000000000
--- a/owl-bot-staging/google-cloud-databasecenter/.OwlBot.yaml
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright 2025 Google LLC
-#
-# 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.
-
-deep-copy-regex:
-    - source: /google/cloud/databasecenter/google-cloud-databasecenter-nodejs
-      dest: /owl-bot-staging/google-cloud-databasecenter
-
-api-name: databasecenter
\ No newline at end of file
diff --git a/owl-bot-staging/google-cloud-databasecenter/LICENSE b/owl-bot-staging/google-cloud-databasecenter/LICENSE
deleted file mode 100644
index d64569567334..000000000000
--- a/owl-bot-staging/google-cloud-databasecenter/LICENSE
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/packages/google-cloud-databasecenter/.OwlBot.yaml b/packages/google-cloud-databasecenter/.OwlBot.yaml
index 9879f6a21b9b..75844859dea9 100644
--- a/packages/google-cloud-databasecenter/.OwlBot.yaml
+++ b/packages/google-cloud-databasecenter/.OwlBot.yaml
@@ -1,4 +1,4 @@
-# Copyright 2022 Google LLC
+# Copyright 2025 Google LLC
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -16,4 +16,4 @@ deep-copy-regex:
     - source: /google/cloud/databasecenter/google-cloud-databasecenter-nodejs
       dest: /owl-bot-staging/google-cloud-databasecenter
 
-api-name: databasecenter
+api-name: databasecenter
\ No newline at end of file
diff --git a/owl-bot-staging/google-cloud-databasecenter/.eslintignore b/packages/google-cloud-databasecenter/.eslintignore
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/.eslintignore
rename to packages/google-cloud-databasecenter/.eslintignore
diff --git a/owl-bot-staging/google-cloud-databasecenter/.eslintrc.json b/packages/google-cloud-databasecenter/.eslintrc.json
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/.eslintrc.json
rename to packages/google-cloud-databasecenter/.eslintrc.json
diff --git a/owl-bot-staging/google-cloud-databasecenter/.gitattributes b/packages/google-cloud-databasecenter/.gitattributes
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/.gitattributes
rename to packages/google-cloud-databasecenter/.gitattributes
diff --git a/owl-bot-staging/google-cloud-databasecenter/.gitignore b/packages/google-cloud-databasecenter/.gitignore
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/.gitignore
rename to packages/google-cloud-databasecenter/.gitignore
diff --git a/owl-bot-staging/google-cloud-databasecenter/.jsdoc.js b/packages/google-cloud-databasecenter/.jsdoc.js
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/.jsdoc.js
rename to packages/google-cloud-databasecenter/.jsdoc.js
diff --git a/owl-bot-staging/google-cloud-databasecenter/.mocharc.js b/packages/google-cloud-databasecenter/.mocharc.js
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/.mocharc.js
rename to packages/google-cloud-databasecenter/.mocharc.js
diff --git a/owl-bot-staging/google-cloud-databasecenter/.nycrc b/packages/google-cloud-databasecenter/.nycrc
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/.nycrc
rename to packages/google-cloud-databasecenter/.nycrc
diff --git a/owl-bot-staging/google-cloud-databasecenter/.prettierignore b/packages/google-cloud-databasecenter/.prettierignore
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/.prettierignore
rename to packages/google-cloud-databasecenter/.prettierignore
diff --git a/owl-bot-staging/google-cloud-databasecenter/.prettierrc.js b/packages/google-cloud-databasecenter/.prettierrc.js
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/.prettierrc.js
rename to packages/google-cloud-databasecenter/.prettierrc.js
diff --git a/owl-bot-staging/google-cloud-databasecenter/CODE_OF_CONDUCT.md b/packages/google-cloud-databasecenter/CODE_OF_CONDUCT.md
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/CODE_OF_CONDUCT.md
rename to packages/google-cloud-databasecenter/CODE_OF_CONDUCT.md
diff --git a/owl-bot-staging/google-cloud-databasecenter/CONTRIBUTING.md b/packages/google-cloud-databasecenter/CONTRIBUTING.md
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/CONTRIBUTING.md
rename to packages/google-cloud-databasecenter/CONTRIBUTING.md
diff --git a/owl-bot-staging/google-cloud-databasecenter/README.md b/packages/google-cloud-databasecenter/README.md
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/README.md
rename to packages/google-cloud-databasecenter/README.md
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/affiliation.proto b/packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/affiliation.proto
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/affiliation.proto
rename to packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/affiliation.proto
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/machine_config.proto b/packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/machine_config.proto
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/machine_config.proto
rename to packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/machine_config.proto
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/maintenance.proto b/packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/maintenance.proto
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/maintenance.proto
rename to packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/maintenance.proto
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/metric_data.proto b/packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/metric_data.proto
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/metric_data.proto
rename to packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/metric_data.proto
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/operation_error_type.proto b/packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/operation_error_type.proto
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/operation_error_type.proto
rename to packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/operation_error_type.proto
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/product.proto b/packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/product.proto
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/product.proto
rename to packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/product.proto
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/service.proto b/packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/service.proto
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/service.proto
rename to packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/service.proto
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/signals.proto b/packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/signals.proto
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/signals.proto
rename to packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/signals.proto
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/suspension_reason.proto b/packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/suspension_reason.proto
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/suspension_reason.proto
rename to packages/google-cloud-databasecenter/protos/google/cloud/databasecenter/v1beta/suspension_reason.proto
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/protos.d.ts b/packages/google-cloud-databasecenter/protos/protos.d.ts
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/protos/protos.d.ts
rename to packages/google-cloud-databasecenter/protos/protos.d.ts
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/protos.js b/packages/google-cloud-databasecenter/protos/protos.js
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/protos/protos.js
rename to packages/google-cloud-databasecenter/protos/protos.js
diff --git a/owl-bot-staging/google-cloud-databasecenter/protos/protos.json b/packages/google-cloud-databasecenter/protos/protos.json
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/protos/protos.json
rename to packages/google-cloud-databasecenter/protos/protos.json
diff --git a/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_fleet.js b/packages/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_fleet.js
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_fleet.js
rename to packages/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_fleet.js
diff --git a/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_issue_stats.js b/packages/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_issue_stats.js
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_issue_stats.js
rename to packages/google-cloud-databasecenter/samples/generated/v1beta/database_center.aggregate_issue_stats.js
diff --git a/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_database_resource_groups.js b/packages/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_database_resource_groups.js
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_database_resource_groups.js
rename to packages/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_database_resource_groups.js
diff --git a/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_issues.js b/packages/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_issues.js
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_issues.js
rename to packages/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_issues.js
diff --git a/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_products.js b/packages/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_products.js
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_products.js
rename to packages/google-cloud-databasecenter/samples/generated/v1beta/database_center.query_products.js
diff --git a/owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/snippet_metadata_google.cloud.databasecenter.v1beta.json b/packages/google-cloud-databasecenter/samples/generated/v1beta/snippet_metadata_google.cloud.databasecenter.v1beta.json
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/samples/generated/v1beta/snippet_metadata_google.cloud.databasecenter.v1beta.json
rename to packages/google-cloud-databasecenter/samples/generated/v1beta/snippet_metadata_google.cloud.databasecenter.v1beta.json
diff --git a/owl-bot-staging/google-cloud-databasecenter/src/index.ts b/packages/google-cloud-databasecenter/src/index.ts
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/src/index.ts
rename to packages/google-cloud-databasecenter/src/index.ts
diff --git a/owl-bot-staging/google-cloud-databasecenter/src/v1beta/database_center_client.ts b/packages/google-cloud-databasecenter/src/v1beta/database_center_client.ts
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/src/v1beta/database_center_client.ts
rename to packages/google-cloud-databasecenter/src/v1beta/database_center_client.ts
diff --git a/owl-bot-staging/google-cloud-databasecenter/src/v1beta/database_center_client_config.json b/packages/google-cloud-databasecenter/src/v1beta/database_center_client_config.json
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/src/v1beta/database_center_client_config.json
rename to packages/google-cloud-databasecenter/src/v1beta/database_center_client_config.json
diff --git a/owl-bot-staging/google-cloud-databasecenter/src/v1beta/database_center_proto_list.json b/packages/google-cloud-databasecenter/src/v1beta/database_center_proto_list.json
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/src/v1beta/database_center_proto_list.json
rename to packages/google-cloud-databasecenter/src/v1beta/database_center_proto_list.json
diff --git a/owl-bot-staging/google-cloud-databasecenter/src/v1beta/gapic_metadata.json b/packages/google-cloud-databasecenter/src/v1beta/gapic_metadata.json
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/src/v1beta/gapic_metadata.json
rename to packages/google-cloud-databasecenter/src/v1beta/gapic_metadata.json
diff --git a/owl-bot-staging/google-cloud-databasecenter/src/v1beta/index.ts b/packages/google-cloud-databasecenter/src/v1beta/index.ts
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/src/v1beta/index.ts
rename to packages/google-cloud-databasecenter/src/v1beta/index.ts
diff --git a/owl-bot-staging/google-cloud-databasecenter/system-test/fixtures/sample/src/index.js b/packages/google-cloud-databasecenter/system-test/fixtures/sample/src/index.js
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/system-test/fixtures/sample/src/index.js
rename to packages/google-cloud-databasecenter/system-test/fixtures/sample/src/index.js
diff --git a/owl-bot-staging/google-cloud-databasecenter/system-test/fixtures/sample/src/index.ts b/packages/google-cloud-databasecenter/system-test/fixtures/sample/src/index.ts
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/system-test/fixtures/sample/src/index.ts
rename to packages/google-cloud-databasecenter/system-test/fixtures/sample/src/index.ts
diff --git a/owl-bot-staging/google-cloud-databasecenter/system-test/install.ts b/packages/google-cloud-databasecenter/system-test/install.ts
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/system-test/install.ts
rename to packages/google-cloud-databasecenter/system-test/install.ts
diff --git a/owl-bot-staging/google-cloud-databasecenter/test/gapic_database_center_v1beta.ts b/packages/google-cloud-databasecenter/test/gapic_database_center_v1beta.ts
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/test/gapic_database_center_v1beta.ts
rename to packages/google-cloud-databasecenter/test/gapic_database_center_v1beta.ts
diff --git a/owl-bot-staging/google-cloud-databasecenter/tsconfig.json b/packages/google-cloud-databasecenter/tsconfig.json
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/tsconfig.json
rename to packages/google-cloud-databasecenter/tsconfig.json
diff --git a/owl-bot-staging/google-cloud-databasecenter/webpack.config.js b/packages/google-cloud-databasecenter/webpack.config.js
similarity index 100%
rename from owl-bot-staging/google-cloud-databasecenter/webpack.config.js
rename to packages/google-cloud-databasecenter/webpack.config.js
