<?php
namespace Airavata\Service\Profile\User\CPI;

/**
 * Autogenerated by Thrift Compiler (0.10.0)
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated
 */
use Thrift\Base\TBase;
use Thrift\Type\TType;
use Thrift\Type\TMessageType;
use Thrift\Exception\TException;
use Thrift\Exception\TProtocolException;
use Thrift\Protocol\TProtocol;
use Thrift\Protocol\TBinaryProtocolAccelerated;
use Thrift\Exception\TApplicationException;


final class Constant extends \Thrift\Type\TConstant {
  static protected $USER_PROFILE_CPI_VERSION;
  static protected $USER_PROFILE_CPI_NAME;

  static protected function init_USER_PROFILE_CPI_VERSION() {
    return "0.18.0";
  }

  static protected function init_USER_PROFILE_CPI_NAME() {
    return "UserProfileService";
  }
}


