text: //
  // Autogenerated by Thrift Compiler (0.14.1)
  //
  // DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  //
  if (typeof Int64 === 'undefined' && typeof require === 'function') {
    const Int64 = require('node-int64');
  }
  
  
  //HELPER FUNCTIONS AND STRUCTURES
  
  open_api_management_register_api_user_args = class {
    constructor(args) {
      this.company_name = null;
      this.email = null;
      this.password = null;
      if (args) {
        if (args.company_name !== undefined && args.company_name !== null) {
          this.company_name = args.company_name;
        }
        if (args.email !== undefined && args.email !== null) {
          this.email = args.email;
        }
        if (args.password !== undefined && args.password !== null) {
          this.password = args.password;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 1:
          if (ftype == Thrift.Type.STRING) {
            this.company_name = input.readString().value;
          } else {
            input.skip(ftype);
          }
          break;
          case 2:
          if (ftype == Thrift.Type.STRING) {
            this.email = input.readString().value;
          } else {
            input.skip(ftype);
          }
          break;
          case 3:
          if (ftype == Thrift.Type.STRING) {
            this.password = input.readString().value;
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_register_api_user_args');
      if (this.company_name !== null && this.company_name !== undefined) {
        output.writeFieldBegin('company_name', Thrift.Type.STRING, 1);
        output.writeString(this.company_name);
        output.writeFieldEnd();
      }
      if (this.email !== null && this.email !== undefined) {
        output.writeFieldBegin('email', Thrift.Type.STRING, 2);
        output.writeString(this.email);
        output.writeFieldEnd();
      }
      if (this.password !== null && this.password !== undefined) {
        output.writeFieldBegin('password', Thrift.Type.STRING, 3);
        output.writeString(this.password);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_register_api_user_result = class {
    constructor(args) {
      this.success = null;
      this.e = null;
      if (args instanceof gen_exp) {
          this.e = args;
          return;
      }
      if (args) {
        if (args.success !== undefined && args.success !== null) {
          this.success = args.success;
        }
        if (args.e !== undefined && args.e !== null) {
          this.e = args.e;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 0:
          if (ftype == Thrift.Type.BOOL) {
            this.success = input.readBool().value;
          } else {
            input.skip(ftype);
          }
          break;
          case 1:
          if (ftype == Thrift.Type.STRUCT) {
            this.e = new gen_exp();
            this.e.read(input);
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_register_api_user_result');
      if (this.success !== null && this.success !== undefined) {
        output.writeFieldBegin('success', Thrift.Type.BOOL, 0);
        output.writeBool(this.success);
        output.writeFieldEnd();
      }
      if (this.e !== null && this.e !== undefined) {
        output.writeFieldBegin('e', Thrift.Type.STRUCT, 1);
        this.e.write(output);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_verify_email_code_args = class {
    constructor(args) {
      this.email = null;
      this.code = null;
      if (args) {
        if (args.email !== undefined && args.email !== null) {
          this.email = args.email;
        }
        if (args.code !== undefined && args.code !== null) {
          this.code = args.code;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 1:
          if (ftype == Thrift.Type.STRING) {
            this.email = input.readString().value;
          } else {
            input.skip(ftype);
          }
          break;
          case 2:
          if (ftype == Thrift.Type.STRING) {
            this.code = input.readString().value;
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_verify_email_code_args');
      if (this.email !== null && this.email !== undefined) {
        output.writeFieldBegin('email', Thrift.Type.STRING, 1);
        output.writeString(this.email);
        output.writeFieldEnd();
      }
      if (this.code !== null && this.code !== undefined) {
        output.writeFieldBegin('code', Thrift.Type.STRING, 2);
        output.writeString(this.code);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_verify_email_code_result = class {
    constructor(args) {
      this.success = null;
      this.e = null;
      if (args instanceof gen_exp) {
          this.e = args;
          return;
      }
      if (args) {
        if (args.success !== undefined && args.success !== null) {
          this.success = args.success;
        }
        if (args.e !== undefined && args.e !== null) {
          this.e = args.e;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 0:
          if (ftype == Thrift.Type.BOOL) {
            this.success = input.readBool().value;
          } else {
            input.skip(ftype);
          }
          break;
          case 1:
          if (ftype == Thrift.Type.STRUCT) {
            this.e = new gen_exp();
            this.e.read(input);
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_verify_email_code_result');
      if (this.success !== null && this.success !== undefined) {
        output.writeFieldBegin('success', Thrift.Type.BOOL, 0);
        output.writeBool(this.success);
        output.writeFieldEnd();
      }
      if (this.e !== null && this.e !== undefined) {
        output.writeFieldBegin('e', Thrift.Type.STRUCT, 1);
        this.e.write(output);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_unregister_api_user_args = class {
    constructor(args) {
      this.email = null;
      this.password = null;
      if (args) {
        if (args.email !== undefined && args.email !== null) {
          this.email = args.email;
        }
        if (args.password !== undefined && args.password !== null) {
          this.password = args.password;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 1:
          if (ftype == Thrift.Type.STRING) {
            this.email = input.readString().value;
          } else {
            input.skip(ftype);
          }
          break;
          case 2:
          if (ftype == Thrift.Type.STRING) {
            this.password = input.readString().value;
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_unregister_api_user_args');
      if (this.email !== null && this.email !== undefined) {
        output.writeFieldBegin('email', Thrift.Type.STRING, 1);
        output.writeString(this.email);
        output.writeFieldEnd();
      }
      if (this.password !== null && this.password !== undefined) {
        output.writeFieldBegin('password', Thrift.Type.STRING, 2);
        output.writeString(this.password);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_unregister_api_user_result = class {
    constructor(args) {
      this.success = null;
      this.e = null;
      if (args instanceof gen_exp) {
          this.e = args;
          return;
      }
      if (args) {
        if (args.success !== undefined && args.success !== null) {
          this.success = args.success;
        }
        if (args.e !== undefined && args.e !== null) {
          this.e = args.e;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 0:
          if (ftype == Thrift.Type.BOOL) {
            this.success = input.readBool().value;
          } else {
            input.skip(ftype);
          }
          break;
          case 1:
          if (ftype == Thrift.Type.STRUCT) {
            this.e = new gen_exp();
            this.e.read(input);
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_unregister_api_user_result');
      if (this.success !== null && this.success !== undefined) {
        output.writeFieldBegin('success', Thrift.Type.BOOL, 0);
        output.writeBool(this.success);
        output.writeFieldEnd();
      }
      if (this.e !== null && this.e !== undefined) {
        output.writeFieldBegin('e', Thrift.Type.STRUCT, 1);
        this.e.write(output);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_get_token_args = class {
    constructor(args) {
      this.email = null;
      this.password = null;
      if (args) {
        if (args.email !== undefined && args.email !== null) {
          this.email = args.email;
        }
        if (args.password !== undefined && args.password !== null) {
          this.password = args.password;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 1:
          if (ftype == Thrift.Type.STRING) {
            this.email = input.readString().value;
          } else {
            input.skip(ftype);
          }
          break;
          case 2:
          if (ftype == Thrift.Type.STRING) {
            this.password = input.readString().value;
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_get_token_args');
      if (this.email !== null && this.email !== undefined) {
        output.writeFieldBegin('email', Thrift.Type.STRING, 1);
        output.writeString(this.email);
        output.writeFieldEnd();
      }
      if (this.password !== null && this.password !== undefined) {
        output.writeFieldBegin('password', Thrift.Type.STRING, 2);
        output.writeString(this.password);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_get_token_result = class {
    constructor(args) {
      this.success = null;
      this.e = null;
      if (args instanceof gen_exp) {
          this.e = args;
          return;
      }
      if (args) {
        if (args.success !== undefined && args.success !== null) {
          this.success = args.success;
        }
        if (args.e !== undefined && args.e !== null) {
          this.e = args.e;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 0:
          if (ftype == Thrift.Type.STRING) {
            this.success = input.readString().value;
          } else {
            input.skip(ftype);
          }
          break;
          case 1:
          if (ftype == Thrift.Type.STRUCT) {
            this.e = new gen_exp();
            this.e.read(input);
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_get_token_result');
      if (this.success !== null && this.success !== undefined) {
        output.writeFieldBegin('success', Thrift.Type.STRING, 0);
        output.writeString(this.success);
        output.writeFieldEnd();
      }
      if (this.e !== null && this.e !== undefined) {
        output.writeFieldBegin('e', Thrift.Type.STRUCT, 1);
        this.e.write(output);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_proc_call_vehicle_args = class {
    constructor(args) {
      this._req = null;
      this.token = null;
      if (args) {
        if (args._req !== undefined && args._req !== null) {
          this._req = new call_vehicle_req(args._req);
        }
        if (args.token !== undefined && args.token !== null) {
          this.token = args.token;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 1:
          if (ftype == Thrift.Type.STRUCT) {
            this._req = new call_vehicle_req();
            this._req.read(input);
          } else {
            input.skip(ftype);
          }
          break;
          case 2:
          if (ftype == Thrift.Type.STRING) {
            this.token = input.readString().value;
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_proc_call_vehicle_args');
      if (this._req !== null && this._req !== undefined) {
        output.writeFieldBegin('_req', Thrift.Type.STRUCT, 1);
        this._req.write(output);
        output.writeFieldEnd();
      }
      if (this.token !== null && this.token !== undefined) {
        output.writeFieldBegin('token', Thrift.Type.STRING, 2);
        output.writeString(this.token);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_proc_call_vehicle_result = class {
    constructor(args) {
      this.success = null;
      this.e = null;
      if (args instanceof gen_exp) {
          this.e = args;
          return;
      }
      if (args) {
        if (args.success !== undefined && args.success !== null) {
          this.success = args.success;
        }
        if (args.e !== undefined && args.e !== null) {
          this.e = args.e;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 0:
          if (ftype == Thrift.Type.BOOL) {
            this.success = input.readBool().value;
          } else {
            input.skip(ftype);
          }
          break;
          case 1:
          if (ftype == Thrift.Type.STRUCT) {
            this.e = new gen_exp();
            this.e.read(input);
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_proc_call_vehicle_result');
      if (this.success !== null && this.success !== undefined) {
        output.writeFieldBegin('success', Thrift.Type.BOOL, 0);
        output.writeBool(this.success);
        output.writeFieldEnd();
      }
      if (this.e !== null && this.e !== undefined) {
        output.writeFieldBegin('e', Thrift.Type.STRUCT, 1);
        this.e.write(output);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_proc_vehicle_info_args = class {
    constructor(args) {
      this.plateNo = null;
      this.driverId = null;
      this.token = null;
      if (args) {
        if (args.plateNo !== undefined && args.plateNo !== null) {
          this.plateNo = args.plateNo;
        }
        if (args.driverId !== undefined && args.driverId !== null) {
          this.driverId = args.driverId;
        }
        if (args.token !== undefined && args.token !== null) {
          this.token = args.token;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 1:
          if (ftype == Thrift.Type.STRING) {
            this.plateNo = input.readString().value;
          } else {
            input.skip(ftype);
          }
          break;
          case 2:
          if (ftype == Thrift.Type.STRING) {
            this.driverId = input.readString().value;
          } else {
            input.skip(ftype);
          }
          break;
          case 3:
          if (ftype == Thrift.Type.STRING) {
            this.token = input.readString().value;
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_proc_vehicle_info_args');
      if (this.plateNo !== null && this.plateNo !== undefined) {
        output.writeFieldBegin('plateNo', Thrift.Type.STRING, 1);
        output.writeString(this.plateNo);
        output.writeFieldEnd();
      }
      if (this.driverId !== null && this.driverId !== undefined) {
        output.writeFieldBegin('driverId', Thrift.Type.STRING, 2);
        output.writeString(this.driverId);
        output.writeFieldEnd();
      }
      if (this.token !== null && this.token !== undefined) {
        output.writeFieldBegin('token', Thrift.Type.STRING, 3);
        output.writeString(this.token);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_proc_vehicle_info_result = class {
    constructor(args) {
      this.success = null;
      this.e = null;
      if (args instanceof gen_exp) {
          this.e = args;
          return;
      }
      if (args) {
        if (args.success !== undefined && args.success !== null) {
          this.success = new vehicle_info_resp(args.success);
        }
        if (args.e !== undefined && args.e !== null) {
          this.e = args.e;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 0:
          if (ftype == Thrift.Type.STRUCT) {
            this.success = new vehicle_info_resp();
            this.success.read(input);
          } else {
            input.skip(ftype);
          }
          break;
          case 1:
          if (ftype == Thrift.Type.STRUCT) {
            this.e = new gen_exp();
            this.e.read(input);
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_proc_vehicle_info_result');
      if (this.success !== null && this.success !== undefined) {
        output.writeFieldBegin('success', Thrift.Type.STRUCT, 0);
        this.success.write(output);
        output.writeFieldEnd();
      }
      if (this.e !== null && this.e !== undefined) {
        output.writeFieldBegin('e', Thrift.Type.STRUCT, 1);
        this.e.write(output);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_proc_all_vehicle_info_args = class {
    constructor(args) {
      this.token = null;
      if (args) {
        if (args.token !== undefined && args.token !== null) {
          this.token = args.token;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 1:
          if (ftype == Thrift.Type.STRING) {
            this.token = input.readString().value;
          } else {
            input.skip(ftype);
          }
          break;
          case 0:
            input.skip(ftype);
            break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_proc_all_vehicle_info_args');
      if (this.token !== null && this.token !== undefined) {
        output.writeFieldBegin('token', Thrift.Type.STRING, 1);
        output.writeString(this.token);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_proc_all_vehicle_info_result = class {
    constructor(args) {
      this.success = null;
      this.e = null;
      if (args instanceof gen_exp) {
          this.e = args;
          return;
      }
      if (args) {
        if (args.success !== undefined && args.success !== null) {
          this.success = Thrift.copyList(args.success, [vehicle_info_resp]);
        }
        if (args.e !== undefined && args.e !== null) {
          this.e = args.e;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 0:
          if (ftype == Thrift.Type.LIST) {
            this.success = [];
            const _rtmp3181 = input.readListBegin();
            const _size180 = _rtmp3181.size || 0;
            for (let _i182 = 0; _i182 < _size180; ++_i182) {
              let elem183 = null;
              elem183 = new vehicle_info_resp();
              elem183.read(input);
              this.success.push(elem183);
            }
            input.readListEnd();
          } else {
            input.skip(ftype);
          }
          break;
          case 1:
          if (ftype == Thrift.Type.STRUCT) {
            this.e = new gen_exp();
            this.e.read(input);
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_proc_all_vehicle_info_result');
      if (this.success !== null && this.success !== undefined) {
        output.writeFieldBegin('success', Thrift.Type.LIST, 0);
        output.writeListBegin(Thrift.Type.STRUCT, this.success.length);
        for (let iter184 in this.success) {
          if (this.success.hasOwnProperty(iter184)) {
            iter184 = this.success[iter184];
            iter184.write(output);
          }
        }
        output.writeListEnd();
        output.writeFieldEnd();
      }
      if (this.e !== null && this.e !== undefined) {
        output.writeFieldBegin('e', Thrift.Type.STRUCT, 1);
        this.e.write(output);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_proc_push_weight_args = class {
    constructor(args) {
      this._req = null;
      this.token = null;
      if (args) {
        if (args._req !== undefined && args._req !== null) {
          this._req = new push_weight_req(args._req);
        }
        if (args.token !== undefined && args.token !== null) {
          this.token = args.token;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 1:
          if (ftype == Thrift.Type.STRUCT) {
            this._req = new push_weight_req();
            this._req.read(input);
          } else {
            input.skip(ftype);
          }
          break;
          case 2:
          if (ftype == Thrift.Type.STRING) {
            this.token = input.readString().value;
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_proc_push_weight_args');
      if (this._req !== null && this._req !== undefined) {
        output.writeFieldBegin('_req', Thrift.Type.STRUCT, 1);
        this._req.write(output);
        output.writeFieldEnd();
      }
      if (this.token !== null && this.token !== undefined) {
        output.writeFieldBegin('token', Thrift.Type.STRING, 2);
        output.writeString(this.token);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_proc_push_weight_result = class {
    constructor(args) {
      this.success = null;
      this.e = null;
      if (args instanceof gen_exp) {
          this.e = args;
          return;
      }
      if (args) {
        if (args.success !== undefined && args.success !== null) {
          this.success = args.success;
        }
        if (args.e !== undefined && args.e !== null) {
          this.e = args.e;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 0:
          if (ftype == Thrift.Type.BOOL) {
            this.success = input.readBool().value;
          } else {
            input.skip(ftype);
          }
          break;
          case 1:
          if (ftype == Thrift.Type.STRUCT) {
            this.e = new gen_exp();
            this.e.read(input);
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_proc_push_weight_result');
      if (this.success !== null && this.success !== undefined) {
        output.writeFieldBegin('success', Thrift.Type.BOOL, 0);
        output.writeBool(this.success);
        output.writeFieldEnd();
      }
      if (this.e !== null && this.e !== undefined) {
        output.writeFieldBegin('e', Thrift.Type.STRUCT, 1);
        this.e.write(output);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_proc_add_black_list_args = class {
    constructor(args) {
      this.type = null;
      this.target = null;
      this.reason = null;
      this.expire_date = null;
      this.token = null;
      if (args) {
        if (args.type !== undefined && args.type !== null) {
          this.type = args.type;
        }
        if (args.target !== undefined && args.target !== null) {
          this.target = args.target;
        }
        if (args.reason !== undefined && args.reason !== null) {
          this.reason = args.reason;
        }
        if (args.expire_date !== undefined && args.expire_date !== null) {
          this.expire_date = args.expire_date;
        }
        if (args.token !== undefined && args.token !== null) {
          this.token = args.token;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 1:
          if (ftype == Thrift.Type.I64) {
            this.type = input.readI64().value;
          } else {
            input.skip(ftype);
          }
          break;
          case 2:
          if (ftype == Thrift.Type.STRING) {
            this.target = input.readString().value;
          } else {
            input.skip(ftype);
          }
          break;
          case 3:
          if (ftype == Thrift.Type.STRING) {
            this.reason = input.readString().value;
          } else {
            input.skip(ftype);
          }
          break;
          case 4:
          if (ftype == Thrift.Type.STRING) {
            this.expire_date = input.readString().value;
          } else {
            input.skip(ftype);
          }
          break;
          case 5:
          if (ftype == Thrift.Type.STRING) {
            this.token = input.readString().value;
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_proc_add_black_list_args');
      if (this.type !== null && this.type !== undefined) {
        output.writeFieldBegin('type', Thrift.Type.I64, 1);
        output.writeI64(this.type);
        output.writeFieldEnd();
      }
      if (this.target !== null && this.target !== undefined) {
        output.writeFieldBegin('target', Thrift.Type.STRING, 2);
        output.writeString(this.target);
        output.writeFieldEnd();
      }
      if (this.reason !== null && this.reason !== undefined) {
        output.writeFieldBegin('reason', Thrift.Type.STRING, 3);
        output.writeString(this.reason);
        output.writeFieldEnd();
      }
      if (this.expire_date !== null && this.expire_date !== undefined) {
        output.writeFieldBegin('expire_date', Thrift.Type.STRING, 4);
        output.writeString(this.expire_date);
        output.writeFieldEnd();
      }
      if (this.token !== null && this.token !== undefined) {
        output.writeFieldBegin('token', Thrift.Type.STRING, 5);
        output.writeString(this.token);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_proc_add_black_list_result = class {
    constructor(args) {
      this.success = null;
      this.e = null;
      if (args instanceof gen_exp) {
          this.e = args;
          return;
      }
      if (args) {
        if (args.success !== undefined && args.success !== null) {
          this.success = args.success;
        }
        if (args.e !== undefined && args.e !== null) {
          this.e = args.e;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 0:
          if (ftype == Thrift.Type.BOOL) {
            this.success = input.readBool().value;
          } else {
            input.skip(ftype);
          }
          break;
          case 1:
          if (ftype == Thrift.Type.STRUCT) {
            this.e = new gen_exp();
            this.e.read(input);
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_proc_add_black_list_result');
      if (this.success !== null && this.success !== undefined) {
        output.writeFieldBegin('success', Thrift.Type.BOOL, 0);
        output.writeBool(this.success);
        output.writeFieldEnd();
      }
      if (this.e !== null && this.e !== undefined) {
        output.writeFieldBegin('e', Thrift.Type.STRUCT, 1);
        this.e.write(output);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_proc_del_black_list_args = class {
    constructor(args) {
      this.type = null;
      this.target = null;
      this.token = null;
      if (args) {
        if (args.type !== undefined && args.type !== null) {
          this.type = args.type;
        }
        if (args.target !== undefined && args.target !== null) {
          this.target = args.target;
        }
        if (args.token !== undefined && args.token !== null) {
          this.token = args.token;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 1:
          if (ftype == Thrift.Type.I64) {
            this.type = input.readI64().value;
          } else {
            input.skip(ftype);
          }
          break;
          case 2:
          if (ftype == Thrift.Type.STRING) {
            this.target = input.readString().value;
          } else {
            input.skip(ftype);
          }
          break;
          case 3:
          if (ftype == Thrift.Type.STRING) {
            this.token = input.readString().value;
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_proc_del_black_list_args');
      if (this.type !== null && this.type !== undefined) {
        output.writeFieldBegin('type', Thrift.Type.I64, 1);
        output.writeI64(this.type);
        output.writeFieldEnd();
      }
      if (this.target !== null && this.target !== undefined) {
        output.writeFieldBegin('target', Thrift.Type.STRING, 2);
        output.writeString(this.target);
        output.writeFieldEnd();
      }
      if (this.token !== null && this.token !== undefined) {
        output.writeFieldBegin('token', Thrift.Type.STRING, 3);
        output.writeString(this.token);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_proc_del_black_list_result = class {
    constructor(args) {
      this.success = null;
      this.e = null;
      if (args instanceof gen_exp) {
          this.e = args;
          return;
      }
      if (args) {
        if (args.success !== undefined && args.success !== null) {
          this.success = args.success;
        }
        if (args.e !== undefined && args.e !== null) {
          this.e = args.e;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 0:
          if (ftype == Thrift.Type.BOOL) {
            this.success = input.readBool().value;
          } else {
            input.skip(ftype);
          }
          break;
          case 1:
          if (ftype == Thrift.Type.STRUCT) {
            this.e = new gen_exp();
            this.e.read(input);
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_proc_del_black_list_result');
      if (this.success !== null && this.success !== undefined) {
        output.writeFieldBegin('success', Thrift.Type.BOOL, 0);
        output.writeBool(this.success);
        output.writeFieldEnd();
      }
      if (this.e !== null && this.e !== undefined) {
        output.writeFieldBegin('e', Thrift.Type.STRUCT, 1);
        this.e.write(output);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_proc_add_base_info_args = class {
    constructor(args) {
      this._req = null;
      this.token = null;
      if (args) {
        if (args._req !== undefined && args._req !== null) {
          this._req = new push_base_req(args._req);
        }
        if (args.token !== undefined && args.token !== null) {
          this.token = args.token;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 1:
          if (ftype == Thrift.Type.STRUCT) {
            this._req = new push_base_req();
            this._req.read(input);
          } else {
            input.skip(ftype);
          }
          break;
          case 2:
          if (ftype == Thrift.Type.STRING) {
            this.token = input.readString().value;
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_proc_add_base_info_args');
      if (this._req !== null && this._req !== undefined) {
        output.writeFieldBegin('_req', Thrift.Type.STRUCT, 1);
        this._req.write(output);
        output.writeFieldEnd();
      }
      if (this.token !== null && this.token !== undefined) {
        output.writeFieldBegin('token', Thrift.Type.STRING, 2);
        output.writeString(this.token);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_proc_add_base_info_result = class {
    constructor(args) {
      this.success = null;
      this.e = null;
      if (args instanceof gen_exp) {
          this.e = args;
          return;
      }
      if (args) {
        if (args.success !== undefined && args.success !== null) {
          this.success = args.success;
        }
        if (args.e !== undefined && args.e !== null) {
          this.e = args.e;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 0:
          if (ftype == Thrift.Type.BOOL) {
            this.success = input.readBool().value;
          } else {
            input.skip(ftype);
          }
          break;
          case 1:
          if (ftype == Thrift.Type.STRUCT) {
            this.e = new gen_exp();
            this.e.read(input);
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_proc_add_base_info_result');
      if (this.success !== null && this.success !== undefined) {
        output.writeFieldBegin('success', Thrift.Type.BOOL, 0);
        output.writeBool(this.success);
        output.writeFieldEnd();
      }
      if (this.e !== null && this.e !== undefined) {
        output.writeFieldBegin('e', Thrift.Type.STRUCT, 1);
        this.e.write(output);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_proc_del_base_info_args = class {
    constructor(args) {
      this._req = null;
      this.token = null;
      if (args) {
        if (args._req !== undefined && args._req !== null) {
          this._req = new push_base_req(args._req);
        }
        if (args.token !== undefined && args.token !== null) {
          this.token = args.token;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 1:
          if (ftype == Thrift.Type.STRUCT) {
            this._req = new push_base_req();
            this._req.read(input);
          } else {
            input.skip(ftype);
          }
          break;
          case 2:
          if (ftype == Thrift.Type.STRING) {
            this.token = input.readString().value;
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_proc_del_base_info_args');
      if (this._req !== null && this._req !== undefined) {
        output.writeFieldBegin('_req', Thrift.Type.STRUCT, 1);
        this._req.write(output);
        output.writeFieldEnd();
      }
      if (this.token !== null && this.token !== undefined) {
        output.writeFieldBegin('token', Thrift.Type.STRING, 2);
        output.writeString(this.token);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_proc_del_base_info_result = class {
    constructor(args) {
      this.success = null;
      this.e = null;
      if (args instanceof gen_exp) {
          this.e = args;
          return;
      }
      if (args) {
        if (args.success !== undefined && args.success !== null) {
          this.success = args.success;
        }
        if (args.e !== undefined && args.e !== null) {
          this.e = args.e;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 0:
          if (ftype == Thrift.Type.BOOL) {
            this.success = input.readBool().value;
          } else {
            input.skip(ftype);
          }
          break;
          case 1:
          if (ftype == Thrift.Type.STRUCT) {
            this.e = new gen_exp();
            this.e.read(input);
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_proc_del_base_info_result');
      if (this.success !== null && this.success !== undefined) {
        output.writeFieldBegin('success', Thrift.Type.BOOL, 0);
        output.writeBool(this.success);
        output.writeFieldEnd();
      }
      if (this.e !== null && this.e !== undefined) {
        output.writeFieldBegin('e', Thrift.Type.STRUCT, 1);
        this.e.write(output);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_proc_push_balance_args = class {
    constructor(args) {
      this._req = null;
      this.token = null;
      if (args) {
        if (args._req !== undefined && args._req !== null) {
          this._req = new push_balance_req(args._req);
        }
        if (args.token !== undefined && args.token !== null) {
          this.token = args.token;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 1:
          if (ftype == Thrift.Type.STRUCT) {
            this._req = new push_balance_req();
            this._req.read(input);
          } else {
            input.skip(ftype);
          }
          break;
          case 2:
          if (ftype == Thrift.Type.STRING) {
            this.token = input.readString().value;
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_proc_push_balance_args');
      if (this._req !== null && this._req !== undefined) {
        output.writeFieldBegin('_req', Thrift.Type.STRUCT, 1);
        this._req.write(output);
        output.writeFieldEnd();
      }
      if (this.token !== null && this.token !== undefined) {
        output.writeFieldBegin('token', Thrift.Type.STRING, 2);
        output.writeString(this.token);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_proc_push_balance_result = class {
    constructor(args) {
      this.success = null;
      this.e = null;
      if (args instanceof gen_exp) {
          this.e = args;
          return;
      }
      if (args) {
        if (args.success !== undefined && args.success !== null) {
          this.success = args.success;
        }
        if (args.e !== undefined && args.e !== null) {
          this.e = args.e;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 0:
          if (ftype == Thrift.Type.BOOL) {
            this.success = input.readBool().value;
          } else {
            input.skip(ftype);
          }
          break;
          case 1:
          if (ftype == Thrift.Type.STRUCT) {
            this.e = new gen_exp();
            this.e.read(input);
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_proc_push_balance_result');
      if (this.success !== null && this.success !== undefined) {
        output.writeFieldBegin('success', Thrift.Type.BOOL, 0);
        output.writeBool(this.success);
        output.writeFieldEnd();
      }
      if (this.e !== null && this.e !== undefined) {
        output.writeFieldBegin('e', Thrift.Type.STRUCT, 1);
        this.e.write(output);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_proc_push_zone_change_args = class {
    constructor(args) {
      this._req = null;
      this.token = null;
      if (args) {
        if (args._req !== undefined && args._req !== null) {
          this._req = new push_zone_change_req(args._req);
        }
        if (args.token !== undefined && args.token !== null) {
          this.token = args.token;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 1:
          if (ftype == Thrift.Type.STRUCT) {
            this._req = new push_zone_change_req();
            this._req.read(input);
          } else {
            input.skip(ftype);
          }
          break;
          case 2:
          if (ftype == Thrift.Type.STRING) {
            this.token = input.readString().value;
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_proc_push_zone_change_args');
      if (this._req !== null && this._req !== undefined) {
        output.writeFieldBegin('_req', Thrift.Type.STRUCT, 1);
        this._req.write(output);
        output.writeFieldEnd();
      }
      if (this.token !== null && this.token !== undefined) {
        output.writeFieldBegin('token', Thrift.Type.STRING, 2);
        output.writeString(this.token);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_proc_push_zone_change_result = class {
    constructor(args) {
      this.success = null;
      this.e = null;
      if (args instanceof gen_exp) {
          this.e = args;
          return;
      }
      if (args) {
        if (args.success !== undefined && args.success !== null) {
          this.success = args.success;
        }
        if (args.e !== undefined && args.e !== null) {
          this.e = args.e;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 0:
          if (ftype == Thrift.Type.BOOL) {
            this.success = input.readBool().value;
          } else {
            input.skip(ftype);
          }
          break;
          case 1:
          if (ftype == Thrift.Type.STRUCT) {
            this.e = new gen_exp();
            this.e.read(input);
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_proc_push_zone_change_result');
      if (this.success !== null && this.success !== undefined) {
        output.writeFieldBegin('success', Thrift.Type.BOOL, 0);
        output.writeBool(this.success);
        output.writeFieldEnd();
      }
      if (this.e !== null && this.e !== undefined) {
        output.writeFieldBegin('e', Thrift.Type.STRUCT, 1);
        this.e.write(output);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_proc_push_manual_permit_args = class {
    constructor(args) {
      this._req = null;
      this.token = null;
      if (args) {
        if (args._req !== undefined && args._req !== null) {
          this._req = new push_manual_permit_req(args._req);
        }
        if (args.token !== undefined && args.token !== null) {
          this.token = args.token;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 1:
          if (ftype == Thrift.Type.STRUCT) {
            this._req = new push_manual_permit_req();
            this._req.read(input);
          } else {
            input.skip(ftype);
          }
          break;
          case 2:
          if (ftype == Thrift.Type.STRING) {
            this.token = input.readString().value;
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_proc_push_manual_permit_args');
      if (this._req !== null && this._req !== undefined) {
        output.writeFieldBegin('_req', Thrift.Type.STRUCT, 1);
        this._req.write(output);
        output.writeFieldEnd();
      }
      if (this.token !== null && this.token !== undefined) {
        output.writeFieldBegin('token', Thrift.Type.STRING, 2);
        output.writeString(this.token);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_management_proc_push_manual_permit_result = class {
    constructor(args) {
      this.success = null;
      this.e = null;
      if (args instanceof gen_exp) {
          this.e = args;
          return;
      }
      if (args) {
        if (args.success !== undefined && args.success !== null) {
          this.success = args.success;
        }
        if (args.e !== undefined && args.e !== null) {
          this.e = args.e;
        }
      }
    }
  
    read (input) {
      input.readStructBegin();
      while (true) {
        const ret = input.readFieldBegin();
        const ftype = ret.ftype;
        const fid = ret.fid;
        if (ftype == Thrift.Type.STOP) {
          break;
        }
        switch (fid) {
          case 0:
          if (ftype == Thrift.Type.BOOL) {
            this.success = input.readBool().value;
          } else {
            input.skip(ftype);
          }
          break;
          case 1:
          if (ftype == Thrift.Type.STRUCT) {
            this.e = new gen_exp();
            this.e.read(input);
          } else {
            input.skip(ftype);
          }
          break;
          default:
            input.skip(ftype);
        }
        input.readFieldEnd();
      }
      input.readStructEnd();
      return;
    }
  
    write (output) {
      output.writeStructBegin('open_api_management_proc_push_manual_permit_result');
      if (this.success !== null && this.success !== undefined) {
        output.writeFieldBegin('success', Thrift.Type.BOOL, 0);
        output.writeBool(this.success);
        output.writeFieldEnd();
      }
      if (this.e !== null && this.e !== undefined) {
        output.writeFieldBegin('e', Thrift.Type.STRUCT, 1);
        this.e.write(output);
        output.writeFieldEnd();
      }
      output.writeFieldStop();
      output.writeStructEnd();
      return;
    }
  
  };
  open_api_managementClient = class open_api_managementClient {
    constructor(input, output) {
      this.input = input;
      this.output = (!output) ? input : output;
      this.seqid = 0;
    }
  
    register_api_user (company_name, email, password) {
      const self = this;
      return new Promise((resolve, reject) => {
        self.send_register_api_user(company_name, email, password, (error, result) => {
          return error ? reject(error) : resolve(result);
        });
      });
    }
  
    send_register_api_user (company_name, email, password, callback) {
      const params = {
        company_name: company_name,
        email: email,
        password: password
      };
      const args = new open_api_management_register_api_user_args(params);
      try {
        this.output.writeMessageBegin('register_api_user', Thrift.MessageType.CALL, this.seqid);
        args.write(this.output);
        this.output.writeMessageEnd();
        const self = this;
        this.output.getTransport().flush(true, () => {
          let error = null, result = null;
          try {
            result = self.recv_register_api_user();
          } catch (e) {
            error = e;
          }
          callback(error, result);
        });
      }
      catch (e) {
        if (typeof this.output.getTransport().reset === 'function') {
          this.output.getTransport().reset();
        }
        throw e;
      }
    }
  
    recv_register_api_user () {
      const ret = this.input.readMessageBegin();
      const mtype = ret.mtype;
      if (mtype == Thrift.MessageType.EXCEPTION) {
        const x = new Thrift.TApplicationException();
        x.read(this.input);
        this.input.readMessageEnd();
        throw x;
      }
      const result = new open_api_management_register_api_user_result();
      result.read(this.input);
      this.input.readMessageEnd();
  
      if (null !== result.e) {
        throw result.e;
      }
      if (null !== result.success) {
        return result.success;
      }
      throw 'register_api_user failed: unknown result';
    }
  
    verify_email_code (email, code) {
      const self = this;
      return new Promise((resolve, reject) => {
        self.send_verify_email_code(email, code, (error, result) => {
          return error ? reject(error) : resolve(result);
        });
      });
    }
  
    send_verify_email_code (email, code, callback) {
      const params = {
        email: email,
        code: code
      };
      const args = new open_api_management_verify_email_code_args(params);
      try {
        this.output.writeMessageBegin('verify_email_code', Thrift.MessageType.CALL, this.seqid);
        args.write(this.output);
        this.output.writeMessageEnd();
        const self = this;
        this.output.getTransport().flush(true, () => {
          let error = null, result = null;
          try {
            result = self.recv_verify_email_code();
          } catch (e) {
            error = e;
          }
          callback(error, result);
        });
      }
      catch (e) {
        if (typeof this.output.getTransport().reset === 'function') {
          this.output.getTransport().reset();
        }
        throw e;
      }
    }
  
    recv_verify_email_code () {
      const ret = this.input.readMessageBegin();
      const mtype = ret.mtype;
      if (mtype == Thrift.MessageType.EXCEPTION) {
        const x = new Thrift.TApplicationException();
        x.read(this.input);
        this.input.readMessageEnd();
        throw x;
      }
      const result = new open_api_management_verify_email_code_result();
      result.read(this.input);
      this.input.readMessageEnd();
  
      if (null !== result.e) {
        throw result.e;
      }
      if (null !== result.success) {
        return result.success;
      }
      throw 'verify_email_code failed: unknown result';
    }
  
    unregister_api_user (email, password) {
      const self = this;
      return new Promise((resolve, reject) => {
        self.send_unregister_api_user(email, password, (error, result) => {
          return error ? reject(error) : resolve(result);
        });
      });
    }
  
    send_unregister_api_user (email, password, callback) {
      const params = {
        email: email,
        password: password
      };
      const args = new open_api_management_unregister_api_user_args(params);
      try {
        this.output.writeMessageBegin('unregister_api_user', Thrift.MessageType.CALL, this.seqid);
        args.write(this.output);
        this.output.writeMessageEnd();
        const self = this;
        this.output.getTransport().flush(true, () => {
          let error = null, result = null;
          try {
            result = self.recv_unregister_api_user();
          } catch (e) {
            error = e;
          }
          callback(error, result);
        });
      }
      catch (e) {
        if (typeof this.output.getTransport().reset === 'function') {
          this.output.getTransport().reset();
        }
        throw e;
      }
    }
  
    recv_unregister_api_user () {
      const ret = this.input.readMessageBegin();
      const mtype = ret.mtype;
      if (mtype == Thrift.MessageType.EXCEPTION) {
        const x = new Thrift.TApplicationException();
        x.read(this.input);
        this.input.readMessageEnd();
        throw x;
      }
      const result = new open_api_management_unregister_api_user_result();
      result.read(this.input);
      this.input.readMessageEnd();
  
      if (null !== result.e) {
        throw result.e;
      }
      if (null !== result.success) {
        return result.success;
      }
      throw 'unregister_api_user failed: unknown result';
    }
  
    get_token (email, password) {
      const self = this;
      return new Promise((resolve, reject) => {
        self.send_get_token(email, password, (error, result) => {
          return error ? reject(error) : resolve(result);
        });
      });
    }
  
    send_get_token (email, password, callback) {
      const params = {
        email: email,
        password: password
      };
      const args = new open_api_management_get_token_args(params);
      try {
        this.output.writeMessageBegin('get_token', Thrift.MessageType.CALL, this.seqid);
        args.write(this.output);
        this.output.writeMessageEnd();
        const self = this;
        this.output.getTransport().flush(true, () => {
          let error = null, result = null;
          try {
            result = self.recv_get_token();
          } catch (e) {
            error = e;
          }
          callback(error, result);
        });
      }
      catch (e) {
        if (typeof this.output.getTransport().reset === 'function') {
          this.output.getTransport().reset();
        }
        throw e;
      }
    }
  
    recv_get_token () {
      const ret = this.input.readMessageBegin();
      const mtype = ret.mtype;
      if (mtype == Thrift.MessageType.EXCEPTION) {
        const x = new Thrift.TApplicationException();
        x.read(this.input);
        this.input.readMessageEnd();
        throw x;
      }
      const result = new open_api_management_get_token_result();
      result.read(this.input);
      this.input.readMessageEnd();
  
      if (null !== result.e) {
        throw result.e;
      }
      if (null !== result.success) {
        return result.success;
      }
      throw 'get_token failed: unknown result';
    }
  
    proc_call_vehicle (_req, token) {
      const self = this;
      return new Promise((resolve, reject) => {
        self.send_proc_call_vehicle(_req, token, (error, result) => {
          return error ? reject(error) : resolve(result);
        });
      });
    }
  
    send_proc_call_vehicle (_req, token, callback) {
      const params = {
        _req: _req,
        token: token
      };
      const args = new open_api_management_proc_call_vehicle_args(params);
      try {
        this.output.writeMessageBegin('proc_call_vehicle', Thrift.MessageType.CALL, this.seqid);
        args.write(this.output);
        this.output.writeMessageEnd();
        const self = this;
        this.output.getTransport().flush(true, () => {
          let error = null, result = null;
          try {
            result = self.recv_proc_call_vehicle();
          } catch (e) {
            error = e;
          }
          callback(error, result);
        });
      }
      catch (e) {
        if (typeof this.output.getTransport().reset === 'function') {
          this.output.getTransport().reset();
        }
        throw e;
      }
    }
  
    recv_proc_call_vehicle () {
      const ret = this.input.readMessageBegin();
      const mtype = ret.mtype;
      if (mtype == Thrift.MessageType.EXCEPTION) {
        const x = new Thrift.TApplicationException();
        x.read(this.input);
        this.input.readMessageEnd();
        throw x;
      }
      const result = new open_api_management_proc_call_vehicle_result();
      result.read(this.input);
      this.input.readMessageEnd();
  
      if (null !== result.e) {
        throw result.e;
      }
      if (null !== result.success) {
        return result.success;
      }
      throw 'proc_call_vehicle failed: unknown result';
    }
  
    proc_vehicle_info (plateNo, driverId, token) {
      const self = this;
      return new Promise((resolve, reject) => {
        self.send_proc_vehicle_info(plateNo, driverId, token, (error, result) => {
          return error ? reject(error) : resolve(result);
        });
      });
    }
  
    send_proc_vehicle_info (plateNo, driverId, token, callback) {
      const params = {
        plateNo: plateNo,
        driverId: driverId,
        token: token
      };
      const args = new open_api_management_proc_vehicle_info_args(params);
      try {
        this.output.writeMessageBegin('proc_vehicle_info', Thrift.MessageType.CALL, this.seqid);
        args.write(this.output);
        this.output.writeMessageEnd();
        const self = this;
        this.output.getTransport().flush(true, () => {
          let error = null, result = null;
          try {
            result = self.recv_proc_vehicle_info();
          } catch (e) {
            error = e;
          }
          callback(error, result);
        });
      }
      catch (e) {
        if (typeof this.output.getTransport().reset === 'function') {
          this.output.getTransport().reset();
        }
        throw e;
      }
    }
  
    recv_proc_vehicle_info () {
      const ret = this.input.readMessageBegin();
      const mtype = ret.mtype;
      if (mtype == Thrift.MessageType.EXCEPTION) {
        const x = new Thrift.TApplicationException();
        x.read(this.input);
        this.input.readMessageEnd();
        throw x;
      }
      const result = new open_api_management_proc_vehicle_info_result();
      result.read(this.input);
      this.input.readMessageEnd();
  
      if (null !== result.e) {
        throw result.e;
      }
      if (null !== result.success) {
        return result.success;
      }
      throw 'proc_vehicle_info failed: unknown result';
    }
  
    proc_all_vehicle_info (token) {
      const self = this;
      return new Promise((resolve, reject) => {
        self.send_proc_all_vehicle_info(token, (error, result) => {
          return error ? reject(error) : resolve(result);
        });
      });
    }
  
    send_proc_all_vehicle_info (token, callback) {
      const params = {
        token: token
      };
      const args = new open_api_management_proc_all_vehicle_info_args(params);
      try {
        this.output.writeMessageBegin('proc_all_vehicle_info', Thrift.MessageType.CALL, this.seqid);
        args.write(this.output);
        this.output.writeMessageEnd();
        const self = this;
        this.output.getTransport().flush(true, () => {
          let error = null, result = null;
          try {
            result = self.recv_proc_all_vehicle_info();
          } catch (e) {
            error = e;
          }
          callback(error, result);
        });
      }
      catch (e) {
        if (typeof this.output.getTransport().reset === 'function') {
          this.output.getTransport().reset();
        }
        throw e;
      }
    }
  
    recv_proc_all_vehicle_info () {
      const ret = this.input.readMessageBegin();
      const mtype = ret.mtype;
      if (mtype == Thrift.MessageType.EXCEPTION) {
        const x = new Thrift.TApplicationException();
        x.read(this.input);
        this.input.readMessageEnd();
        throw x;
      }
      const result = new open_api_management_proc_all_vehicle_info_result();
      result.read(this.input);
      this.input.readMessageEnd();
  
      if (null !== result.e) {
        throw result.e;
      }
      if (null !== result.success) {
        return result.success;
      }
      throw 'proc_all_vehicle_info failed: unknown result';
    }
  
    proc_push_weight (_req, token) {
      const self = this;
      return new Promise((resolve, reject) => {
        self.send_proc_push_weight(_req, token, (error, result) => {
          return error ? reject(error) : resolve(result);
        });
      });
    }
  
    send_proc_push_weight (_req, token, callback) {
      const params = {
        _req: _req,
        token: token
      };
      const args = new open_api_management_proc_push_weight_args(params);
      try {
        this.output.writeMessageBegin('proc_push_weight', Thrift.MessageType.CALL, this.seqid);
        args.write(this.output);
        this.output.writeMessageEnd();
        const self = this;
        this.output.getTransport().flush(true, () => {
          let error = null, result = null;
          try {
            result = self.recv_proc_push_weight();
          } catch (e) {
            error = e;
          }
          callback(error, result);
        });
      }
      catch (e) {
        if (typeof this.output.getTransport().reset === 'function') {
          this.output.getTransport().reset();
        }
        throw e;
      }
    }
  
    recv_proc_push_weight () {
      const ret = this.input.readMessageBegin();
      const mtype = ret.mtype;
      if (mtype == Thrift.MessageType.EXCEPTION) {
        const x = new Thrift.TApplicationException();
        x.read(this.input);
        this.input.readMessageEnd();
        throw x;
      }
      const result = new open_api_management_proc_push_weight_result();
      result.read(this.input);
      this.input.readMessageEnd();
  
      if (null !== result.e) {
        throw result.e;
      }
      if (null !== result.success) {
        return result.success;
      }
      throw 'proc_push_weight failed: unknown result';
    }
  
    proc_add_black_list (type, target, reason, expire_date, token) {
      const self = this;
      return new Promise((resolve, reject) => {
        self.send_proc_add_black_list(type, target, reason, expire_date, token, (error, result) => {
          return error ? reject(error) : resolve(result);
        });
      });
    }
  
    send_proc_add_black_list (type, target, reason, expire_date, token, callback) {
      const params = {
        type: type,
        target: target,
        reason: reason,
        expire_date: expire_date,
        token: token
      };
      const args = new open_api_management_proc_add_black_list_args(params);
      try {
        this.output.writeMessageBegin('proc_add_black_list', Thrift.MessageType.CALL, this.seqid);
        args.write(this.output);
        this.output.writeMessageEnd();
        const self = this;
        this.output.getTransport().flush(true, () => {
          let error = null, result = null;
          try {
            result = self.recv_proc_add_black_list();
          } catch (e) {
            error = e;
          }
          callback(error, result);
        });
      }
      catch (e) {
        if (typeof this.output.getTransport().reset === 'function') {
          this.output.getTransport().reset();
        }
        throw e;
      }
    }
  
    recv_proc_add_black_list () {
      const ret = this.input.readMessageBegin();
      const mtype = ret.mtype;
      if (mtype == Thrift.MessageType.EXCEPTION) {
        const x = new Thrift.TApplicationException();
        x.read(this.input);
        this.input.readMessageEnd();
        throw x;
      }
      const result = new open_api_management_proc_add_black_list_result();
      result.read(this.input);
      this.input.readMessageEnd();
  
      if (null !== result.e) {
        throw result.e;
      }
      if (null !== result.success) {
        return result.success;
      }
      throw 'proc_add_black_list failed: unknown result';
    }
  
    proc_del_black_list (type, target, token) {
      const self = this;
      return new Promise((resolve, reject) => {
        self.send_proc_del_black_list(type, target, token, (error, result) => {
          return error ? reject(error) : resolve(result);
        });
      });
    }
  
    send_proc_del_black_list (type, target, token, callback) {
      const params = {
        type: type,
        target: target,
        token: token
      };
      const args = new open_api_management_proc_del_black_list_args(params);
      try {
        this.output.writeMessageBegin('proc_del_black_list', Thrift.MessageType.CALL, this.seqid);
        args.write(this.output);
        this.output.writeMessageEnd();
        const self = this;
        this.output.getTransport().flush(true, () => {
          let error = null, result = null;
          try {
            result = self.recv_proc_del_black_list();
          } catch (e) {
            error = e;
          }
          callback(error, result);
        });
      }
      catch (e) {
        if (typeof this.output.getTransport().reset === 'function') {
          this.output.getTransport().reset();
        }
        throw e;
      }
    }
  
    recv_proc_del_black_list () {
      const ret = this.input.readMessageBegin();
      const mtype = ret.mtype;
      if (mtype == Thrift.MessageType.EXCEPTION) {
        const x = new Thrift.TApplicationException();
        x.read(this.input);
        this.input.readMessageEnd();
        throw x;
      }
      const result = new open_api_management_proc_del_black_list_result();
      result.read(this.input);
      this.input.readMessageEnd();
  
      if (null !== result.e) {
        throw result.e;
      }
      if (null !== result.success) {
        return result.success;
      }
      throw 'proc_del_black_list failed: unknown result';
    }
  
    proc_add_base_info (_req, token) {
      const self = this;
      return new Promise((resolve, reject) => {
        self.send_proc_add_base_info(_req, token, (error, result) => {
          return error ? reject(error) : resolve(result);
        });
      });
    }
  
    send_proc_add_base_info (_req, token, callback) {
      const params = {
        _req: _req,
        token: token
      };
      const args = new open_api_management_proc_add_base_info_args(params);
      try {
        this.output.writeMessageBegin('proc_add_base_info', Thrift.MessageType.CALL, this.seqid);
        args.write(this.output);
        this.output.writeMessageEnd();
        const self = this;
        this.output.getTransport().flush(true, () => {
          let error = null, result = null;
          try {
            result = self.recv_proc_add_base_info();
          } catch (e) {
            error = e;
          }
          callback(error, result);
        });
      }
      catch (e) {
        if (typeof this.output.getTransport().reset === 'function') {
          this.output.getTransport().reset();
        }
        throw e;
      }
    }
  
    recv_proc_add_base_info () {
      const ret = this.input.readMessageBegin();
      const mtype = ret.mtype;
      if (mtype == Thrift.MessageType.EXCEPTION) {
        const x = new Thrift.TApplicationException();
        x.read(this.input);
        this.input.readMessageEnd();
        throw x;
      }
      const result = new open_api_management_proc_add_base_info_result();
      result.read(this.input);
      this.input.readMessageEnd();
  
      if (null !== result.e) {
        throw result.e;
      }
      if (null !== result.success) {
        return result.success;
      }
      throw 'proc_add_base_info failed: unknown result';
    }
  
    proc_del_base_info (_req, token) {
      const self = this;
      return new Promise((resolve, reject) => {
        self.send_proc_del_base_info(_req, token, (error, result) => {
          return error ? reject(error) : resolve(result);
        });
      });
    }
  
    send_proc_del_base_info (_req, token, callback) {
      const params = {
        _req: _req,
        token: token
      };
      const args = new open_api_management_proc_del_base_info_args(params);
      try {
        this.output.writeMessageBegin('proc_del_base_info', Thrift.MessageType.CALL, this.seqid);
        args.write(this.output);
        this.output.writeMessageEnd();
        const self = this;
        this.output.getTransport().flush(true, () => {
          let error = null, result = null;
          try {
            result = self.recv_proc_del_base_info();
          } catch (e) {
            error = e;
          }
          callback(error, result);
        });
      }
      catch (e) {
        if (typeof this.output.getTransport().reset === 'function') {
          this.output.getTransport().reset();
        }
        throw e;
      }
    }
  
    recv_proc_del_base_info () {
      const ret = this.input.readMessageBegin();
      const mtype = ret.mtype;
      if (mtype == Thrift.MessageType.EXCEPTION) {
        const x = new Thrift.TApplicationException();
        x.read(this.input);
        this.input.readMessageEnd();
        throw x;
      }
      const result = new open_api_management_proc_del_base_info_result();
      result.read(this.input);
      this.input.readMessageEnd();
  
      if (null !== result.e) {
        throw result.e;
      }
      if (null !== result.success) {
        return result.success;
      }
      throw 'proc_del_base_info failed: unknown result';
    }
  
    proc_push_balance (_req, token) {
      const self = this;
      return new Promise((resolve, reject) => {
        self.send_proc_push_balance(_req, token, (error, result) => {
          return error ? reject(error) : resolve(result);
        });
      });
    }
  
    send_proc_push_balance (_req, token, callback) {
      const params = {
        _req: _req,
        token: token
      };
      const args = new open_api_management_proc_push_balance_args(params);
      try {
        this.output.writeMessageBegin('proc_push_balance', Thrift.MessageType.CALL, this.seqid);
        args.write(this.output);
        this.output.writeMessageEnd();
        const self = this;
        this.output.getTransport().flush(true, () => {
          let error = null, result = null;
          try {
            result = self.recv_proc_push_balance();
          } catch (e) {
            error = e;
          }
          callback(error, result);
        });
      }
      catch (e) {
        if (typeof this.output.getTransport().reset === 'function') {
          this.output.getTransport().reset();
        }
        throw e;
      }
    }
  
    recv_proc_push_balance () {
      const ret = this.input.readMessageBegin();
      const mtype = ret.mtype;
      if (mtype == Thrift.MessageType.EXCEPTION) {
        const x = new Thrift.TApplicationException();
        x.read(this.input);
        this.input.readMessageEnd();
        throw x;
      }
      const result = new open_api_management_proc_push_balance_result();
      result.read(this.input);
      this.input.readMessageEnd();
  
      if (null !== result.e) {
        throw result.e;
      }
      if (null !== result.success) {
        return result.success;
      }
      throw 'proc_push_balance failed: unknown result';
    }
  
    proc_push_zone_change (_req, token) {
      const self = this;
      return new Promise((resolve, reject) => {
        self.send_proc_push_zone_change(_req, token, (error, result) => {
          return error ? reject(error) : resolve(result);
        });
      });
    }
  
    send_proc_push_zone_change (_req, token, callback) {
      const params = {
        _req: _req,
        token: token
      };
      const args = new open_api_management_proc_push_zone_change_args(params);
      try {
        this.output.writeMessageBegin('proc_push_zone_change', Thrift.MessageType.CALL, this.seqid);
        args.write(this.output);
        this.output.writeMessageEnd();
        const self = this;
        this.output.getTransport().flush(true, () => {
          let error = null, result = null;
          try {
            result = self.recv_proc_push_zone_change();
          } catch (e) {
            error = e;
          }
          callback(error, result);
        });
      }
      catch (e) {
        if (typeof this.output.getTransport().reset === 'function') {
          this.output.getTransport().reset();
        }
        throw e;
      }
    }
  
    recv_proc_push_zone_change () {
      const ret = this.input.readMessageBegin();
      const mtype = ret.mtype;
      if (mtype == Thrift.MessageType.EXCEPTION) {
        const x = new Thrift.TApplicationException();
        x.read(this.input);
        this.input.readMessageEnd();
        throw x;
      }
      const result = new open_api_management_proc_push_zone_change_result();
      result.read(this.input);
      this.input.readMessageEnd();
  
      if (null !== result.e) {
        throw result.e;
      }
      if (null !== result.success) {
        return result.success;
      }
      throw 'proc_push_zone_change failed: unknown result';
    }
  
    proc_push_manual_permit (_req, token) {
      const self = this;
      return new Promise((resolve, reject) => {
        self.send_proc_push_manual_permit(_req, token, (error, result) => {
          return error ? reject(error) : resolve(result);
        });
      });
    }
  
    send_proc_push_manual_permit (_req, token, callback) {
      const params = {
        _req: _req,
        token: token
      };
      const args = new open_api_management_proc_push_manual_permit_args(params);
      try {
        this.output.writeMessageBegin('proc_push_manual_permit', Thrift.MessageType.CALL, this.seqid);
        args.write(this.output);
        this.output.writeMessageEnd();
        const self = this;
        this.output.getTransport().flush(true, () => {
          let error = null, result = null;
          try {
            result = self.recv_proc_push_manual_permit();
          } catch (e) {
            error = e;
          }
          callback(error, result);
        });
      }
      catch (e) {
        if (typeof this.output.getTransport().reset === 'function') {
          this.output.getTransport().reset();
        }
        throw e;
      }
    }
  
    recv_proc_push_manual_permit () {
      const ret = this.input.readMessageBegin();
      const mtype = ret.mtype;
      if (mtype == Thrift.MessageType.EXCEPTION) {
        const x = new Thrift.TApplicationException();
        x.read(this.input);
        this.input.readMessageEnd();
        throw x;
      }
      const result = new open_api_management_proc_push_manual_permit_result();
      result.read(this.input);
      this.input.readMessageEnd();
  
      if (null !== result.e) {
        throw result.e;
      }
      if (null !== result.success) {
        return result.success;
      }
      throw 'proc_push_manual_permit failed: unknown result';
    }
  };
  