syntax = "proto3";

package foo;

import 'google/protobuf/any.proto';
import 'google/protobuf/struct.proto';
import 'google/protobuf/wrappers.proto';
import 'proto/test_empty_php_namespace.proto';
import 'proto/test_include.proto';
import 'proto/test_no_namespace.proto';
import 'proto/test_php_namespace.proto';
import 'proto/test_prefix.proto';

message TestMessage {
  // Singular
  int32 optional_int32 = 1;
  int64 optional_int64 = 2;
  uint32 optional_uint32 = 3;
  uint64 optional_uint64 = 4;
  sint32 optional_sint32 = 5;
  sint64 optional_sint64 = 6;
  fixed32 optional_fixed32 = 7;
  fixed64 optional_fixed64 = 8;
  sfixed32 optional_sfixed32 = 9;
  sfixed64 optional_sfixed64 = 10;
  float optional_float = 11;
  double optional_double = 12;
  bool optional_bool = 13;
  string optional_string = 14;
  bytes optional_bytes = 15;

  TestEnum optional_enum = 16;
  Sub optional_message = 17;
  bar.TestInclude optional_included_message = 18;
  TestMessage recursive = 19;

  // True optional
  optional int32 true_optional_int32 = 201;
  optional int64 true_optional_int64 = 202;
  optional uint32 true_optional_uint32 = 203;
  optional uint64 true_optional_uint64 = 204;
  optional sint32 true_optional_sint32 = 205;
  optional sint64 true_optional_sint64 = 206;
  optional fixed32 true_optional_fixed32 = 207;
  optional fixed64 true_optional_fixed64 = 208;
  optional sfixed32 true_optional_sfixed32 = 209;
  optional sfixed64 true_optional_sfixed64 = 210;
  optional float true_optional_float = 211;
  optional double true_optional_double = 212;
  optional bool true_optional_bool = 213;
  optional string true_optional_string = 214;
  optional bytes true_optional_bytes = 215;

  optional TestEnum true_optional_enum = 216;
  optional Sub true_optional_message = 217;
  optional bar.TestInclude true_optional_included_message = 218;

  // Repeated
  repeated int32 repeated_int32 = 31;
  repeated int64 repeated_int64 = 32;
  repeated uint32 repeated_uint32 = 33;
  repeated uint64 repeated_uint64 = 34;
  repeated sint32 repeated_sint32 = 35;
  repeated sint64 repeated_sint64 = 36;
  repeated fixed32 repeated_fixed32 = 37;
  repeated fixed64 repeated_fixed64 = 38;
  repeated sfixed32 repeated_sfixed32 = 39;
  repeated sfixed64 repeated_sfixed64 = 40;
  repeated float repeated_float = 41;
  repeated double repeated_double = 42;
  repeated bool repeated_bool = 43;
  repeated string repeated_string = 44;
  repeated bytes repeated_bytes = 45;

  repeated TestEnum repeated_enum = 46;
  repeated Sub repeated_message = 47;
  repeated TestMessage repeated_recursive = 48;

  oneof my_oneof {
    int32 oneof_int32 = 51;
    int64 oneof_int64 = 52;
    uint32 oneof_uint32 = 53;
    uint64 oneof_uint64 = 54;
    uint32 oneof_sint32 = 55;
    uint64 oneof_sint64 = 56;
    uint32 oneof_fixed32 = 57;
    uint64 oneof_fixed64 = 58;
    uint32 oneof_sfixed32 = 59;
    uint64 oneof_sfixed64 = 60;
    double oneof_double = 61;
    float oneof_float = 62;
    bool oneof_bool = 63;
    string oneof_string = 64;
    bytes oneof_bytes = 65;
    TestEnum oneof_enum = 66;
    Sub oneof_message = 67;
  }

  map<int32, int32> map_int32_int32 = 71;
  map<int64, int64> map_int64_int64 = 72;
  map<uint32, uint32> map_uint32_uint32 = 73;
  map<uint64, uint64> map_uint64_uint64 = 74;
  map<sint32, sint32> map_sint32_sint32 = 75;
  map<sint64, sint64> map_sint64_sint64 = 76;
  map<fixed32, fixed32> map_fixed32_fixed32 = 77;
  map<fixed64, fixed64> map_fixed64_fixed64 = 78;
  map<sfixed32, sfixed32> map_sfixed32_sfixed32 = 79;
  map<sfixed64, sfixed64> map_sfixed64_sfixed64 = 80;
  map<int32, float> map_int32_float = 81;
  map<int32, double> map_int32_double = 82;
  map<bool, bool> map_bool_bool = 83;
  map<string, string> map_string_string = 84;
  map<int32, bytes> map_int32_bytes = 85;
  map<int32, TestEnum> map_int32_enum = 86;
  map<int32, Sub> map_int32_message = 87;

  map<int32, TestMessage> map_recursive = 88;

  message Sub {
    int32 a = 1;
    repeated int32 b = 2;
  }

  // Reserved for non-existing field test.
  // int32 non_exist = 89;

  NoNamespaceMessage optional_no_namespace_message = 91;
  NoNamespaceEnum optional_no_namespace_enum = 92;
  repeated NoNamespaceMessage repeated_no_namespace_message = 93;
  repeated NoNamespaceEnum repeated_no_namespace_enum = 94;

  enum NestedEnum {
    ZERO = 0;
  }

  NestedEnum optional_nested_enum = 101;

  // Test prefix for reserved words.
  message Empty {
    int32 a = 1;
  }

  reserved 111;

  // Test map with missing message value
  map<string, TestMessage> map_string_message = 121;
  map<string, google.protobuf.Any> map_string_any = 122;
  map<string, google.protobuf.ListValue> map_string_list = 123;
  map<string, google.protobuf.Struct> map_string_struct = 124;

  // deprecated field
  int32 deprecated_int32 = 125 [deprecated = true];
  // deprecated optional field
  optional int32 deprecated_optional_int32 = 126 [deprecated = true];
  // deprecated wrapped field
  google.protobuf.Int32Value deprecated_int32_value = 127 [deprecated = true];
  // deprecated oneof
  oneof deprecated_oneof {
    int32 deprecated_oneof_int32 = 128 [deprecated = true];
  }
  // deprecated repeated field
  repeated int32 deprecated_repeated_int32 = 129 [deprecated = true];
  // deprecated map
  map<int32, int32> deprecated_map_int32_int32 = 130 [deprecated = true];
  // deprecated any
  google.protobuf.Any deprecated_any = 131 [deprecated = true];
  // deprecated message
  TestMessage deprecated_message = 132 [deprecated = true];
  // deprecated enum
  NestedEnum deprecated_enum = 133 [deprecated = true];
}

