text: "use strict";
  /**
   * Copyright 2015 Google Inc. All Rights Reserved.
   *
   * 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.
   */
  Object.defineProperty(exports, "__esModule", { value: true });
  const googleapis_common_1 = require("googleapis-common");
  // tslint:disable: no-any
  // tslint:disable: class-name
  // tslint:disable: variable-name
  // tslint:disable: jsdoc-format
  // tslint:disable: no-namespace
  var compute_v1;
  (function (compute_v1) {
      /**
       * Compute Engine API
       *
       * Creates and runs virtual machines on Google Cloud Platform.
       *
       * @example
       * const {google} = require('googleapis');
       * const compute = google.compute('v1');
       *
       * @namespace compute
       * @type {Function}
       * @version v1
       * @variation v1
       * @param {object=} options Options for Compute
       */
      class Compute {
          constructor(options, google) {
              this.root = this;
              this._options = options || {};
              this.google = google;
              this.getRoot.bind(this);
              this.acceleratorTypes = new Resource$Acceleratortypes(this);
              this.addresses = new Resource$Addresses(this);
              this.autoscalers = new Resource$Autoscalers(this);
              this.backendBuckets = new Resource$Backendbuckets(this);
              this.backendServices = new Resource$Backendservices(this);
              this.disks = new Resource$Disks(this);
              this.diskTypes = new Resource$Disktypes(this);
              this.firewalls = new Resource$Firewalls(this);
              this.forwardingRules = new Resource$Forwardingrules(this);
              this.globalAddresses = new Resource$Globaladdresses(this);
              this.globalForwardingRules = new Resource$Globalforwardingrules(this);
              this.globalOperations = new Resource$Globaloperations(this);
              this.healthChecks = new Resource$Healthchecks(this);
              this.httpHealthChecks = new Resource$Httphealthchecks(this);
              this.httpsHealthChecks = new Resource$Httpshealthchecks(this);
              this.images = new Resource$Images(this);
              this.instanceGroupManagers = new Resource$Instancegroupmanagers(this);
              this.instanceGroups = new Resource$Instancegroups(this);
              this.instances = new Resource$Instances(this);
              this.instanceTemplates = new Resource$Instancetemplates(this);
              this.interconnectAttachments = new Resource$Interconnectattachments(this);
              this.interconnectLocations = new Resource$Interconnectlocations(this);
              this.interconnects = new Resource$Interconnects(this);
              this.licenseCodes = new Resource$Licensecodes(this);
              this.licenses = new Resource$Licenses(this);
              this.machineTypes = new Resource$Machinetypes(this);
              this.networks = new Resource$Networks(this);
              this.nodeGroups = new Resource$Nodegroups(this);
              this.nodeTemplates = new Resource$Nodetemplates(this);
              this.nodeTypes = new Resource$Nodetypes(this);
              this.projects = new Resource$Projects(this);
              this.regionAutoscalers = new Resource$Regionautoscalers(this);
              this.regionBackendServices = new Resource$Regionbackendservices(this);
              this.regionCommitments = new Resource$Regioncommitments(this);
              this.regionDisks = new Resource$Regiondisks(this);
              this.regionDiskTypes = new Resource$Regiondisktypes(this);
              this.regionInstanceGroupManagers =
                  new Resource$Regioninstancegroupmanagers(this);
              this.regionInstanceGroups = new Resource$Regioninstancegroups(this);
              this.regionOperations = new Resource$Regionoperations(this);
              this.regions = new Resource$Regions(this);
              this.routers = new Resource$Routers(this);
              this.routes = new Resource$Routes(this);
              this.securityPolicies = new Resource$Securitypolicies(this);
              this.snapshots = new Resource$Snapshots(this);
              this.sslCertificates = new Resource$Sslcertificates(this);
              this.sslPolicies = new Resource$Sslpolicies(this);
              this.subnetworks = new Resource$Subnetworks(this);
              this.targetHttpProxies = new Resource$Targethttpproxies(this);
              this.targetHttpsProxies = new Resource$Targethttpsproxies(this);
              this.targetInstances = new Resource$Targetinstances(this);
              this.targetPools = new Resource$Targetpools(this);
              this.targetSslProxies = new Resource$Targetsslproxies(this);
              this.targetTcpProxies = new Resource$Targettcpproxies(this);
              this.targetVpnGateways = new Resource$Targetvpngateways(this);
              this.urlMaps = new Resource$Urlmaps(this);
              this.vpnTunnels = new Resource$Vpntunnels(this);
              this.zoneOperations = new Resource$Zoneoperations(this);
              this.zones = new Resource$Zones(this);
          }
          getRoot() {
              return this.root;
          }
      }
      compute_v1.Compute = Compute;
      class Resource$Acceleratortypes {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/acceleratorTypes')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/acceleratorTypes/{acceleratorType}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'acceleratorType'],
                  pathParams: ['acceleratorType', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/acceleratorTypes')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Acceleratortypes = Resource$Acceleratortypes;
      class Resource$Addresses {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/addresses')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/addresses/{address}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'address'],
                  pathParams: ['address', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/addresses/{address}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'address'],
                  pathParams: ['address', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/addresses')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/addresses')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Addresses = Resource$Addresses;
      class Resource$Autoscalers {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/autoscalers')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/autoscalers/{autoscaler}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'autoscaler'],
                  pathParams: ['autoscaler', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/autoscalers/{autoscaler}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'autoscaler'],
                  pathParams: ['autoscaler', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/autoscalers')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/autoscalers')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/autoscalers')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          update(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/autoscalers')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PUT'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Autoscalers = Resource$Autoscalers;
      class Resource$Backendbuckets {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          addSignedUrlKey(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendBuckets/{backendBucket}/addSignedUrlKey')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'backendBucket'],
                  pathParams: ['backendBucket', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendBuckets/{backendBucket}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'backendBucket'],
                  pathParams: ['backendBucket', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          deleteSignedUrlKey(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendBuckets/{backendBucket}/deleteSignedUrlKey')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'backendBucket', 'keyName'],
                  pathParams: ['backendBucket', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendBuckets/{backendBucket}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'backendBucket'],
                  pathParams: ['backendBucket', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendBuckets')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendBuckets')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendBuckets/{backendBucket}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH'
                  }, options),
                  params,
                  requiredParams: ['project', 'backendBucket'],
                  pathParams: ['backendBucket', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          update(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendBuckets/{backendBucket}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PUT'
                  }, options),
                  params,
                  requiredParams: ['project', 'backendBucket'],
                  pathParams: ['backendBucket', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Backendbuckets = Resource$Backendbuckets;
      class Resource$Backendservices {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          addSignedUrlKey(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendServices/{backendService}/addSignedUrlKey')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'backendService'],
                  pathParams: ['backendService', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/backendServices')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendServices/{backendService}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'backendService'],
                  pathParams: ['backendService', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          deleteSignedUrlKey(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendServices/{backendService}/deleteSignedUrlKey')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'backendService', 'keyName'],
                  pathParams: ['backendService', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendServices/{backendService}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'backendService'],
                  pathParams: ['backendService', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getHealth(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendServices/{backendService}/getHealth')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'backendService'],
                  pathParams: ['backendService', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendServices')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendServices')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendServices/{backendService}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH'
                  }, options),
                  params,
                  requiredParams: ['project', 'backendService'],
                  pathParams: ['backendService', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setSecurityPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendServices/{backendService}/setSecurityPolicy')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'backendService'],
                  pathParams: ['backendService', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          update(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/backendServices/{backendService}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PUT'
                  }, options),
                  params,
                  requiredParams: ['project', 'backendService'],
                  pathParams: ['backendService', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Backendservices = Resource$Backendservices;
      class Resource$Disks {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/aggregated/disks')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          createSnapshot(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/disks/{disk}/createSnapshot')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'disk'],
                  pathParams: ['disk', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/disks/{disk}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'disk'],
                  pathParams: ['disk', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/disks/{disk}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'disk'],
                  pathParams: ['disk', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/disks')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/disks')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          resize(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/disks/{disk}/resize')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'disk'],
                  pathParams: ['disk', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setLabels(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/disks/{resource}/setLabels')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'resource'],
                  pathParams: ['project', 'resource', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Disks = Resource$Disks;
      class Resource$Disktypes {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/diskTypes')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/diskTypes/{diskType}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'diskType'],
                  pathParams: ['diskType', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/diskTypes')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Disktypes = Resource$Disktypes;
      class Resource$Firewalls {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/firewalls/{firewall}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'firewall'],
                  pathParams: ['firewall', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/firewalls/{firewall}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'firewall'],
                  pathParams: ['firewall', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/firewalls')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/firewalls')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/firewalls/{firewall}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH'
                  }, options),
                  params,
                  requiredParams: ['project', 'firewall'],
                  pathParams: ['firewall', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          update(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/firewalls/{firewall}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PUT'
                  }, options),
                  params,
                  requiredParams: ['project', 'firewall'],
                  pathParams: ['firewall', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Firewalls = Resource$Firewalls;
      class Resource$Forwardingrules {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/forwardingRules')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/forwardingRules/{forwardingRule}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'forwardingRule'],
                  pathParams: ['forwardingRule', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/forwardingRules/{forwardingRule}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'forwardingRule'],
                  pathParams: ['forwardingRule', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/forwardingRules')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/forwardingRules')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setTarget(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/forwardingRules/{forwardingRule}/setTarget')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'forwardingRule'],
                  pathParams: ['forwardingRule', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Forwardingrules = Resource$Forwardingrules;
      class Resource$Globaladdresses {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/addresses/{address}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'address'],
                  pathParams: ['address', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/addresses/{address}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'address'],
                  pathParams: ['address', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/addresses')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/addresses')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Globaladdresses = Resource$Globaladdresses;
      class Resource$Globalforwardingrules {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/forwardingRules/{forwardingRule}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'forwardingRule'],
                  pathParams: ['forwardingRule', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/forwardingRules/{forwardingRule}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'forwardingRule'],
                  pathParams: ['forwardingRule', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/forwardingRules')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/forwardingRules')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setTarget(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/forwardingRules/{forwardingRule}/setTarget')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'forwardingRule'],
                  pathParams: ['forwardingRule', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Globalforwardingrules = Resource$Globalforwardingrules;
      class Resource$Globaloperations {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/operations')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/operations/{operation}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'operation'],
                  pathParams: ['operation', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/operations/{operation}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'operation'],
                  pathParams: ['operation', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/operations')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Globaloperations = Resource$Globaloperations;
      class Resource$Healthchecks {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/healthChecks/{healthCheck}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'healthCheck'],
                  pathParams: ['healthCheck', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/healthChecks/{healthCheck}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'healthCheck'],
                  pathParams: ['healthCheck', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/healthChecks')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/healthChecks')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/healthChecks/{healthCheck}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH'
                  }, options),
                  params,
                  requiredParams: ['project', 'healthCheck'],
                  pathParams: ['healthCheck', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          update(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/healthChecks/{healthCheck}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PUT'
                  }, options),
                  params,
                  requiredParams: ['project', 'healthCheck'],
                  pathParams: ['healthCheck', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Healthchecks = Resource$Healthchecks;
      class Resource$Httphealthchecks {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/httpHealthChecks/{httpHealthCheck}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'httpHealthCheck'],
                  pathParams: ['httpHealthCheck', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/httpHealthChecks/{httpHealthCheck}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'httpHealthCheck'],
                  pathParams: ['httpHealthCheck', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/httpHealthChecks')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/httpHealthChecks')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/httpHealthChecks/{httpHealthCheck}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH'
                  }, options),
                  params,
                  requiredParams: ['project', 'httpHealthCheck'],
                  pathParams: ['httpHealthCheck', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          update(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/httpHealthChecks/{httpHealthCheck}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PUT'
                  }, options),
                  params,
                  requiredParams: ['project', 'httpHealthCheck'],
                  pathParams: ['httpHealthCheck', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Httphealthchecks = Resource$Httphealthchecks;
      class Resource$Httpshealthchecks {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/httpsHealthChecks/{httpsHealthCheck}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'httpsHealthCheck'],
                  pathParams: ['httpsHealthCheck', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/httpsHealthChecks/{httpsHealthCheck}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'httpsHealthCheck'],
                  pathParams: ['httpsHealthCheck', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/httpsHealthChecks')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/httpsHealthChecks')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/httpsHealthChecks/{httpsHealthCheck}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH'
                  }, options),
                  params,
                  requiredParams: ['project', 'httpsHealthCheck'],
                  pathParams: ['httpsHealthCheck', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          update(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/httpsHealthChecks/{httpsHealthCheck}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PUT'
                  }, options),
                  params,
                  requiredParams: ['project', 'httpsHealthCheck'],
                  pathParams: ['httpsHealthCheck', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Httpshealthchecks = Resource$Httpshealthchecks;
      class Resource$Images {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/images/{image}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'image'],
                  pathParams: ['image', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          deprecate(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/images/{image}/deprecate')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'image'],
                  pathParams: ['image', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/images/{image}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'image'],
                  pathParams: ['image', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getFromFamily(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/images/family/{family}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'family'],
                  pathParams: ['family', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/images')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/images')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setLabels(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/images/{resource}/setLabels')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'resource'],
                  pathParams: ['project', 'resource'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Images = Resource$Images;
      class Resource$Instancegroupmanagers {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          abandonInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/abandonInstances')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/instanceGroupManagers')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          deleteInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/deleteInstances')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          listManagedInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/listManagedInstances')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          recreateInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/recreateInstances')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          resize(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/resize')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroupManager', 'size'],
                  pathParams: ['instanceGroupManager', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setInstanceTemplate(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/setInstanceTemplate')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setTargetPools(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/setTargetPools')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Instancegroupmanagers = Resource$Instancegroupmanagers;
      class Resource$Instancegroups {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          addInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instanceGroup}/addInstances')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroup'],
                  pathParams: ['instanceGroup', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/instanceGroups')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instanceGroup}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroup'],
                  pathParams: ['instanceGroup', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instanceGroup}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroup'],
                  pathParams: ['instanceGroup', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroups')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroups')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          listInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instanceGroup}/listInstances')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroup'],
                  pathParams: ['instanceGroup', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          removeInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instanceGroup}/removeInstances')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroup'],
                  pathParams: ['instanceGroup', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setNamedPorts(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instanceGroup}/setNamedPorts')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instanceGroup'],
                  pathParams: ['instanceGroup', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Instancegroups = Resource$Instancegroups;
      class Resource$Instances {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          addAccessConfig(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/addAccessConfig')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance', 'networkInterface'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/instances')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          attachDisk(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/attachDisk')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          deleteAccessConfig(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/deleteAccessConfig')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance', 'accessConfig', 'networkInterface'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          detachDisk(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/detachDisk')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance', 'deviceName'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getSerialPortOutput(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/serialPort')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          listReferrers(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/referrers')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          reset(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/reset')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setDeletionProtection(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{resource}/setDeletionProtection')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'resource'],
                  pathParams: ['project', 'resource', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setDiskAutoDelete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setDiskAutoDelete')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance', 'autoDelete', 'deviceName'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setLabels(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setLabels')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setMachineResources(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setMachineResources')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setMachineType(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setMachineType')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setMetadata(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setMetadata')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setMinCpuPlatform(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setMinCpuPlatform')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setScheduling(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setScheduling')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setServiceAccount(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setServiceAccount')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setTags(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setTags')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          simulateMaintenanceEvent(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/simulateMaintenanceEvent')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          start(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/start')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          startWithEncryptionKey(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/startWithEncryptionKey')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          stop(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/stop')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          updateAccessConfig(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/updateAccessConfig')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance', 'networkInterface'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          updateNetworkInterface(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/updateNetworkInterface')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'instance', 'networkInterface'],
                  pathParams: ['instance', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Instances = Resource$Instances;
      class Resource$Instancetemplates {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/instanceTemplates/{instanceTemplate}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'instanceTemplate'],
                  pathParams: ['instanceTemplate', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/instanceTemplates/{instanceTemplate}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'instanceTemplate'],
                  pathParams: ['instanceTemplate', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/instanceTemplates')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/instanceTemplates')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Instancetemplates = Resource$Instancetemplates;
      class Resource$Interconnectattachments {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/interconnectAttachments')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'interconnectAttachment'],
                  pathParams: ['interconnectAttachment', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'interconnectAttachment'],
                  pathParams: ['interconnectAttachment', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/interconnectAttachments')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/interconnectAttachments')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'interconnectAttachment'],
                  pathParams: ['interconnectAttachment', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Interconnectattachments = Resource$Interconnectattachments;
      class Resource$Interconnectlocations {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/interconnectLocations/{interconnectLocation}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'interconnectLocation'],
                  pathParams: ['interconnectLocation', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/interconnectLocations')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Interconnectlocations = Resource$Interconnectlocations;
      class Resource$Interconnects {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/interconnects/{interconnect}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'interconnect'],
                  pathParams: ['interconnect', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/interconnects/{interconnect}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'interconnect'],
                  pathParams: ['interconnect', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/interconnects')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/interconnects')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/interconnects/{interconnect}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH'
                  }, options),
                  params,
                  requiredParams: ['project', 'interconnect'],
                  pathParams: ['interconnect', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Interconnects = Resource$Interconnects;
      class Resource$Licensecodes {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/licenseCodes/{licenseCode}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'licenseCode'],
                  pathParams: ['licenseCode', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          testIamPermissions(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/licenseCodes/{resource}/testIamPermissions')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'resource'],
                  pathParams: ['project', 'resource'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Licensecodes = Resource$Licensecodes;
      class Resource$Licenses {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/licenses/{license}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'license'],
                  pathParams: ['license', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/licenses/{license}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'license'],
                  pathParams: ['license', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/licenses')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/licenses')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          testIamPermissions(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/licenses/{resource}/testIamPermissions')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'resource'],
                  pathParams: ['project', 'resource'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Licenses = Resource$Licenses;
      class Resource$Machinetypes {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/machineTypes')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/machineTypes/{machineType}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'machineType'],
                  pathParams: ['machineType', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/machineTypes')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Machinetypes = Resource$Machinetypes;
      class Resource$Networks {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          addPeering(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/networks/{network}/addPeering')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'network'],
                  pathParams: ['network', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/networks/{network}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'network'],
                  pathParams: ['network', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/networks/{network}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'network'],
                  pathParams: ['network', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/networks')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/networks')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/networks/{network}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH'
                  }, options),
                  params,
                  requiredParams: ['project', 'network'],
                  pathParams: ['network', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          removePeering(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/networks/{network}/removePeering')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'network'],
                  pathParams: ['network', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          switchToCustomMode(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/networks/{network}/switchToCustomMode')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'network'],
                  pathParams: ['network', 'project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Networks = Resource$Networks;
      class Resource$Nodegroups {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          addNodes(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}/addNodes')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'nodeGroup'],
                  pathParams: ['nodeGroup', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/nodeGroups')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'nodeGroup'],
                  pathParams: ['nodeGroup', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          deleteNodes(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}/deleteNodes')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'nodeGroup'],
                  pathParams: ['nodeGroup', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'nodeGroup'],
                  pathParams: ['nodeGroup', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/nodeGroups')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'initialNodeCount'],
                  pathParams: ['project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/nodeGroups')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          listNodes(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}/listNodes')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'nodeGroup'],
                  pathParams: ['nodeGroup', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setNodeTemplate(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}/setNodeTemplate')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'nodeGroup'],
                  pathParams: ['nodeGroup', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Nodegroups = Resource$Nodegroups;
      class Resource$Nodetemplates {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/nodeTemplates')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/nodeTemplates/{nodeTemplate}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'nodeTemplate'],
                  pathParams: ['nodeTemplate', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/nodeTemplates/{nodeTemplate}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'nodeTemplate'],
                  pathParams: ['nodeTemplate', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/nodeTemplates')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/nodeTemplates')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Nodetemplates = Resource$Nodetemplates;
      class Resource$Nodetypes {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/nodeTypes')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/nodeTypes/{nodeType}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'nodeType'],
                  pathParams: ['nodeType', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/nodeTypes')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Nodetypes = Resource$Nodetypes;
      class Resource$Projects {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          disableXpnHost(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/disableXpnHost')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          disableXpnResource(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/disableXpnResource')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          enableXpnHost(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/enableXpnHost')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          enableXpnResource(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/enableXpnResource')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getXpnHost(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/getXpnHost')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getXpnResources(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/getXpnResources')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          listXpnHosts(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/listXpnHosts')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          moveDisk(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/moveDisk')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          moveInstance(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/moveInstance')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setCommonInstanceMetadata(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/setCommonInstanceMetadata')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setDefaultNetworkTier(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/setDefaultNetworkTier')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setUsageExportBucket(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/setUsageExportBucket')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Projects = Resource$Projects;
      class Resource$Regionautoscalers {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/autoscalers/{autoscaler}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'autoscaler'],
                  pathParams: ['autoscaler', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/autoscalers/{autoscaler}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'autoscaler'],
                  pathParams: ['autoscaler', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/autoscalers')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/autoscalers')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/autoscalers')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          update(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/autoscalers')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PUT'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Regionautoscalers = Resource$Regionautoscalers;
      class Resource$Regionbackendservices {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/backendServices/{backendService}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'backendService'],
                  pathParams: ['backendService', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/backendServices/{backendService}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'backendService'],
                  pathParams: ['backendService', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getHealth(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/backendServices/{backendService}/getHealth')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'backendService'],
                  pathParams: ['backendService', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/backendServices')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/backendServices')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/backendServices/{backendService}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'backendService'],
                  pathParams: ['backendService', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          update(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/backendServices/{backendService}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PUT'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'backendService'],
                  pathParams: ['backendService', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Regionbackendservices = Resource$Regionbackendservices;
      class Resource$Regioncommitments {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/commitments')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/commitments/{commitment}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'commitment'],
                  pathParams: ['commitment', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/commitments')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/commitments')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Regioncommitments = Resource$Regioncommitments;
      class Resource$Regiondisks {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          createSnapshot(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/disks/{disk}/createSnapshot')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'disk'],
                  pathParams: ['disk', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/disks/{disk}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'disk'],
                  pathParams: ['disk', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/disks/{disk}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'disk'],
                  pathParams: ['disk', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/disks')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/disks')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          resize(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/disks/{disk}/resize')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'disk'],
                  pathParams: ['disk', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setLabels(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/disks/{resource}/setLabels')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'resource'],
                  pathParams: ['project', 'region', 'resource'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          testIamPermissions(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/disks/{resource}/testIamPermissions')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'resource'],
                  pathParams: ['project', 'region', 'resource'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Regiondisks = Resource$Regiondisks;
      class Resource$Regiondisktypes {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/diskTypes/{diskType}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'diskType'],
                  pathParams: ['diskType', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/diskTypes')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Regiondisktypes = Resource$Regiondisktypes;
      class Resource$Regioninstancegroupmanagers {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          abandonInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/abandonInstances')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          deleteInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/deleteInstances')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          listManagedInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/listManagedInstances')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          recreateInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/recreateInstances')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          resize(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/resize')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroupManager', 'size'],
                  pathParams: ['instanceGroupManager', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setInstanceTemplate(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/setInstanceTemplate')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setTargetPools(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/setTargetPools')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroupManager'],
                  pathParams: ['instanceGroupManager', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Regioninstancegroupmanagers = Resource$Regioninstancegroupmanagers;
      class Resource$Regioninstancegroups {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroups/{instanceGroup}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroup'],
                  pathParams: ['instanceGroup', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroups')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          listInstances(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroups/{instanceGroup}/listInstances')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroup'],
                  pathParams: ['instanceGroup', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setNamedPorts(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/instanceGroups/{instanceGroup}/setNamedPorts')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'instanceGroup'],
                  pathParams: ['instanceGroup', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Regioninstancegroups = Resource$Regioninstancegroups;
      class Resource$Regionoperations {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/operations/{operation}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'operation'],
                  pathParams: ['operation', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/operations/{operation}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'operation'],
                  pathParams: ['operation', 'project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/operations')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Regionoperations = Resource$Regionoperations;
      class Resource$Regions {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/regions/{region}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/regions')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Regions = Resource$Regions;
      class Resource$Routers {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/routers')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/routers/{router}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'router'],
                  pathParams: ['project', 'region', 'router'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/routers/{router}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'router'],
                  pathParams: ['project', 'region', 'router'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getRouterStatus(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/routers/{router}/getRouterStatus')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'router'],
                  pathParams: ['project', 'region', 'router'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/routers')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/routers')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/routers/{router}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'router'],
                  pathParams: ['project', 'region', 'router'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          preview(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/routers/{router}/preview')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'router'],
                  pathParams: ['project', 'region', 'router'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          update(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/routers/{router}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PUT'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'router'],
                  pathParams: ['project', 'region', 'router'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Routers = Resource$Routers;
      class Resource$Routes {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/routes/{route}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'route'],
                  pathParams: ['project', 'route'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/routes/{route}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'route'],
                  pathParams: ['project', 'route'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/routes')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/routes')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Routes = Resource$Routes;
      class Resource$Securitypolicies {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          addRule(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/securityPolicies/{securityPolicy}/addRule')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'securityPolicy'],
                  pathParams: ['project', 'securityPolicy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/securityPolicies/{securityPolicy}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'securityPolicy'],
                  pathParams: ['project', 'securityPolicy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/securityPolicies/{securityPolicy}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'securityPolicy'],
                  pathParams: ['project', 'securityPolicy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getRule(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/securityPolicies/{securityPolicy}/getRule')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'securityPolicy'],
                  pathParams: ['project', 'securityPolicy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/securityPolicies')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/securityPolicies')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/securityPolicies/{securityPolicy}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH'
                  }, options),
                  params,
                  requiredParams: ['project', 'securityPolicy'],
                  pathParams: ['project', 'securityPolicy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patchRule(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/securityPolicies/{securityPolicy}/patchRule')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'securityPolicy'],
                  pathParams: ['project', 'securityPolicy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          removeRule(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/securityPolicies/{securityPolicy}/removeRule')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'securityPolicy'],
                  pathParams: ['project', 'securityPolicy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Securitypolicies = Resource$Securitypolicies;
      class Resource$Snapshots {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/snapshots/{snapshot}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'snapshot'],
                  pathParams: ['project', 'snapshot'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/snapshots/{snapshot}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'snapshot'],
                  pathParams: ['project', 'snapshot'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/snapshots')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setLabels(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/snapshots/{resource}/setLabels')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'resource'],
                  pathParams: ['project', 'resource'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Snapshots = Resource$Snapshots;
      class Resource$Sslcertificates {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/sslCertificates/{sslCertificate}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'sslCertificate'],
                  pathParams: ['project', 'sslCertificate'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/sslCertificates/{sslCertificate}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'sslCertificate'],
                  pathParams: ['project', 'sslCertificate'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/sslCertificates')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/sslCertificates')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Sslcertificates = Resource$Sslcertificates;
      class Resource$Sslpolicies {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/sslPolicies/{sslPolicy}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'sslPolicy'],
                  pathParams: ['project', 'sslPolicy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/sslPolicies/{sslPolicy}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'sslPolicy'],
                  pathParams: ['project', 'sslPolicy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/sslPolicies')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/sslPolicies')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          listAvailableFeatures(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/sslPolicies/listAvailableFeatures')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/sslPolicies/{sslPolicy}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH'
                  }, options),
                  params,
                  requiredParams: ['project', 'sslPolicy'],
                  pathParams: ['project', 'sslPolicy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Sslpolicies = Resource$Sslpolicies;
      class Resource$Subnetworks {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/subnetworks')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'subnetwork'],
                  pathParams: ['project', 'region', 'subnetwork'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          expandIpCidrRange(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}/expandIpCidrRange')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'subnetwork'],
                  pathParams: ['project', 'region', 'subnetwork'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'subnetwork'],
                  pathParams: ['project', 'region', 'subnetwork'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/subnetworks')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/subnetworks')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          listUsable(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/subnetworks/listUsable')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'subnetwork'],
                  pathParams: ['project', 'region', 'subnetwork'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setPrivateIpGoogleAccess(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}/setPrivateIpGoogleAccess')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'subnetwork'],
                  pathParams: ['project', 'region', 'subnetwork'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Subnetworks = Resource$Subnetworks;
      class Resource$Targethttpproxies {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetHttpProxies/{targetHttpProxy}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'targetHttpProxy'],
                  pathParams: ['project', 'targetHttpProxy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetHttpProxies/{targetHttpProxy}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'targetHttpProxy'],
                  pathParams: ['project', 'targetHttpProxy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetHttpProxies')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetHttpProxies')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setUrlMap(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/targetHttpProxies/{targetHttpProxy}/setUrlMap')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'targetHttpProxy'],
                  pathParams: ['project', 'targetHttpProxy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Targethttpproxies = Resource$Targethttpproxies;
      class Resource$Targethttpsproxies {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetHttpsProxies/{targetHttpsProxy}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'targetHttpsProxy'],
                  pathParams: ['project', 'targetHttpsProxy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetHttpsProxies/{targetHttpsProxy}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'targetHttpsProxy'],
                  pathParams: ['project', 'targetHttpsProxy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetHttpsProxies')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetHttpsProxies')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setQuicOverride(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetHttpsProxies/{targetHttpsProxy}/setQuicOverride')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'targetHttpsProxy'],
                  pathParams: ['project', 'targetHttpsProxy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setSslCertificates(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/targetHttpsProxies/{targetHttpsProxy}/setSslCertificates')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'targetHttpsProxy'],
                  pathParams: ['project', 'targetHttpsProxy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setSslPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetHttpsProxies/{targetHttpsProxy}/setSslPolicy')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'targetHttpsProxy'],
                  pathParams: ['project', 'targetHttpsProxy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setUrlMap(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/targetHttpsProxies/{targetHttpsProxy}/setUrlMap')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'targetHttpsProxy'],
                  pathParams: ['project', 'targetHttpsProxy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Targethttpsproxies = Resource$Targethttpsproxies;
      class Resource$Targetinstances {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/targetInstances')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/targetInstances/{targetInstance}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'targetInstance'],
                  pathParams: ['project', 'targetInstance', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/targetInstances/{targetInstance}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'targetInstance'],
                  pathParams: ['project', 'targetInstance', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/targetInstances')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/targetInstances')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Targetinstances = Resource$Targetinstances;
      class Resource$Targetpools {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          addHealthCheck(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetPools/{targetPool}/addHealthCheck')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'targetPool'],
                  pathParams: ['project', 'region', 'targetPool'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          addInstance(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetPools/{targetPool}/addInstance')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'targetPool'],
                  pathParams: ['project', 'region', 'targetPool'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/targetPools')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetPools/{targetPool}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'targetPool'],
                  pathParams: ['project', 'region', 'targetPool'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetPools/{targetPool}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'targetPool'],
                  pathParams: ['project', 'region', 'targetPool'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          getHealth(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetPools/{targetPool}/getHealth')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'targetPool'],
                  pathParams: ['project', 'region', 'targetPool'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetPools')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetPools')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          removeHealthCheck(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetPools/{targetPool}/removeHealthCheck')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'targetPool'],
                  pathParams: ['project', 'region', 'targetPool'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          removeInstance(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetPools/{targetPool}/removeInstance')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'targetPool'],
                  pathParams: ['project', 'region', 'targetPool'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setBackup(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetPools/{targetPool}/setBackup')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'targetPool'],
                  pathParams: ['project', 'region', 'targetPool'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Targetpools = Resource$Targetpools;
      class Resource$Targetsslproxies {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetSslProxies/{targetSslProxy}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'targetSslProxy'],
                  pathParams: ['project', 'targetSslProxy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetSslProxies/{targetSslProxy}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'targetSslProxy'],
                  pathParams: ['project', 'targetSslProxy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetSslProxies')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetSslProxies')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setBackendService(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetSslProxies/{targetSslProxy}/setBackendService')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'targetSslProxy'],
                  pathParams: ['project', 'targetSslProxy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setProxyHeader(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetSslProxies/{targetSslProxy}/setProxyHeader')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'targetSslProxy'],
                  pathParams: ['project', 'targetSslProxy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setSslCertificates(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetSslProxies/{targetSslProxy}/setSslCertificates')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'targetSslProxy'],
                  pathParams: ['project', 'targetSslProxy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setSslPolicy(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetSslProxies/{targetSslProxy}/setSslPolicy')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'targetSslProxy'],
                  pathParams: ['project', 'targetSslProxy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Targetsslproxies = Resource$Targetsslproxies;
      class Resource$Targettcpproxies {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetTcpProxies/{targetTcpProxy}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'targetTcpProxy'],
                  pathParams: ['project', 'targetTcpProxy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetTcpProxies/{targetTcpProxy}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'targetTcpProxy'],
                  pathParams: ['project', 'targetTcpProxy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetTcpProxies')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetTcpProxies')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setBackendService(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetTcpProxies/{targetTcpProxy}/setBackendService')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'targetTcpProxy'],
                  pathParams: ['project', 'targetTcpProxy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          setProxyHeader(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/targetTcpProxies/{targetTcpProxy}/setProxyHeader')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'targetTcpProxy'],
                  pathParams: ['project', 'targetTcpProxy'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Targettcpproxies = Resource$Targettcpproxies;
      class Resource$Targetvpngateways {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/targetVpnGateways')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetVpnGateways/{targetVpnGateway}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'targetVpnGateway'],
                  pathParams: ['project', 'region', 'targetVpnGateway'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetVpnGateways/{targetVpnGateway}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'targetVpnGateway'],
                  pathParams: ['project', 'region', 'targetVpnGateway'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetVpnGateways')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/targetVpnGateways')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Targetvpngateways = Resource$Targetvpngateways;
      class Resource$Urlmaps {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/urlMaps/{urlMap}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'urlMap'],
                  pathParams: ['project', 'urlMap'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/urlMaps/{urlMap}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'urlMap'],
                  pathParams: ['project', 'urlMap'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/urlMaps')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          invalidateCache(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/urlMaps/{urlMap}/invalidateCache')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'urlMap'],
                  pathParams: ['project', 'urlMap'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/global/urlMaps')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          patch(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/urlMaps/{urlMap}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PATCH'
                  }, options),
                  params,
                  requiredParams: ['project', 'urlMap'],
                  pathParams: ['project', 'urlMap'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          update(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/urlMaps/{urlMap}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'PUT'
                  }, options),
                  params,
                  requiredParams: ['project', 'urlMap'],
                  pathParams: ['project', 'urlMap'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          validate(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/global/urlMaps/{urlMap}/validate')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'urlMap'],
                  pathParams: ['project', 'urlMap'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Urlmaps = Resource$Urlmaps;
      class Resource$Vpntunnels {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          aggregatedList(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/aggregated/vpnTunnels')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/vpnTunnels/{vpnTunnel}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'vpnTunnel'],
                  pathParams: ['project', 'region', 'vpnTunnel'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/vpnTunnels/{vpnTunnel}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region', 'vpnTunnel'],
                  pathParams: ['project', 'region', 'vpnTunnel'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          insert(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/vpnTunnels')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'POST'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/regions/{region}/vpnTunnels')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'region'],
                  pathParams: ['project', 'region'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Vpntunnels = Resource$Vpntunnels;
      class Resource$Zoneoperations {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          delete(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/operations/{operation}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'DELETE'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'operation'],
                  pathParams: ['operation', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/operations/{operation}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone', 'operation'],
                  pathParams: ['operation', 'project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl +
                          '/compute/v1/projects/{project}/zones/{zone}/operations')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Zoneoperations = Resource$Zoneoperations;
      class Resource$Zones {
          constructor(root) {
              this.root = root;
              this.getRoot.bind(this);
          }
          getRoot() {
              return this.root;
          }
          get(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/zones/{zone}')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project', 'zone'],
                  pathParams: ['project', 'zone'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
          list(paramsOrCallback, optionsOrCallback, callback) {
              let params = (paramsOrCallback || {});
              let options = (optionsOrCallback || {});
              if (typeof paramsOrCallback === 'function') {
                  callback = paramsOrCallback;
                  params = {};
                  options = {};
              }
              if (typeof optionsOrCallback === 'function') {
                  callback = optionsOrCallback;
                  options = {};
              }
              const rootUrl = options.rootUrl || 'https://www.googleapis.com/';
              const parameters = {
                  options: Object.assign({
                      url: (rootUrl + '/compute/v1/projects/{project}/zones')
                          .replace(/([^:]\/)\/+/g, '$1'),
                      method: 'GET'
                  }, options),
                  params,
                  requiredParams: ['project'],
                  pathParams: ['project'],
                  context: this.getRoot()
              };
              if (callback) {
                  googleapis_common_1.createAPIRequest(parameters, callback);
              }
              else {
                  return googleapis_common_1.createAPIRequest(parameters);
              }
          }
      }
      compute_v1.Resource$Zones = Resource$Zones;
  })(compute_v1 = exports.compute_v1 || (exports.compute_v1 = {}));
  //# sourceMappingURL=v1.js.map