enum TestEnum {
  ZERO = 0;
  ONE = 1;
  TWO = 2;
  ECHO = 3;  // Test reserved name.
}

// Test prefix for reserved words.
message Empty {
  int32 a = 1;
}

message ARRAY {
  int32 a = 1;
}

message EmptyAnySerialization {
  string a = 1;
}

message TestPackedMessage {
  repeated int32 repeated_int32 = 90 [packed = true];
  repeated int64 repeated_int64 = 91 [packed = true];
  repeated uint32 repeated_uint32 = 92 [packed = true];
  repeated uint64 repeated_uint64 = 93 [packed = true];
  repeated sint32 repeated_sint32 = 94 [packed = true];
  repeated sint64 repeated_sint64 = 95 [packed = true];
  repeated fixed32 repeated_fixed32 = 96 [packed = true];
  repeated fixed64 repeated_fixed64 = 97 [packed = true];
  repeated sfixed32 repeated_sfixed32 = 98 [packed = true];
  repeated sfixed64 repeated_sfixed64 = 99 [packed = true];
  repeated float repeated_float = 100 [packed = true];
  repeated double repeated_double = 101 [packed = true];
  repeated bool repeated_bool = 102 [packed = true];
  repeated TestEnum repeated_enum = 103 [packed = true];
}

// Need to be in sync with TestPackedMessage.
message TestUnpackedMessage {
  repeated int32 repeated_int32 = 90 [packed = false];
  repeated int64 repeated_int64 = 91 [packed = false];
  repeated uint32 repeated_uint32 = 92 [packed = false];
  repeated uint64 repeated_uint64 = 93 [packed = false];
  repeated sint32 repeated_sint32 = 94 [packed = false];
  repeated sint64 repeated_sint64 = 95 [packed = false];
  repeated fixed32 repeated_fixed32 = 96 [packed = false];
  repeated fixed64 repeated_fixed64 = 97 [packed = false];
  repeated sfixed32 repeated_sfixed32 = 98 [packed = false];
  repeated sfixed64 repeated_sfixed64 = 99 [packed = false];
  repeated float repeated_float = 100 [packed = false];
  repeated double repeated_double = 101 [packed = false];
  repeated bool repeated_bool = 102 [packed = false];
  repeated TestEnum repeated_enum = 103 [packed = false];
}

// /**/@<>&\{
message TestPhpDoc {
  int32 a = 1;
}

message TestIncludePrefixMessage {
  TestPrefix prefix_message = 1;
}

message TestIncludeNamespaceMessage {
  TestNamespace namespace_message = 1;
  TestEmptyNamespace empty_namespace_message = 2;
}

// This will cause upb fields not ordered by the order in the generated code.
message TestRandomFieldOrder {
  int64 tag13 = 150;
  string tag14 = 160;
}

message TestLargeFieldNumber {
  int32 large_field_number = 536870911;
}

message TestReverseFieldOrder {
  repeated int32 a = 2;
  string b = 1;
}

message testLowerCaseMessage {}

enum testLowerCaseEnum {
  VALUE = 0;
}

message TestAny {
  google.protobuf.Any any = 1;
}

message TestInt32Value {
  google.protobuf.Int32Value field = 1;
  repeated google.protobuf.Int32Value repeated_field = 2;
  oneof oneof_fields {
    google.protobuf.Int32Value oneof_field = 3;
    int32 int32_field = 4;
  }
}

message TestInt64Value {
  google.protobuf.Int64Value field = 1;
  repeated google.protobuf.Int64Value repeated_field = 2;
  oneof oneof_fields {
    google.protobuf.Int64Value oneof_field = 3;
    int32 int32_field = 4;
  }
}

message TestUInt32Value {
  google.protobuf.UInt32Value field = 1;
  repeated google.protobuf.UInt32Value repeated_field = 2;
  oneof oneof_fields {
    google.protobuf.UInt32Value oneof_field = 3;
    int32 int32_field = 4;
  }
}

message TestUInt64Value {
  google.protobuf.UInt64Value field = 1;
  repeated google.protobuf.UInt64Value repeated_field = 2;
  oneof oneof_fields {
    google.protobuf.UInt64Value oneof_field = 3;
    int32 int32_field = 4;
  }
}

message TestBoolValue {
  google.protobuf.BoolValue field = 1;
  repeated google.protobuf.BoolValue repeated_field = 2;
  oneof oneof_fields {
    google.protobuf.BoolValue oneof_field = 3;
    int32 int32_field = 4;
  }
}

message TestStringValue {
  google.protobuf.StringValue field = 1;
  repeated google.protobuf.StringValue repeated_field = 2;
  oneof oneof_fields {
    google.protobuf.StringValue oneof_field = 3;
    int32 int32_field = 4;
  }
  map<int32, google.protobuf.StringValue> map_field = 5;
}

message TestBytesValue {
  google.protobuf.BytesValue field = 1;
  repeated google.protobuf.BytesValue repeated_field = 2;
  oneof oneof_fields {
    google.protobuf.BytesValue oneof_field = 3;
    int32 int32_field = 4;
  }
}

message Test32Fields {
  optional uint32 id = 1;
  optional uint32 random_name_a0 = 2;
  optional uint32 random_name_a1 = 3;
  optional uint32 random_name_a2 = 4;
  optional uint32 random_name_a3 = 5;
  optional uint32 random_name_a4 = 6;
  optional uint32 random_name_a5 = 7;
  optional uint32 random_name_a6 = 8;
  optional uint32 random_name_a7 = 9;
  optional uint32 random_name_a8 = 10;
  optional uint32 random_name_a9 = 11;
  optional uint32 random_name_b0 = 12;
  optional uint32 random_name_b1 = 13;
  optional uint32 random_name_b2 = 14;
  optional uint32 random_name_b3 = 15;
  optional uint32 random_name_b4 = 16;
  optional uint32 random_name_b5 = 17;
  optional uint32 random_name_b6 = 18;
  optional uint32 random_name_b7 = 19;
  optional uint32 random_name_b8 = 20;
  optional uint32 random_name_b9 = 21;
  optional uint32 random_name_c0 = 22;
  optional uint32 random_name_c1 = 23;
  optional uint32 random_name_c2 = 24;
  optional uint32 random_name_c3 = 25;
  optional uint32 random_name_c4 = 26;
  optional uint32 random_name_c5 = 27;
  optional uint32 random_name_c6 = 28;
  optional uint32 random_name_c7 = 29;
  optional uint32 random_name_c8 = 30;
  optional uint32 random_name_c9 = 31;
  optional string version = 32;
}
