Go to the documentation of this file.
53 #if !((defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \
54 (defined(__cplusplus) && __cplusplus >= 201103L) || \
55 (defined(_MSC_VER) && _MSC_VER >= 1900))
56 #error upb requires C99 or C++11 or MSVC >= 2015.
62 #if UINTPTR_MAX == 0xffffffff
63 #define UPB_SIZE(size32, size64) size32
65 #define UPB_SIZE(size32, size64) size64
71 #define UPB_PTR_AT(msg, ofs, type) ((type*)((char*)(msg) + (ofs)))
73 #define UPB_READ_ONEOF(msg, fieldtype, offset, case_offset, case_val, default) \
74 *UPB_PTR_AT(msg, case_offset, int) == case_val \
75 ? *UPB_PTR_AT(msg, offset, fieldtype) \
78 #define UPB_WRITE_ONEOF(msg, fieldtype, offset, value, case_offset, case_val) \
79 *UPB_PTR_AT(msg, case_offset, int) = case_val; \
80 *UPB_PTR_AT(msg, offset, fieldtype) = value;
82 #define UPB_MAPTYPE_STRING 0
86 #define UPB_INLINE inline
87 #elif defined (__GNUC__) || defined(__clang__)
88 #define UPB_INLINE static __inline__
90 #define UPB_INLINE static
93 #define UPB_ALIGN_UP(size, align) (((size) + (align) - 1) / (align) * (align))
94 #define UPB_ALIGN_DOWN(size, align) ((size) / (align) * (align))
95 #define UPB_ALIGN_MALLOC(size) UPB_ALIGN_UP(size, 16)
96 #define UPB_ALIGN_OF(type) offsetof (struct { char c; type member; }, member)
99 #if defined (__GNUC__) || defined(__clang__)
100 #define UPB_LIKELY(x) __builtin_expect((x),1)
101 #define UPB_UNLIKELY(x) __builtin_expect((x),0)
103 #define UPB_LIKELY(x) (x)
104 #define UPB_UNLIKELY(x) (x)
109 #define UPB_FORCEINLINE __inline__ __attribute__((always_inline))
110 #define UPB_NOINLINE __attribute__((noinline))
111 #define UPB_NORETURN __attribute__((__noreturn__))
112 #define UPB_PRINTF(str, first_vararg) __attribute__((format (printf, str, first_vararg)))
113 #elif defined(_MSC_VER)
115 #define UPB_FORCEINLINE
116 #define UPB_NORETURN __declspec(noreturn)
117 #define UPB_PRINTF(str, first_vararg)
119 #define UPB_FORCEINLINE
122 #define UPB_PRINTF(str, first_vararg)
125 #define UPB_MAX(x, y) ((x) > (y) ? (x) : (y))
126 #define UPB_MIN(x, y) ((x) < (y) ? (x) : (y))
128 #define UPB_UNUSED(var) (void)var
134 #define UPB_ASSUME(expr) if (!(expr)) __builtin_unreachable()
135 #elif defined _MSC_VER
136 #define UPB_ASSUME(expr) if (!(expr)) __assume(0)
138 #define UPB_ASSUME(expr) do {} while (false && (expr))
141 #define UPB_ASSUME(expr) assert(expr)
147 #define UPB_ASSERT(expr) do {} while (false && (expr))
149 #define UPB_ASSERT(expr) assert(expr)
152 #if defined(__GNUC__) || defined(__clang__)
153 #define UPB_UNREACHABLE() do { assert(0); __builtin_unreachable(); } while(0)
155 #define UPB_UNREACHABLE() do { assert(0); } while(0)
160 #define UPB_SETJMP(buf) _setjmp(buf)
161 #define UPB_LONGJMP(buf, val) _longjmp(buf, val)
163 #define UPB_SETJMP(buf) setjmp(buf)
164 #define UPB_LONGJMP(buf, val) longjmp(buf, val)
168 #define UPB_PTRADD(ptr, ofs) ((ofs) ? (ptr) + (ofs) : (ptr))
172 #ifdef __has_attribute
173 #define UPB_HAS_ATTRIBUTE(x) __has_attribute(x)
175 #define UPB_HAS_ATTRIBUTE(x) 0
178 #if UPB_HAS_ATTRIBUTE(musttail)
179 #define UPB_MUSTTAIL __attribute__((musttail))
184 #undef UPB_HAS_ATTRIBUTE
200 #if (defined(__x86_64__) || defined(__aarch64__)) && defined(__GNUC__)
201 #define UPB_FASTTABLE_SUPPORTED 1
203 #define UPB_FASTTABLE_SUPPORTED 0
209 #if defined(UPB_ENABLE_FASTTABLE)
210 #if !UPB_FASTTABLE_SUPPORTED
211 #error fasttable is x86-64/ARM64 only and requires GCC or Clang.
213 #define UPB_FASTTABLE 1
217 #elif defined(UPB_TRY_ENABLE_FASTTABLE)
218 #define UPB_FASTTABLE UPB_FASTTABLE_SUPPORTED
220 #define UPB_FASTTABLE 0
225 #if !UPB_FASTTABLE && defined(UPB_TRY_ENABLE_FASTTABLE)
226 #define UPB_FASTTABLE_INIT(...)
228 #define UPB_FASTTABLE_INIT(...) __VA_ARGS__
231 #undef UPB_FASTTABLE_SUPPORTED
235 #if defined(__SANITIZE_ADDRESS__)
245 #define UPB_POISON_MEMORY_REGION(addr, size) \
246 __asan_poison_memory_region((addr), (size))
247 #define UPB_UNPOISON_MEMORY_REGION(addr, size) \
248 __asan_unpoison_memory_region((addr), (size))
251 #define UPB_POISON_MEMORY_REGION(addr, size) \
252 ((void)(addr), (void)(size))
253 #define UPB_UNPOISON_MEMORY_REGION(addr, size) \
254 ((void)(addr), (void)(size))
320 #define OP_SCALAR_LG2(n) (n)
325 #define OP_FIXPCK_LG2(n) (n + 5)
326 #define OP_VARPCK_LG2(n) (n + 9)
407 #pragma clang diagnostic push
408 #pragma clang diagnostic ignored "-Wunknown-warning-option"
409 #pragma clang diagnostic ignored "-Wsuggest-attribute"
418 #pragma clang diagnostic pop
422 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
423 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
424 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
425 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
426 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
427 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
428 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
429 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
430 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
431 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
432 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0,
457 for (
i = 1;
i < 10;
i++) {
459 val += (
byte - 1) << (
i * 7);
460 if (!(
byte & 0x80)) {
528 int *last_field_index) {
531 if (
l == NULL)
return &none;
533 size_t idx = ((size_t)field_number) - 1;
534 if (idx < l->dense_below) {
539 int last = *last_field_index;
540 for (
idx = last;
idx <
l->field_count;
idx++) {
541 if (
l->fields[
idx].number == field_number) {
547 if (
l->fields[
idx].number == field_number) {
556 *last_field_index =
idx;
557 return &
l->fields[
idx];
684 int mask = (1 << lg2) - 1;
686 if ((val->
size & mask) != 0) {
700 int scale = 1 << lg2;
743 memset(&ent, 0,
sizeof(ent));
764 if (
field->presence > 0) {
766 }
else if (
field->presence < 0) {
772 *oneof_case =
field->number;
816 if (
layout &&
layout->table_mask != (
unsigned char)-1) {
829 int last_field_index = 0;
835 const char *field_start =
ptr;
841 field_number =
tag >> 3;
867 int ndx =
field->descriptortype;
885 d->end_group = field_number;
913 d->unknown = field_start;
914 d->unknown_msg =
msg;
916 d->unknown_msg = NULL;
917 field_start =
d->unknown;
958 }
else if (
size <= 16) {
972 state.unknown_msg = NULL;
977 state.arena.cleanup_metadata =
arena->cleanup_metadata;
988 arena->cleanup_metadata =
state.arena.cleanup_metadata;
1008 #define UPB_PB_VARINT_MAX_LEN 10
1016 if (val)
byte |= 0x80U;
1048 size_t old_size = e->limit - e->buf;
1059 e->ptr = new_buf +
new_size - (e->limit - e->ptr);
1070 if ((
size_t)(e->ptr - e->buf) <
bytes) {
1080 if (
len == 0)
return;
1109 if (val < 128 && e->
ptr != e->buf) {
1138 size_t bytes = arr->
len * elem_size;
1158 bool skip_zero_value) {
1159 const char *field_mem = _field_mem;
1162 #define CASE(ctype, type, wtype, encodeval) \
1164 ctype val = *(ctype *)field_mem; \
1165 if (skip_zero_value && val == 0) { \
1168 encode_##type(e, encodeval); \
1169 wire_type = wtype; \
1173 switch (
f->descriptortype) {
1201 if (skip_zero_value && view.
size == 0) {
1211 void *submsg = *(
void **)field_mem;
1213 if (submsg == NULL) {
1225 void *submsg = *(
void **)field_mem;
1227 if (submsg == NULL) {
1249 size_t pre_len = e->limit - e->ptr;
1251 if (arr == NULL || arr->
len == 0) {
1255 #define VARINT_CASE(ctype, encode) \
1257 const ctype *start = _upb_array_constptr(arr); \
1258 const ctype *ptr = start + arr->len; \
1259 uint32_t tag = packed ? 0 : (f->number << 3) | UPB_WIRE_TYPE_VARINT; \
1262 encode_varint(e, encode); \
1263 if (tag) encode_varint(e, tag); \
1264 } while (ptr != start); \
1268 #define TAG(wire_type) (packed ? 0 : (f->number << 3 | wire_type))
1270 switch (
f->descriptortype) {
1355 size_t pre_len = e->limit - e->ptr;
1359 size = (e->limit - e->ptr) - pre_len;
1370 if (
map == NULL)
return;
1398 bool skip_empty =
false;
1399 if (
f->presence == 0) {
1402 }
else if (
f->presence > 0) {
1414 size_t pre_len = e->limit - e->ptr;
1419 size_t unknown_size;
1444 *
size = (e->limit - e->ptr) - pre_len;
1466 *
size = e.limit - e.ptr;
1503 if (!
in->internal) {
1507 if (!
internal)
return false;
1508 internal->size =
size;
1510 internal->ext_begin =
size;
1511 in->internal =
internal;
1512 }
else if (
in->internal->ext_begin -
in->internal->unknown_end < need) {
1515 size_t ext_bytes =
in->internal->size -
in->internal->ext_begin;
1516 size_t new_ext_begin =
new_size - ext_bytes;
1519 if (!
internal)
return false;
1522 char *
ptr = (
char*)
internal;
1523 memmove(
ptr + new_ext_begin,
ptr +
internal->ext_begin, ext_bytes);
1525 internal->ext_begin = new_ext_begin;
1527 in->internal =
internal;
1529 UPB_ASSERT(
in->internal->ext_begin -
in->internal->unknown_end >= need);
1538 in->internal->unknown_end +=
len;
1553 return (
char*)(
in->internal + 1);
1580 for (
size_t i = 0;
i <
n;
i++) {
1606 int elem_size_lg2 = arr->
data & 7;
1607 size_t old_bytes = arr->
size << elem_size_lg2;
1614 new_bytes =
new_size << elem_size_lg2;
1631 if (!arr)
return NULL;
1647 if (!arr)
return false;
1649 size_t elems = arr->
len;
1670 map->key_size = key_size;
1671 map->val_size = value_size;
1677 void *b_key,
size_t size) {
1719 size_t common_size =
UPB_MIN(
a.size,
b.size);
1720 int cmp = memcmp(
a.data,
b.data, common_size);
1722 return a.size -
b.size;
1728 sorted->
start = s->size;
1730 sorted->
end = sorted->
start + map_size;
1733 if (sorted->
end > s->cap) {
1735 s->entries = realloc(s->entries, s->cap *
sizeof(*s->entries));
1736 if (!s->entries)
return false;
1739 s->size = sorted->
end;
1745 for (; src <
end; src++) {
1755 int (*compar)(
const void *,
const void *);
1787 qsort(&s->entries[sorted->
start], map_size,
sizeof(*s->entries), compar);
1798 #define EXTREG_KEY_SIZE (sizeof(upb_msglayout*) + sizeof(uint32_t))
1802 memcpy(
buf +
sizeof(
l), &fieldnum,
sizeof(fieldnum));
1807 if (!
r)
return NULL;
1817 for (; e <
end; e++) {
1820 upb_value_constptr(e),
r->arena)) {
1842 return upb_value_getconstptr(
v);
1860 #define UPB_MAXARRSIZE 16
1863 #define ARRAY_SIZE(x) \
1864 ((sizeof(x)/sizeof(0[x])) / ((size_t)(!(sizeof(x) % sizeof(0[x])))))
1884 while (
v >>= 1)
ret++;
1938 return t->entries + (
hash & t->mask);
1947 return t->count == t->max_count;
1954 t->size_lg2 = size_lg2;
1960 if (!t->entries)
return false;
1971 for (e = e + 1; e <
end; e++) {
1989 if (t->size_lg2 == 0)
return NULL;
1993 if (eql(e->key,
key))
return e;
1994 if ((e = e->next) == NULL)
return NULL;
2037 if (chain == mainpos_e) {
2041 mainpos_e->
next = new_e;
2047 *new_e = *mainpos_e;
2048 while (chain->
next != mainpos_e) {
2052 chain->
next = new_e;
2057 our_e->
key = tabkey;
2066 if (eql(chain->
key,
key)) {
2070 if (removed) *removed = chain->
key;
2090 if (removed) *removed =
rm->key;
2122 if (
str == NULL)
return 0;
2143 #if defined(_MSC_VER) && defined(_M_X64)
2150 #ifdef __SIZEOF_INT128__
2155 #elif defined(_MSC_VER) && defined(_M_X64)
2156 return _umul128(v0, v1, out_high);
2166 low += (mid1 << 32) + (mid2 << 32);
2168 high += (mid1 >> 32) + (mid2 >> 32);
2190 uint64_t duplicated_state = current_state;
2204 current_state = (cs0 ^ cs1);
2208 duplicated_state = (ds0 ^ ds1);
2214 current_state = current_state ^ duplicated_state;
2223 current_state =
WyhashMix(
a ^ salt[1],
b ^ current_state);
2239 }
else if (
len > 3) {
2244 }
else if (
len > 0) {
2260 0x243F6A8885A308D3
ULL, 0x13198A2E03707344
ULL, 0xA4093822299F31D0
ULL,
2261 0x082EFA98EC4E6C89
ULL, 0x452821E638D01377
ULL,
2277 return len ==
k2.str.len && (
len == 0 || memcmp(
str,
k2.str.str,
len) == 0);
2282 size_t need_entries = (expected_size + 1) * 1204 / 1024;
2283 UPB_ASSERT(need_entries >= expected_size * 0.85);
2285 return init(&t->t, size_lg2,
a);
2298 if (!
init(&new_table.
t, size_lg2,
a))
2325 if (tabkey == 0)
return false;
2353 i->index =
next(&
i->t->t,
i->index);
2357 if (!
i->t)
return true;
2385 return i1->t ==
i2->t &&
i1->index ==
i2->index;
2397 return k1 ==
k2.num;
2405 if (key < t->array_size) {
2410 return e ? &e->val : NULL;
2420 return t->t.count + t->array_count;
2425 #if defined(UPB_DEBUG_TABLE) && !defined(NDEBUG)
2443 if (!
init(&t->t, hsize_lg2,
a))
return false;
2446 t->array_size =
UPB_MAX(1, asize);
2448 array_bytes = t->array_size *
sizeof(
upb_value);
2468 if (key < t->array_size) {
2478 if (!
init(&new_table, t->t.size_lg2 + 1,
a)) {
2504 if (!table_v)
return false;
2511 if (!table_v)
return false;
2518 if (key < t->array_size) {
2561 for (size_lg2 =
ARRAY_SIZE(counts) - 1; size_lg2 > 0; size_lg2--) {
2562 if (counts[size_lg2] == 0) {
2565 }
else if (arr_count >= (1 << size_lg2) *
MIN_DENSITY) {
2569 arr_count -= counts[size_lg2];
2576 size_t arr_size =
max[size_lg2] + 1;
2578 size_t hash_size = hash_count ? (hash_count /
MAX_LOAD) + 1 : 0;
2579 int hashsize_lg2 =
log2ceil(hash_size);
2597 return &
i->t->t.entries[
i->index];
2602 return i->t->array[
i->index];
2608 i->array_part =
true;
2614 if (
iter->array_part) {
2615 while (++
iter->index < t->array_size) {
2620 iter->array_part =
false;
2628 if (!
i->t)
return true;
2629 if (
i->array_part) {
2630 return i->index >=
i->t->array_size ||
2652 i->array_part =
false;
2659 return i1->t ==
i2->t &&
i1->index ==
i2->index &&
2660 i1->array_part ==
i2->array_part;
2731 return (
uint32_t *)(cleanup_metadata & ~0x1);
2735 return cleanup_metadata & 0x1;
2739 bool has_initial_block) {
2766 while (
a->parent !=
a) {
2768 a->parent =
next->parent;
2781 block->cleanups = 0;
2783 a->last_size =
block->size;
2799 if (!
block)
return false;
2823 n = first_block_overhead + 256;
2836 a->freelist_tail = NULL;
2879 if (
block->cleanups > 0) {
2923 if (r1 == r2)
return true;
2970 #define UPB_PARSE_PARAMS \
2971 upb_decstate *d, const char *ptr, upb_msg *msg, intptr_t table, \
2972 uint64_t hasbits, uint64_t data
2974 #define UPB_PARSE_ARGS d, ptr, msg, table, hasbits, data
2976 #define RETURN_GENERIC(m) \
2980 return fastdecode_generic(d, ptr, msg, table, hasbits, 0);
2997 UPB_MUSTTAIL return fastdecode_tagdispatch(UPB_PARSE_ARGS);
3003 int overrun =
ptr -
d->end;
3010 UPB_MUSTTAIL return fastdecode_isdonefallback(UPB_PARSE_ARGS);
3016 UPB_MUSTTAIL return fastdecode_tagdispatch(UPB_PARSE_ARGS);
3020 static bool fastdecode_checktag(
uint16_t data,
int tagbytes) {
3021 if (tagbytes == 1) {
3022 return (
data & 0xff) == 0;
3029 static const char *fastdecode_longsize(
const char *
ptr,
int *
size) {
3033 for (
i = 0;
i < 3;
i++) {
3036 *
size += (
byte - 1) << (7 + 7 *
i);
3044 *
size += (
byte - 1) << 28;
3049 static bool fastdecode_boundscheck(
const char *
ptr,
size_t len,
3054 return res < uptr || res > uend;
3058 static bool fastdecode_boundscheck2(
const char *
ptr,
size_t len,
3068 return res < uptr || res > uend;
3076 fastdecode_delimfunc *
func,
void *
ctx) {
3079 if (fastdecode_boundscheck2(
ptr,
len,
d->limit_ptr)) {
3091 if (
ptr -
d->end + (
int)
len >
d->limit) {
3101 const char *saved_limit_ptr =
d->limit_ptr;
3102 int saved_limit =
d->limit;
3104 d->limit =
d->limit_ptr -
d->end;
3107 d->limit_ptr = saved_limit_ptr;
3108 d->limit = saved_limit;
3129 fastdecode_next
next;
3131 } fastdecode_nextret;
3135 fastdecode_arr *farr,
int valbytes) {
3138 size_t old_bytes =
old_size * valbytes;
3140 size_t new_bytes =
new_size * valbytes;
3143 uint8_t elem_size_lg2 = __builtin_ctz(valbytes);
3147 farr->end = (
void*)(new_ptr + (
new_size * valbytes));
3154 if (tagbytes == 1) {
3162 static void fastdecode_commitarr(
void *
dst, fastdecode_arr *farr,
3169 static fastdecode_nextret fastdecode_nextrepeated(
upb_decstate *
d,
void *
dst,
3171 fastdecode_arr *farr,
3174 fastdecode_nextret
ret;
3175 dst = (
char *)
dst + valbytes;
3179 if (fastdecode_tagmatch(
ret.tag,
data, tagbytes)) {
3180 ret.next = FD_NEXT_SAMEFIELD;
3182 fastdecode_commitarr(
dst, farr, valbytes);
3183 ret.next = FD_NEXT_OTHERFIELD;
3186 fastdecode_commitarr(
dst, farr, valbytes);
3187 ret.next = FD_NEXT_ATLIMIT;
3196 size_t ofs =
data >> 48;
3197 return (
char *)
msg + ofs;
3203 fastdecode_arr *farr,
int valbytes,
3209 *hasbits |= 1ull << hasbit_index;
3210 return fastdecode_fieldmem(
msg, *
data);
3216 *oneof_case = field_number;
3217 return fastdecode_fieldmem(
msg, *
data);
3221 uint8_t elem_size_lg2 = __builtin_ctz(valbytes);
3233 farr->end =
begin + (farr->arr->size * valbytes);
3235 return begin + (farr->arr->len * valbytes);
3243 static bool fastdecode_flippacked(
uint64_t *
data,
int tagbytes) {
3244 *
data ^= (0x2 ^ 0x0);
3245 return fastdecode_checktag(*
data, tagbytes);
3248 #define FASTDECODE_CHECKPACKED(tagbytes, card, func) \
3249 if (UPB_UNLIKELY(!fastdecode_checktag(data, tagbytes))) { \
3250 if (card == CARD_r && fastdecode_flippacked(&data, tagbytes)) { \
3251 UPB_MUSTTAIL return func(UPB_PARSE_ARGS); \
3253 RETURN_GENERIC("packed check tag mismatch\n"); \
3259 static uint64_t fastdecode_munge(
uint64_t val,
int valbytes,
bool zigzag) {
3260 if (valbytes == 1) {
3262 }
else if (zigzag) {
3263 if (valbytes == 4) {
3266 }
else if (valbytes == 8) {
3267 return (val >> 1) ^ -(
int64_t)(val & 1);
3275 static const char *fastdecode_varint64(
const char *
ptr,
uint64_t *val) {
3280 for (
i = 0;
i < 8;
i++) {
3283 *val += (
byte - 1) << (7 + 7 *
i);
3291 *val += (
byte - 1) << 63;
3298 #define FASTDECODE_UNPACKEDVARINT(d, ptr, msg, table, hasbits, data, tagbytes, \
3299 valbytes, card, zigzag, packed) \
3302 fastdecode_arr farr; \
3304 FASTDECODE_CHECKPACKED(tagbytes, card, packed); \
3306 dst = fastdecode_getfield(d, ptr, msg, &data, &hasbits, &farr, valbytes, \
3308 if (card == CARD_r) { \
3309 if (UPB_UNLIKELY(!dst)) { \
3310 RETURN_GENERIC("need array resize\n"); \
3315 if (card == CARD_r) { \
3316 dst = fastdecode_resizearr(d, dst, &farr, valbytes); \
3320 ptr = fastdecode_varint64(ptr, &val); \
3322 return fastdecode_err(d); \
3323 val = fastdecode_munge(val, valbytes, zigzag); \
3324 memcpy(dst, &val, valbytes); \
3326 if (card == CARD_r) { \
3327 fastdecode_nextret ret = fastdecode_nextrepeated( \
3328 d, dst, &ptr, &farr, data, tagbytes, valbytes); \
3329 switch (ret.next) { \
3330 case FD_NEXT_SAMEFIELD: \
3333 case FD_NEXT_OTHERFIELD: \
3335 UPB_MUSTTAIL return fastdecode_tagdispatch(UPB_PARSE_ARGS); \
3336 case FD_NEXT_ATLIMIT: \
3341 UPB_MUSTTAIL return fastdecode_dispatch(UPB_PARSE_ARGS);
3347 fastdecode_arr farr;
3348 } fastdecode_varintdata;
3351 static const char *fastdecode_topackedvarint(
upb_decstate *
d,
const char *
ptr,
3353 fastdecode_varintdata *
data =
ctx;
3359 ptr = fastdecode_varint64(
ptr, &val);
3360 if (
ptr == NULL)
return NULL;
3361 val = fastdecode_munge(val,
data->valbytes,
data->zigzag);
3366 fastdecode_commitarr(
dst, &
data->farr,
data->valbytes);
3370 #define FASTDECODE_PACKEDVARINT(d, ptr, msg, table, hasbits, data, tagbytes, \
3371 valbytes, zigzag, unpacked) \
3372 fastdecode_varintdata ctx = {valbytes, zigzag}; \
3374 FASTDECODE_CHECKPACKED(tagbytes, CARD_r, unpacked); \
3376 ctx.dst = fastdecode_getfield(d, ptr, msg, &data, &hasbits, &ctx.farr, \
3377 valbytes, CARD_r); \
3378 if (UPB_UNLIKELY(!ctx.dst)) { \
3379 RETURN_GENERIC("need array resize\n"); \
3383 ptr = fastdecode_delimited(d, ptr, &fastdecode_topackedvarint, &ctx); \
3385 if (UPB_UNLIKELY(ptr == NULL)) { \
3386 return fastdecode_err(d); \
3389 UPB_MUSTTAIL return fastdecode_dispatch(d, ptr, msg, table, hasbits, 0);
3391 #define FASTDECODE_VARINT(d, ptr, msg, table, hasbits, data, tagbytes, \
3392 valbytes, card, zigzag, unpacked, packed) \
3393 if (card == CARD_p) { \
3394 FASTDECODE_PACKEDVARINT(d, ptr, msg, table, hasbits, data, tagbytes, \
3395 valbytes, zigzag, unpacked); \
3397 FASTDECODE_UNPACKEDVARINT(d, ptr, msg, table, hasbits, data, tagbytes, \
3398 valbytes, card, zigzag, packed); \
3408 #define F(card, type, valbytes, tagbytes) \
3410 const char *upb_p##card##type##valbytes##_##tagbytes##bt(UPB_PARSE_PARAMS) { \
3411 FASTDECODE_VARINT(d, ptr, msg, table, hasbits, data, tagbytes, valbytes, \
3412 CARD_##card, type##_ZZ, \
3413 upb_pr##type##valbytes##_##tagbytes##bt, \
3414 upb_pp##type##valbytes##_##tagbytes##bt); \
3417 #define TYPES(card, tagbytes) \
3418 F(card, b, 1, tagbytes) \
3419 F(card, v, 4, tagbytes) \
3420 F(card, v, 8, tagbytes) \
3421 F(card, z, 4, tagbytes) \
3422 F(card, z, 8, tagbytes)
3424 #define TAGBYTES(card) \
3442 #undef FASTDECODE_UNPACKEDVARINT
3443 #undef FASTDECODE_PACKEDVARINT
3444 #undef FASTDECODE_VARINT
3449 #define FASTDECODE_UNPACKEDFIXED(d, ptr, msg, table, hasbits, data, tagbytes, \
3450 valbytes, card, packed) \
3452 fastdecode_arr farr; \
3454 FASTDECODE_CHECKPACKED(tagbytes, card, packed) \
3456 dst = fastdecode_getfield(d, ptr, msg, &data, &hasbits, &farr, valbytes, \
3458 if (card == CARD_r) { \
3459 if (UPB_UNLIKELY(!dst)) { \
3460 RETURN_GENERIC("couldn't allocate array in arena\n"); \
3465 if (card == CARD_r) { \
3466 dst = fastdecode_resizearr(d, dst, &farr, valbytes); \
3470 memcpy(dst, ptr, valbytes); \
3473 if (card == CARD_r) { \
3474 fastdecode_nextret ret = fastdecode_nextrepeated( \
3475 d, dst, &ptr, &farr, data, tagbytes, valbytes); \
3476 switch (ret.next) { \
3477 case FD_NEXT_SAMEFIELD: \
3480 case FD_NEXT_OTHERFIELD: \
3482 UPB_MUSTTAIL return fastdecode_tagdispatch(UPB_PARSE_ARGS); \
3483 case FD_NEXT_ATLIMIT: \
3488 UPB_MUSTTAIL return fastdecode_dispatch(UPB_PARSE_ARGS);
3490 #define FASTDECODE_PACKEDFIXED(d, ptr, msg, table, hasbits, data, tagbytes, \
3491 valbytes, unpacked) \
3492 FASTDECODE_CHECKPACKED(tagbytes, CARD_r, unpacked) \
3495 int size = (uint8_t)ptr[0]; \
3497 if (size & 0x80) { \
3498 ptr = fastdecode_longsize(ptr, &size); \
3501 if (UPB_UNLIKELY(fastdecode_boundscheck(ptr, size, d->limit_ptr) || \
3502 (size % valbytes) != 0)) { \
3503 return fastdecode_err(d); \
3506 upb_array **arr_p = fastdecode_fieldmem(msg, data); \
3507 upb_array *arr = *arr_p; \
3508 uint8_t elem_size_lg2 = __builtin_ctz(valbytes); \
3509 int elems = size / valbytes; \
3511 if (UPB_LIKELY(!arr)) { \
3512 *arr_p = arr = _upb_array_new(&d->arena, elems, elem_size_lg2); \
3514 return fastdecode_err(d); \
3517 _upb_array_resize(arr, elems, &d->arena); \
3520 char *dst = _upb_array_ptr(arr); \
3521 memcpy(dst, ptr, size); \
3525 UPB_MUSTTAIL return fastdecode_dispatch(UPB_PARSE_ARGS);
3527 #define FASTDECODE_FIXED(d, ptr, msg, table, hasbits, data, tagbytes, \
3528 valbytes, card, unpacked, packed) \
3529 if (card == CARD_p) { \
3530 FASTDECODE_PACKEDFIXED(d, ptr, msg, table, hasbits, data, tagbytes, \
3531 valbytes, unpacked); \
3533 FASTDECODE_UNPACKEDFIXED(d, ptr, msg, table, hasbits, data, tagbytes, \
3534 valbytes, card, packed); \
3540 #define F(card, valbytes, tagbytes) \
3542 const char *upb_p##card##f##valbytes##_##tagbytes##bt(UPB_PARSE_PARAMS) { \
3543 FASTDECODE_FIXED(d, ptr, msg, table, hasbits, data, tagbytes, valbytes, \
3544 CARD_##card, upb_ppf##valbytes##_##tagbytes##bt, \
3545 upb_prf##valbytes##_##tagbytes##bt); \
3548 #define TYPES(card, tagbytes) \
3549 F(card, 4, tagbytes) \
3550 F(card, 8, tagbytes)
3552 #define TAGBYTES(card) \
3564 #undef FASTDECODE_UNPACKEDFIXED
3565 #undef FASTDECODE_PACKEDFIXED
3569 typedef const char *fastdecode_copystr_func(
struct upb_decstate *
d,
3582 UPB_MUSTTAIL return fastdecode_dispatch(UPB_PARSE_ARGS);
3585 #define FASTDECODE_LONGSTRING(d, ptr, msg, table, hasbits, dst, validate_utf8) \
3586 int size = (uint8_t)ptr[0]; \
3588 if (size & 0x80) { \
3589 ptr = fastdecode_longsize(ptr, &size); \
3592 if (UPB_UNLIKELY(fastdecode_boundscheck(ptr, size, d->limit_ptr))) { \
3594 return fastdecode_err(d); \
3601 char *data = upb_arena_malloc(&d->arena, size); \
3603 return fastdecode_err(d); \
3605 memcpy(data, ptr, size); \
3611 if (validate_utf8) { \
3612 data = (uint64_t)dst; \
3613 UPB_MUSTTAIL return fastdecode_verifyutf8(UPB_PARSE_ARGS); \
3615 UPB_MUSTTAIL return fastdecode_dispatch(UPB_PARSE_ARGS); \
3619 static const char *fastdecode_longstring_utf8(
struct upb_decstate *
d,
3628 static const char *fastdecode_longstring_noutf8(
struct upb_decstate *
d,
3640 d->arena.head.ptr +=
copy;
3647 #define FASTDECODE_COPYSTRING(d, ptr, msg, table, hasbits, data, tagbytes, \
3648 card, validate_utf8) \
3650 fastdecode_arr farr; \
3653 size_t common_has; \
3656 UPB_ASSERT(!d->alias); \
3657 UPB_ASSERT(fastdecode_checktag(data, tagbytes)); \
3659 dst = fastdecode_getfield(d, ptr, msg, &data, &hasbits, &farr, \
3660 sizeof(upb_strview), card); \
3663 if (card == CARD_r) { \
3664 dst = fastdecode_resizearr(d, dst, &farr, sizeof(upb_strview)); \
3667 size = (uint8_t)ptr[tagbytes]; \
3668 ptr += tagbytes + 1; \
3671 buf = d->arena.head.ptr; \
3672 arena_has = _upb_arenahas(&d->arena); \
3673 common_has = UPB_MIN(arena_has, (d->end - ptr) + 16); \
3675 if (UPB_LIKELY(size <= 15 - tagbytes)) { \
3676 if (arena_has < 16) \
3678 d->arena.head.ptr += 16; \
3679 memcpy(buf, ptr - tagbytes - 1, 16); \
3680 dst->data = buf + tagbytes + 1; \
3681 } else if (UPB_LIKELY(size <= 32)) { \
3682 if (UPB_UNLIKELY(common_has < 32)) \
3684 fastdecode_docopy(d, ptr, size, 32, buf, dst); \
3685 } else if (UPB_LIKELY(size <= 64)) { \
3686 if (UPB_UNLIKELY(common_has < 64)) \
3688 fastdecode_docopy(d, ptr, size, 64, buf, dst); \
3689 } else if (UPB_LIKELY(size < 128)) { \
3690 if (UPB_UNLIKELY(common_has < 128)) \
3692 fastdecode_docopy(d, ptr, size, 128, buf, dst); \
3699 if (card == CARD_r) { \
3700 if (validate_utf8 && !decode_verifyutf8_inl(dst->data, dst->size)) { \
3701 return fastdecode_err(d); \
3703 fastdecode_nextret ret = fastdecode_nextrepeated( \
3704 d, dst, &ptr, &farr, data, tagbytes, sizeof(upb_strview)); \
3705 switch (ret.next) { \
3706 case FD_NEXT_SAMEFIELD: \
3709 case FD_NEXT_OTHERFIELD: \
3711 UPB_MUSTTAIL return fastdecode_tagdispatch(UPB_PARSE_ARGS); \
3712 case FD_NEXT_ATLIMIT: \
3717 if (card != CARD_r && validate_utf8) { \
3718 data = (uint64_t)dst; \
3719 UPB_MUSTTAIL return fastdecode_verifyutf8(UPB_PARSE_ARGS); \
3722 UPB_MUSTTAIL return fastdecode_dispatch(UPB_PARSE_ARGS); \
3726 if (validate_utf8) { \
3727 UPB_MUSTTAIL return fastdecode_longstring_utf8(d, ptr, msg, table, \
3728 hasbits, (uint64_t)dst); \
3730 UPB_MUSTTAIL return fastdecode_longstring_noutf8(d, ptr, msg, table, \
3731 hasbits, (uint64_t)dst); \
3734 #define FASTDECODE_STRING(d, ptr, msg, table, hasbits, data, tagbytes, card, \
3735 copyfunc, validate_utf8) \
3737 fastdecode_arr farr; \
3740 if (UPB_UNLIKELY(!fastdecode_checktag(data, tagbytes))) { \
3741 RETURN_GENERIC("string field tag mismatch\n"); \
3744 if (UPB_UNLIKELY(!d->alias)) { \
3745 UPB_MUSTTAIL return copyfunc(UPB_PARSE_ARGS); \
3748 dst = fastdecode_getfield(d, ptr, msg, &data, &hasbits, &farr, \
3749 sizeof(upb_strview), card); \
3752 if (card == CARD_r) { \
3753 dst = fastdecode_resizearr(d, dst, &farr, sizeof(upb_strview)); \
3756 size = (int8_t)ptr[tagbytes]; \
3757 ptr += tagbytes + 1; \
3761 if (UPB_UNLIKELY(fastdecode_boundscheck(ptr, size, d->end))) { \
3763 if (validate_utf8) { \
3764 return fastdecode_longstring_utf8(d, ptr, msg, table, hasbits, \
3767 return fastdecode_longstring_noutf8(d, ptr, msg, table, hasbits, \
3774 if (card == CARD_r) { \
3775 if (validate_utf8 && !decode_verifyutf8_inl(dst->data, dst->size)) { \
3776 return fastdecode_err(d); \
3778 fastdecode_nextret ret = fastdecode_nextrepeated( \
3779 d, dst, &ptr, &farr, data, tagbytes, sizeof(upb_strview)); \
3780 switch (ret.next) { \
3781 case FD_NEXT_SAMEFIELD: \
3783 if (UPB_UNLIKELY(!d->alias)) { \
3787 fastdecode_commitarr(dst, &farr, sizeof(upb_strview)); \
3789 UPB_MUSTTAIL return fastdecode_tagdispatch(UPB_PARSE_ARGS); \
3792 case FD_NEXT_OTHERFIELD: \
3794 UPB_MUSTTAIL return fastdecode_tagdispatch(UPB_PARSE_ARGS); \
3795 case FD_NEXT_ATLIMIT: \
3800 if (card != CARD_r && validate_utf8) { \
3801 data = (uint64_t)dst; \
3802 UPB_MUSTTAIL return fastdecode_verifyutf8(UPB_PARSE_ARGS); \
3805 UPB_MUSTTAIL return fastdecode_dispatch(UPB_PARSE_ARGS);
3810 #define s_VALIDATE true
3811 #define b_VALIDATE false
3813 #define F(card, tagbytes, type) \
3815 const char *upb_c##card##type##_##tagbytes##bt(UPB_PARSE_PARAMS) { \
3816 FASTDECODE_COPYSTRING(d, ptr, msg, table, hasbits, data, tagbytes, \
3817 CARD_##card, type##_VALIDATE); \
3819 const char *upb_p##card##type##_##tagbytes##bt(UPB_PARSE_PARAMS) { \
3820 FASTDECODE_STRING(d, ptr, msg, table, hasbits, data, tagbytes, \
3821 CARD_##card, upb_c##card##type##_##tagbytes##bt, \
3825 #define UTF8(card, tagbytes) \
3826 F(card, tagbytes, s) \
3827 F(card, tagbytes, b)
3829 #define TAGBYTES(card) \
3841 #undef FASTDECODE_LONGSTRING
3842 #undef FASTDECODE_COPYSTRING
3843 #undef FASTDECODE_STRING
3849 int msg_ceil_bytes) {
3855 msg_data =
d->arena.head.ptr;
3856 d->arena.head.ptr +=
size;
3858 memset(msg_data, 0, msg_ceil_bytes);
3870 } fastdecode_submsgdata;
3875 fastdecode_submsgdata *submsg =
ctx;
3876 ptr = fastdecode_dispatch(
d,
ptr, submsg->msg, submsg->table, 0, 0);
3881 #define FASTDECODE_SUBMSG(d, ptr, msg, table, hasbits, data, tagbytes, \
3882 msg_ceil_bytes, card) \
3884 if (UPB_UNLIKELY(!fastdecode_checktag(data, tagbytes))) { \
3885 RETURN_GENERIC("submessage field tag mismatch\n"); \
3888 if (--d->depth == 0) return fastdecode_err(d); \
3891 uint32_t submsg_idx = (data >> 16) & 0xff; \
3892 const upb_msglayout *tablep = decode_totablep(table); \
3893 const upb_msglayout *subtablep = tablep->submsgs[submsg_idx]; \
3894 fastdecode_submsgdata submsg = {decode_totable(subtablep)}; \
3895 fastdecode_arr farr; \
3897 if (subtablep->table_mask == (uint8_t)-1) { \
3898 RETURN_GENERIC("submessage doesn't have fast tables."); \
3901 dst = fastdecode_getfield(d, ptr, msg, &data, &hasbits, &farr, \
3902 sizeof(upb_msg *), card); \
3904 if (card == CARD_s) { \
3905 *(uint32_t *)msg |= hasbits; \
3910 if (card == CARD_r) { \
3911 dst = fastdecode_resizearr(d, dst, &farr, sizeof(upb_msg *)); \
3914 submsg.msg = *dst; \
3916 if (card == CARD_r || UPB_LIKELY(!submsg.msg)) { \
3917 *dst = submsg.msg = decode_newmsg_ceil(d, subtablep, msg_ceil_bytes); \
3921 ptr = fastdecode_delimited(d, ptr, fastdecode_tosubmsg, &submsg); \
3923 if (UPB_UNLIKELY(ptr == NULL || d->end_group != DECODE_NOGROUP)) { \
3924 return fastdecode_err(d); \
3927 if (card == CARD_r) { \
3928 fastdecode_nextret ret = fastdecode_nextrepeated( \
3929 d, dst, &ptr, &farr, data, tagbytes, sizeof(upb_msg *)); \
3930 switch (ret.next) { \
3931 case FD_NEXT_SAMEFIELD: \
3934 case FD_NEXT_OTHERFIELD: \
3937 UPB_MUSTTAIL return fastdecode_tagdispatch(UPB_PARSE_ARGS); \
3938 case FD_NEXT_ATLIMIT: \
3945 UPB_MUSTTAIL return fastdecode_dispatch(UPB_PARSE_ARGS);
3947 #define F(card, tagbytes, size_ceil, ceil_arg) \
3948 const char *upb_p##card##m_##tagbytes##bt_max##size_ceil##b( \
3949 UPB_PARSE_PARAMS) { \
3950 FASTDECODE_SUBMSG(d, ptr, msg, table, hasbits, data, tagbytes, ceil_arg, \
3954 #define SIZES(card, tagbytes) \
3955 F(card, tagbytes, 64, 64) \
3956 F(card, tagbytes, 128, 128) \
3957 F(card, tagbytes, 192, 192) \
3958 F(card, tagbytes, 256, 256) \
3959 F(card, tagbytes, max, -1)
3961 #define TAGBYTES(card) \
3972 #undef FASTDECODE_SUBMSG
4028 UPB_SIZE(64, 128), 12,
false, 12, 255,
4057 UPB_SIZE(48, 96), 10,
false, 10, 255,
4073 UPB_SIZE(16, 24), 3,
false, 3, 255,
4084 UPB_SIZE(16, 16), 2,
false, 2, 255,
4122 UPB_SIZE(72, 112), 11,
false, 10, 255,
4137 UPB_SIZE(16, 32), 2,
false, 2, 255,
4157 UPB_SIZE(32, 64), 5,
false, 5, 255,
4168 UPB_SIZE(16, 16), 2,
false, 2, 255,
4184 UPB_SIZE(24, 32), 3,
false, 3, 255,
4201 UPB_SIZE(24, 48), 3,
false, 3, 255,
4220 UPB_SIZE(32, 64), 6,
false, 6, 255,
4254 UPB_SIZE(104, 192), 21,
false, 1, 255,
4272 UPB_SIZE(16, 16), 5,
false, 3, 255,
4292 UPB_SIZE(24, 24), 7,
false, 3, 255,
4368 UPB_SIZE(16, 24), 3,
false, 0, 255,
4388 UPB_SIZE(64, 96), 7,
false, 0, 255,
4399 UPB_SIZE(16, 32), 2,
false, 2, 255,
4427 UPB_SIZE(32, 64), 5,
false, 4, 255,
4454 UPB_SIZE(24, 48), 4,
false, 4, 255,
4526 static const char descriptor[7601] = {
'\n',
' ',
'g',
'o',
'o',
'g',
'l',
'e',
'/',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'/',
'd',
'e',
's',
'c',
'r',
'i',
'p',
4527 't',
'o',
'r',
'.',
'p',
'r',
'o',
't',
'o',
'\022',
'\017',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
4528 'f',
'\"',
'M',
'\n',
'\021',
'F',
'i',
'l',
'e',
'D',
'e',
's',
'c',
'r',
'i',
'p',
't',
'o',
'r',
'S',
'e',
't',
'\022',
'8',
'\n',
4529 '\004',
'f',
'i',
'l',
'e',
'\030',
'\001',
' ',
'\003',
'(',
'\013',
'2',
'$',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
4530 'o',
'b',
'u',
'f',
'.',
'F',
'i',
'l',
'e',
'D',
'e',
's',
'c',
'r',
'i',
'p',
't',
'o',
'r',
'P',
'r',
'o',
't',
'o',
'R',
4531 '\004',
'f',
'i',
'l',
'e',
'\"',
'\344',
'\004',
'\n',
'\023',
'F',
'i',
'l',
'e',
'D',
'e',
's',
'c',
'r',
'i',
'p',
't',
'o',
'r',
'P',
4532 'r',
'o',
't',
'o',
'\022',
'\022',
'\n',
'\004',
'n',
'a',
'm',
'e',
'\030',
'\001',
' ',
'\001',
'(',
'\t',
'R',
'\004',
'n',
'a',
'm',
'e',
'\022',
4533 '\030',
'\n',
'\007',
'p',
'a',
'c',
'k',
'a',
'g',
'e',
'\030',
'\002',
' ',
'\001',
'(',
'\t',
'R',
'\007',
'p',
'a',
'c',
'k',
'a',
'g',
'e',
4534 '\022',
'\036',
'\n',
'\n',
'd',
'e',
'p',
'e',
'n',
'd',
'e',
'n',
'c',
'y',
'\030',
'\003',
' ',
'\003',
'(',
'\t',
'R',
'\n',
'd',
'e',
'p',
4535 'e',
'n',
'd',
'e',
'n',
'c',
'y',
'\022',
'+',
'\n',
'\021',
'p',
'u',
'b',
'l',
'i',
'c',
'_',
'd',
'e',
'p',
'e',
'n',
'd',
'e',
4536 'n',
'c',
'y',
'\030',
'\n',
' ',
'\003',
'(',
'\005',
'R',
'\020',
'p',
'u',
'b',
'l',
'i',
'c',
'D',
'e',
'p',
'e',
'n',
'd',
'e',
'n',
4537 'c',
'y',
'\022',
'\'',
'\n',
'\017',
'w',
'e',
'a',
'k',
'_',
'd',
'e',
'p',
'e',
'n',
'd',
'e',
'n',
'c',
'y',
'\030',
'\013',
' ',
'\003',
4538 '(',
'\005',
'R',
'\016',
'w',
'e',
'a',
'k',
'D',
'e',
'p',
'e',
'n',
'd',
'e',
'n',
'c',
'y',
'\022',
'C',
'\n',
'\014',
'm',
'e',
's',
4539 's',
'a',
'g',
'e',
'_',
't',
'y',
'p',
'e',
'\030',
'\004',
' ',
'\003',
'(',
'\013',
'2',
' ',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
4540 'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'D',
'e',
's',
'c',
'r',
'i',
'p',
't',
'o',
'r',
'P',
'r',
'o',
't',
'o',
'R',
4541 '\013',
'm',
'e',
's',
's',
'a',
'g',
'e',
'T',
'y',
'p',
'e',
'\022',
'A',
'\n',
'\t',
'e',
'n',
'u',
'm',
'_',
't',
'y',
'p',
'e',
4542 '\030',
'\005',
' ',
'\003',
'(',
'\013',
'2',
'$',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
4543 'E',
'n',
'u',
'm',
'D',
'e',
's',
'c',
'r',
'i',
'p',
't',
'o',
'r',
'P',
'r',
'o',
't',
'o',
'R',
'\010',
'e',
'n',
'u',
'm',
4544 'T',
'y',
'p',
'e',
'\022',
'A',
'\n',
'\007',
's',
'e',
'r',
'v',
'i',
'c',
'e',
'\030',
'\006',
' ',
'\003',
'(',
'\013',
'2',
'\'',
'.',
'g',
4545 'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'S',
'e',
'r',
'v',
'i',
'c',
'e',
'D',
'e',
's',
4546 'c',
'r',
'i',
'p',
't',
'o',
'r',
'P',
'r',
'o',
't',
'o',
'R',
'\007',
's',
'e',
'r',
'v',
'i',
'c',
'e',
'\022',
'C',
'\n',
'\t',
4547 'e',
'x',
't',
'e',
'n',
's',
'i',
'o',
'n',
'\030',
'\007',
' ',
'\003',
'(',
'\013',
'2',
'%',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
4548 'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'F',
'i',
'e',
'l',
'd',
'D',
'e',
's',
'c',
'r',
'i',
'p',
't',
'o',
'r',
'P',
4549 'r',
'o',
't',
'o',
'R',
'\t',
'e',
'x',
't',
'e',
'n',
's',
'i',
'o',
'n',
'\022',
'6',
'\n',
'\007',
'o',
'p',
't',
'i',
'o',
'n',
4550 's',
'\030',
'\010',
' ',
'\001',
'(',
'\013',
'2',
'\034',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
4551 '.',
'F',
'i',
'l',
'e',
'O',
'p',
't',
'i',
'o',
'n',
's',
'R',
'\007',
'o',
'p',
't',
'i',
'o',
'n',
's',
'\022',
'I',
'\n',
'\020',
4552 's',
'o',
'u',
'r',
'c',
'e',
'_',
'c',
'o',
'd',
'e',
'_',
'i',
'n',
'f',
'o',
'\030',
'\t',
' ',
'\001',
'(',
'\013',
'2',
'\037',
'.',
4553 'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'S',
'o',
'u',
'r',
'c',
'e',
'C',
'o',
'd',
4554 'e',
'I',
'n',
'f',
'o',
'R',
'\016',
's',
'o',
'u',
'r',
'c',
'e',
'C',
'o',
'd',
'e',
'I',
'n',
'f',
'o',
'\022',
'\026',
'\n',
'\006',
4555 's',
'y',
'n',
't',
'a',
'x',
'\030',
'\014',
' ',
'\001',
'(',
'\t',
'R',
'\006',
's',
'y',
'n',
't',
'a',
'x',
'\"',
'\271',
'\006',
'\n',
'\017',
4556 'D',
'e',
's',
'c',
'r',
'i',
'p',
't',
'o',
'r',
'P',
'r',
'o',
't',
'o',
'\022',
'\022',
'\n',
'\004',
'n',
'a',
'm',
'e',
'\030',
'\001',
4557 ' ',
'\001',
'(',
'\t',
'R',
'\004',
'n',
'a',
'm',
'e',
'\022',
';',
'\n',
'\005',
'f',
'i',
'e',
'l',
'd',
'\030',
'\002',
' ',
'\003',
'(',
'\013',
4558 '2',
'%',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'F',
'i',
'e',
'l',
'd',
'D',
4559 'e',
's',
'c',
'r',
'i',
'p',
't',
'o',
'r',
'P',
'r',
'o',
't',
'o',
'R',
'\005',
'f',
'i',
'e',
'l',
'd',
'\022',
'C',
'\n',
'\t',
4560 'e',
'x',
't',
'e',
'n',
's',
'i',
'o',
'n',
'\030',
'\006',
' ',
'\003',
'(',
'\013',
'2',
'%',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
4561 'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'F',
'i',
'e',
'l',
'd',
'D',
'e',
's',
'c',
'r',
'i',
'p',
't',
'o',
'r',
'P',
4562 'r',
'o',
't',
'o',
'R',
'\t',
'e',
'x',
't',
'e',
'n',
's',
'i',
'o',
'n',
'\022',
'A',
'\n',
'\013',
'n',
'e',
's',
't',
'e',
'd',
4563 '_',
't',
'y',
'p',
'e',
'\030',
'\003',
' ',
'\003',
'(',
'\013',
'2',
' ',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
4564 'o',
'b',
'u',
'f',
'.',
'D',
'e',
's',
'c',
'r',
'i',
'p',
't',
'o',
'r',
'P',
'r',
'o',
't',
'o',
'R',
'\n',
'n',
'e',
's',
4565 't',
'e',
'd',
'T',
'y',
'p',
'e',
'\022',
'A',
'\n',
'\t',
'e',
'n',
'u',
'm',
'_',
't',
'y',
'p',
'e',
'\030',
'\004',
' ',
'\003',
'(',
4566 '\013',
'2',
'$',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'E',
'n',
'u',
'm',
'D',
4567 'e',
's',
'c',
'r',
'i',
'p',
't',
'o',
'r',
'P',
'r',
'o',
't',
'o',
'R',
'\010',
'e',
'n',
'u',
'm',
'T',
'y',
'p',
'e',
'\022',
4568 'X',
'\n',
'\017',
'e',
'x',
't',
'e',
'n',
's',
'i',
'o',
'n',
'_',
'r',
'a',
'n',
'g',
'e',
'\030',
'\005',
' ',
'\003',
'(',
'\013',
'2',
4569 '/',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'D',
'e',
's',
'c',
'r',
'i',
'p',
4570 't',
'o',
'r',
'P',
'r',
'o',
't',
'o',
'.',
'E',
'x',
't',
'e',
'n',
's',
'i',
'o',
'n',
'R',
'a',
'n',
'g',
'e',
'R',
'\016',
4571 'e',
'x',
't',
'e',
'n',
's',
'i',
'o',
'n',
'R',
'a',
'n',
'g',
'e',
'\022',
'D',
'\n',
'\n',
'o',
'n',
'e',
'o',
'f',
'_',
'd',
4572 'e',
'c',
'l',
'\030',
'\010',
' ',
'\003',
'(',
'\013',
'2',
'%',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
4573 'u',
'f',
'.',
'O',
'n',
'e',
'o',
'f',
'D',
'e',
's',
'c',
'r',
'i',
'p',
't',
'o',
'r',
'P',
'r',
'o',
't',
'o',
'R',
'\t',
4574 'o',
'n',
'e',
'o',
'f',
'D',
'e',
'c',
'l',
'\022',
'9',
'\n',
'\007',
'o',
'p',
't',
'i',
'o',
'n',
's',
'\030',
'\007',
' ',
'\001',
'(',
4575 '\013',
'2',
'\037',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'M',
'e',
's',
's',
'a',
4576 'g',
'e',
'O',
'p',
't',
'i',
'o',
'n',
's',
'R',
'\007',
'o',
'p',
't',
'i',
'o',
'n',
's',
'\022',
'U',
'\n',
'\016',
'r',
'e',
's',
4577 'e',
'r',
'v',
'e',
'd',
'_',
'r',
'a',
'n',
'g',
'e',
'\030',
'\t',
' ',
'\003',
'(',
'\013',
'2',
'.',
'.',
'g',
'o',
'o',
'g',
'l',
4578 'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'D',
'e',
's',
'c',
'r',
'i',
'p',
't',
'o',
'r',
'P',
'r',
'o',
't',
4579 'o',
'.',
'R',
'e',
's',
'e',
'r',
'v',
'e',
'd',
'R',
'a',
'n',
'g',
'e',
'R',
'\r',
'r',
'e',
's',
'e',
'r',
'v',
'e',
'd',
4580 'R',
'a',
'n',
'g',
'e',
'\022',
'#',
'\n',
'\r',
'r',
'e',
's',
'e',
'r',
'v',
'e',
'd',
'_',
'n',
'a',
'm',
'e',
'\030',
'\n',
' ',
4581 '\003',
'(',
'\t',
'R',
'\014',
'r',
'e',
's',
'e',
'r',
'v',
'e',
'd',
'N',
'a',
'm',
'e',
'\032',
'z',
'\n',
'\016',
'E',
'x',
't',
'e',
4582 'n',
's',
'i',
'o',
'n',
'R',
'a',
'n',
'g',
'e',
'\022',
'\024',
'\n',
'\005',
's',
't',
'a',
'r',
't',
'\030',
'\001',
' ',
'\001',
'(',
'\005',
4583 'R',
'\005',
's',
't',
'a',
'r',
't',
'\022',
'\020',
'\n',
'\003',
'e',
'n',
'd',
'\030',
'\002',
' ',
'\001',
'(',
'\005',
'R',
'\003',
'e',
'n',
'd',
4584 '\022',
'@',
'\n',
'\007',
'o',
'p',
't',
'i',
'o',
'n',
's',
'\030',
'\003',
' ',
'\001',
'(',
'\013',
'2',
'&',
'.',
'g',
'o',
'o',
'g',
'l',
4585 'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'E',
'x',
't',
'e',
'n',
's',
'i',
'o',
'n',
'R',
'a',
'n',
'g',
'e',
4586 'O',
'p',
't',
'i',
'o',
'n',
's',
'R',
'\007',
'o',
'p',
't',
'i',
'o',
'n',
's',
'\032',
'7',
'\n',
'\r',
'R',
'e',
's',
'e',
'r',
4587 'v',
'e',
'd',
'R',
'a',
'n',
'g',
'e',
'\022',
'\024',
'\n',
'\005',
's',
't',
'a',
'r',
't',
'\030',
'\001',
' ',
'\001',
'(',
'\005',
'R',
'\005',
4588 's',
't',
'a',
'r',
't',
'\022',
'\020',
'\n',
'\003',
'e',
'n',
'd',
'\030',
'\002',
' ',
'\001',
'(',
'\005',
'R',
'\003',
'e',
'n',
'd',
'\"',
'|',
4589 '\n',
'\025',
'E',
'x',
't',
'e',
'n',
's',
'i',
'o',
'n',
'R',
'a',
'n',
'g',
'e',
'O',
'p',
't',
'i',
'o',
'n',
's',
'\022',
'X',
4590 '\n',
'\024',
'u',
'n',
'i',
'n',
't',
'e',
'r',
'p',
'r',
'e',
't',
'e',
'd',
'_',
'o',
'p',
't',
'i',
'o',
'n',
'\030',
'\347',
'\007',
4591 ' ',
'\003',
'(',
'\013',
'2',
'$',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'U',
'n',
4592 'i',
'n',
't',
'e',
'r',
'p',
'r',
'e',
't',
'e',
'd',
'O',
'p',
't',
'i',
'o',
'n',
'R',
'\023',
'u',
'n',
'i',
'n',
't',
'e',
4593 'r',
'p',
'r',
'e',
't',
'e',
'd',
'O',
'p',
't',
'i',
'o',
'n',
'*',
'\t',
'\010',
'\350',
'\007',
'\020',
'\200',
'\200',
'\200',
'\200',
'\002',
'\"',
4594 '\301',
'\006',
'\n',
'\024',
'F',
'i',
'e',
'l',
'd',
'D',
'e',
's',
'c',
'r',
'i',
'p',
't',
'o',
'r',
'P',
'r',
'o',
't',
'o',
'\022',
4595 '\022',
'\n',
'\004',
'n',
'a',
'm',
'e',
'\030',
'\001',
' ',
'\001',
'(',
'\t',
'R',
'\004',
'n',
'a',
'm',
'e',
'\022',
'\026',
'\n',
'\006',
'n',
'u',
4596 'm',
'b',
'e',
'r',
'\030',
'\003',
' ',
'\001',
'(',
'\005',
'R',
'\006',
'n',
'u',
'm',
'b',
'e',
'r',
'\022',
'A',
'\n',
'\005',
'l',
'a',
'b',
4597 'e',
'l',
'\030',
'\004',
' ',
'\001',
'(',
'\016',
'2',
'+',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
4598 'f',
'.',
'F',
'i',
'e',
'l',
'd',
'D',
'e',
's',
'c',
'r',
'i',
'p',
't',
'o',
'r',
'P',
'r',
'o',
't',
'o',
'.',
'L',
'a',
4599 'b',
'e',
'l',
'R',
'\005',
'l',
'a',
'b',
'e',
'l',
'\022',
'>',
'\n',
'\004',
't',
'y',
'p',
'e',
'\030',
'\005',
' ',
'\001',
'(',
'\016',
'2',
4600 '*',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'F',
'i',
'e',
'l',
'd',
'D',
'e',
4601 's',
'c',
'r',
'i',
'p',
't',
'o',
'r',
'P',
'r',
'o',
't',
'o',
'.',
'T',
'y',
'p',
'e',
'R',
'\004',
't',
'y',
'p',
'e',
'\022',
4602 '\033',
'\n',
'\t',
't',
'y',
'p',
'e',
'_',
'n',
'a',
'm',
'e',
'\030',
'\006',
' ',
'\001',
'(',
'\t',
'R',
'\010',
't',
'y',
'p',
'e',
'N',
4603 'a',
'm',
'e',
'\022',
'\032',
'\n',
'\010',
'e',
'x',
't',
'e',
'n',
'd',
'e',
'e',
'\030',
'\002',
' ',
'\001',
'(',
'\t',
'R',
'\010',
'e',
'x',
4604 't',
'e',
'n',
'd',
'e',
'e',
'\022',
'#',
'\n',
'\r',
'd',
'e',
'f',
'a',
'u',
'l',
't',
'_',
'v',
'a',
'l',
'u',
'e',
'\030',
'\007',
4605 ' ',
'\001',
'(',
'\t',
'R',
'\014',
'd',
'e',
'f',
'a',
'u',
'l',
't',
'V',
'a',
'l',
'u',
'e',
'\022',
'\037',
'\n',
'\013',
'o',
'n',
'e',
4606 'o',
'f',
'_',
'i',
'n',
'd',
'e',
'x',
'\030',
'\t',
' ',
'\001',
'(',
'\005',
'R',
'\n',
'o',
'n',
'e',
'o',
'f',
'I',
'n',
'd',
'e',
4607 'x',
'\022',
'\033',
'\n',
'\t',
'j',
's',
'o',
'n',
'_',
'n',
'a',
'm',
'e',
'\030',
'\n',
' ',
'\001',
'(',
'\t',
'R',
'\010',
'j',
's',
'o',
4608 'n',
'N',
'a',
'm',
'e',
'\022',
'7',
'\n',
'\007',
'o',
'p',
't',
'i',
'o',
'n',
's',
'\030',
'\010',
' ',
'\001',
'(',
'\013',
'2',
'\035',
'.',
4609 'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'F',
'i',
'e',
'l',
'd',
'O',
'p',
't',
'i',
4610 'o',
'n',
's',
'R',
'\007',
'o',
'p',
't',
'i',
'o',
'n',
's',
'\022',
'\'',
'\n',
'\017',
'p',
'r',
'o',
't',
'o',
'3',
'_',
'o',
'p',
4611 't',
'i',
'o',
'n',
'a',
'l',
'\030',
'\021',
' ',
'\001',
'(',
'\010',
'R',
'\016',
'p',
'r',
'o',
't',
'o',
'3',
'O',
'p',
't',
'i',
'o',
4612 'n',
'a',
'l',
'\"',
'\266',
'\002',
'\n',
'\004',
'T',
'y',
'p',
'e',
'\022',
'\017',
'\n',
'\013',
'T',
'Y',
'P',
'E',
'_',
'D',
'O',
'U',
'B',
4613 'L',
'E',
'\020',
'\001',
'\022',
'\016',
'\n',
'\n',
'T',
'Y',
'P',
'E',
'_',
'F',
'L',
'O',
'A',
'T',
'\020',
'\002',
'\022',
'\016',
'\n',
'\n',
'T',
4614 'Y',
'P',
'E',
'_',
'I',
'N',
'T',
'6',
'4',
'\020',
'\003',
'\022',
'\017',
'\n',
'\013',
'T',
'Y',
'P',
'E',
'_',
'U',
'I',
'N',
'T',
'6',
4615 '4',
'\020',
'\004',
'\022',
'\016',
'\n',
'\n',
'T',
'Y',
'P',
'E',
'_',
'I',
'N',
'T',
'3',
'2',
'\020',
'\005',
'\022',
'\020',
'\n',
'\014',
'T',
'Y',
4616 'P',
'E',
'_',
'F',
'I',
'X',
'E',
'D',
'6',
'4',
'\020',
'\006',
'\022',
'\020',
'\n',
'\014',
'T',
'Y',
'P',
'E',
'_',
'F',
'I',
'X',
'E',
4617 'D',
'3',
'2',
'\020',
'\007',
'\022',
'\r',
'\n',
'\t',
'T',
'Y',
'P',
'E',
'_',
'B',
'O',
'O',
'L',
'\020',
'\010',
'\022',
'\017',
'\n',
'\013',
'T',
4618 'Y',
'P',
'E',
'_',
'S',
'T',
'R',
'I',
'N',
'G',
'\020',
'\t',
'\022',
'\016',
'\n',
'\n',
'T',
'Y',
'P',
'E',
'_',
'G',
'R',
'O',
'U',
4619 'P',
'\020',
'\n',
'\022',
'\020',
'\n',
'\014',
'T',
'Y',
'P',
'E',
'_',
'M',
'E',
'S',
'S',
'A',
'G',
'E',
'\020',
'\013',
'\022',
'\016',
'\n',
'\n',
4620 'T',
'Y',
'P',
'E',
'_',
'B',
'Y',
'T',
'E',
'S',
'\020',
'\014',
'\022',
'\017',
'\n',
'\013',
'T',
'Y',
'P',
'E',
'_',
'U',
'I',
'N',
'T',
4621 '3',
'2',
'\020',
'\r',
'\022',
'\r',
'\n',
'\t',
'T',
'Y',
'P',
'E',
'_',
'E',
'N',
'U',
'M',
'\020',
'\016',
'\022',
'\021',
'\n',
'\r',
'T',
'Y',
4622 'P',
'E',
'_',
'S',
'F',
'I',
'X',
'E',
'D',
'3',
'2',
'\020',
'\017',
'\022',
'\021',
'\n',
'\r',
'T',
'Y',
'P',
'E',
'_',
'S',
'F',
'I',
4623 'X',
'E',
'D',
'6',
'4',
'\020',
'\020',
'\022',
'\017',
'\n',
'\013',
'T',
'Y',
'P',
'E',
'_',
'S',
'I',
'N',
'T',
'3',
'2',
'\020',
'\021',
'\022',
4624 '\017',
'\n',
'\013',
'T',
'Y',
'P',
'E',
'_',
'S',
'I',
'N',
'T',
'6',
'4',
'\020',
'\022',
'\"',
'C',
'\n',
'\005',
'L',
'a',
'b',
'e',
'l',
4625 '\022',
'\022',
'\n',
'\016',
'L',
'A',
'B',
'E',
'L',
'_',
'O',
'P',
'T',
'I',
'O',
'N',
'A',
'L',
'\020',
'\001',
'\022',
'\022',
'\n',
'\016',
'L',
4626 'A',
'B',
'E',
'L',
'_',
'R',
'E',
'Q',
'U',
'I',
'R',
'E',
'D',
'\020',
'\002',
'\022',
'\022',
'\n',
'\016',
'L',
'A',
'B',
'E',
'L',
'_',
4627 'R',
'E',
'P',
'E',
'A',
'T',
'E',
'D',
'\020',
'\003',
'\"',
'c',
'\n',
'\024',
'O',
'n',
'e',
'o',
'f',
'D',
'e',
's',
'c',
'r',
'i',
4628 'p',
't',
'o',
'r',
'P',
'r',
'o',
't',
'o',
'\022',
'\022',
'\n',
'\004',
'n',
'a',
'm',
'e',
'\030',
'\001',
' ',
'\001',
'(',
'\t',
'R',
'\004',
4629 'n',
'a',
'm',
'e',
'\022',
'7',
'\n',
'\007',
'o',
'p',
't',
'i',
'o',
'n',
's',
'\030',
'\002',
' ',
'\001',
'(',
'\013',
'2',
'\035',
'.',
'g',
4630 'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'O',
'n',
'e',
'o',
'f',
'O',
'p',
't',
'i',
'o',
4631 'n',
's',
'R',
'\007',
'o',
'p',
't',
'i',
'o',
'n',
's',
'\"',
'\343',
'\002',
'\n',
'\023',
'E',
'n',
'u',
'm',
'D',
'e',
's',
'c',
'r',
4632 'i',
'p',
't',
'o',
'r',
'P',
'r',
'o',
't',
'o',
'\022',
'\022',
'\n',
'\004',
'n',
'a',
'm',
'e',
'\030',
'\001',
' ',
'\001',
'(',
'\t',
'R',
4633 '\004',
'n',
'a',
'm',
'e',
'\022',
'?',
'\n',
'\005',
'v',
'a',
'l',
'u',
'e',
'\030',
'\002',
' ',
'\003',
'(',
'\013',
'2',
')',
'.',
'g',
'o',
4634 'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'E',
'n',
'u',
'm',
'V',
'a',
'l',
'u',
'e',
'D',
'e',
4635 's',
'c',
'r',
'i',
'p',
't',
'o',
'r',
'P',
'r',
'o',
't',
'o',
'R',
'\005',
'v',
'a',
'l',
'u',
'e',
'\022',
'6',
'\n',
'\007',
'o',
4636 'p',
't',
'i',
'o',
'n',
's',
'\030',
'\003',
' ',
'\001',
'(',
'\013',
'2',
'\034',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
4637 't',
'o',
'b',
'u',
'f',
'.',
'E',
'n',
'u',
'm',
'O',
'p',
't',
'i',
'o',
'n',
's',
'R',
'\007',
'o',
'p',
't',
'i',
'o',
'n',
4638 's',
'\022',
']',
'\n',
'\016',
'r',
'e',
's',
'e',
'r',
'v',
'e',
'd',
'_',
'r',
'a',
'n',
'g',
'e',
'\030',
'\004',
' ',
'\003',
'(',
'\013',
4639 '2',
'6',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'E',
'n',
'u',
'm',
'D',
'e',
4640 's',
'c',
'r',
'i',
'p',
't',
'o',
'r',
'P',
'r',
'o',
't',
'o',
'.',
'E',
'n',
'u',
'm',
'R',
'e',
's',
'e',
'r',
'v',
'e',
4641 'd',
'R',
'a',
'n',
'g',
'e',
'R',
'\r',
'r',
'e',
's',
'e',
'r',
'v',
'e',
'd',
'R',
'a',
'n',
'g',
'e',
'\022',
'#',
'\n',
'\r',
4642 'r',
'e',
's',
'e',
'r',
'v',
'e',
'd',
'_',
'n',
'a',
'm',
'e',
'\030',
'\005',
' ',
'\003',
'(',
'\t',
'R',
'\014',
'r',
'e',
's',
'e',
4643 'r',
'v',
'e',
'd',
'N',
'a',
'm',
'e',
'\032',
';',
'\n',
'\021',
'E',
'n',
'u',
'm',
'R',
'e',
's',
'e',
'r',
'v',
'e',
'd',
'R',
4644 'a',
'n',
'g',
'e',
'\022',
'\024',
'\n',
'\005',
's',
't',
'a',
'r',
't',
'\030',
'\001',
' ',
'\001',
'(',
'\005',
'R',
'\005',
's',
't',
'a',
'r',
4645 't',
'\022',
'\020',
'\n',
'\003',
'e',
'n',
'd',
'\030',
'\002',
' ',
'\001',
'(',
'\005',
'R',
'\003',
'e',
'n',
'd',
'\"',
'\203',
'\001',
'\n',
'\030',
'E',
4646 'n',
'u',
'm',
'V',
'a',
'l',
'u',
'e',
'D',
'e',
's',
'c',
'r',
'i',
'p',
't',
'o',
'r',
'P',
'r',
'o',
't',
'o',
'\022',
'\022',
4647 '\n',
'\004',
'n',
'a',
'm',
'e',
'\030',
'\001',
' ',
'\001',
'(',
'\t',
'R',
'\004',
'n',
'a',
'm',
'e',
'\022',
'\026',
'\n',
'\006',
'n',
'u',
'm',
4648 'b',
'e',
'r',
'\030',
'\002',
' ',
'\001',
'(',
'\005',
'R',
'\006',
'n',
'u',
'm',
'b',
'e',
'r',
'\022',
';',
'\n',
'\007',
'o',
'p',
't',
'i',
4649 'o',
'n',
's',
'\030',
'\003',
' ',
'\001',
'(',
'\013',
'2',
'!',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
4650 'u',
'f',
'.',
'E',
'n',
'u',
'm',
'V',
'a',
'l',
'u',
'e',
'O',
'p',
't',
'i',
'o',
'n',
's',
'R',
'\007',
'o',
'p',
't',
'i',
4651 'o',
'n',
's',
'\"',
'\247',
'\001',
'\n',
'\026',
'S',
'e',
'r',
'v',
'i',
'c',
'e',
'D',
'e',
's',
'c',
'r',
'i',
'p',
't',
'o',
'r',
4652 'P',
'r',
'o',
't',
'o',
'\022',
'\022',
'\n',
'\004',
'n',
'a',
'm',
'e',
'\030',
'\001',
' ',
'\001',
'(',
'\t',
'R',
'\004',
'n',
'a',
'm',
'e',
4653 '\022',
'>',
'\n',
'\006',
'm',
'e',
't',
'h',
'o',
'd',
'\030',
'\002',
' ',
'\003',
'(',
'\013',
'2',
'&',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
4654 '.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'M',
'e',
't',
'h',
'o',
'd',
'D',
'e',
's',
'c',
'r',
'i',
'p',
't',
'o',
4655 'r',
'P',
'r',
'o',
't',
'o',
'R',
'\006',
'm',
'e',
't',
'h',
'o',
'd',
'\022',
'9',
'\n',
'\007',
'o',
'p',
't',
'i',
'o',
'n',
's',
4656 '\030',
'\003',
' ',
'\001',
'(',
'\013',
'2',
'\037',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
4657 'S',
'e',
'r',
'v',
'i',
'c',
'e',
'O',
'p',
't',
'i',
'o',
'n',
's',
'R',
'\007',
'o',
'p',
't',
'i',
'o',
'n',
's',
'\"',
'\211',
4658 '\002',
'\n',
'\025',
'M',
'e',
't',
'h',
'o',
'd',
'D',
'e',
's',
'c',
'r',
'i',
'p',
't',
'o',
'r',
'P',
'r',
'o',
't',
'o',
'\022',
4659 '\022',
'\n',
'\004',
'n',
'a',
'm',
'e',
'\030',
'\001',
' ',
'\001',
'(',
'\t',
'R',
'\004',
'n',
'a',
'm',
'e',
'\022',
'\035',
'\n',
'\n',
'i',
'n',
4660 'p',
'u',
't',
'_',
't',
'y',
'p',
'e',
'\030',
'\002',
' ',
'\001',
'(',
'\t',
'R',
'\t',
'i',
'n',
'p',
'u',
't',
'T',
'y',
'p',
'e',
4661 '\022',
'\037',
'\n',
'\013',
'o',
'u',
't',
'p',
'u',
't',
'_',
't',
'y',
'p',
'e',
'\030',
'\003',
' ',
'\001',
'(',
'\t',
'R',
'\n',
'o',
'u',
4662 't',
'p',
'u',
't',
'T',
'y',
'p',
'e',
'\022',
'8',
'\n',
'\007',
'o',
'p',
't',
'i',
'o',
'n',
's',
'\030',
'\004',
' ',
'\001',
'(',
'\013',
4663 '2',
'\036',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'M',
'e',
't',
'h',
'o',
'd',
4664 'O',
'p',
't',
'i',
'o',
'n',
's',
'R',
'\007',
'o',
'p',
't',
'i',
'o',
'n',
's',
'\022',
'0',
'\n',
'\020',
'c',
'l',
'i',
'e',
'n',
4665 't',
'_',
's',
't',
'r',
'e',
'a',
'm',
'i',
'n',
'g',
'\030',
'\005',
' ',
'\001',
'(',
'\010',
':',
'\005',
'f',
'a',
'l',
's',
'e',
'R',
4666 '\017',
'c',
'l',
'i',
'e',
'n',
't',
'S',
't',
'r',
'e',
'a',
'm',
'i',
'n',
'g',
'\022',
'0',
'\n',
'\020',
's',
'e',
'r',
'v',
'e',
4667 'r',
'_',
's',
't',
'r',
'e',
'a',
'm',
'i',
'n',
'g',
'\030',
'\006',
' ',
'\001',
'(',
'\010',
':',
'\005',
'f',
'a',
'l',
's',
'e',
'R',
4668 '\017',
's',
'e',
'r',
'v',
'e',
'r',
'S',
't',
'r',
'e',
'a',
'm',
'i',
'n',
'g',
'\"',
'\221',
'\t',
'\n',
'\013',
'F',
'i',
'l',
'e',
4669 'O',
'p',
't',
'i',
'o',
'n',
's',
'\022',
'!',
'\n',
'\014',
'j',
'a',
'v',
'a',
'_',
'p',
'a',
'c',
'k',
'a',
'g',
'e',
'\030',
'\001',
4670 ' ',
'\001',
'(',
'\t',
'R',
'\013',
'j',
'a',
'v',
'a',
'P',
'a',
'c',
'k',
'a',
'g',
'e',
'\022',
'0',
'\n',
'\024',
'j',
'a',
'v',
'a',
4671 '_',
'o',
'u',
't',
'e',
'r',
'_',
'c',
'l',
'a',
's',
's',
'n',
'a',
'm',
'e',
'\030',
'\010',
' ',
'\001',
'(',
'\t',
'R',
'\022',
'j',
4672 'a',
'v',
'a',
'O',
'u',
't',
'e',
'r',
'C',
'l',
'a',
's',
's',
'n',
'a',
'm',
'e',
'\022',
'5',
'\n',
'\023',
'j',
'a',
'v',
'a',
4673 '_',
'm',
'u',
'l',
't',
'i',
'p',
'l',
'e',
'_',
'f',
'i',
'l',
'e',
's',
'\030',
'\n',
' ',
'\001',
'(',
'\010',
':',
'\005',
'f',
'a',
4674 'l',
's',
'e',
'R',
'\021',
'j',
'a',
'v',
'a',
'M',
'u',
'l',
't',
'i',
'p',
'l',
'e',
'F',
'i',
'l',
'e',
's',
'\022',
'D',
'\n',
4675 '\035',
'j',
'a',
'v',
'a',
'_',
'g',
'e',
'n',
'e',
'r',
'a',
't',
'e',
'_',
'e',
'q',
'u',
'a',
'l',
's',
'_',
'a',
'n',
'd',
4676 '_',
'h',
'a',
's',
'h',
'\030',
'\024',
' ',
'\001',
'(',
'\010',
'B',
'\002',
'\030',
'\001',
'R',
'\031',
'j',
'a',
'v',
'a',
'G',
'e',
'n',
'e',
4677 'r',
'a',
't',
'e',
'E',
'q',
'u',
'a',
'l',
's',
'A',
'n',
'd',
'H',
'a',
's',
'h',
'\022',
':',
'\n',
'\026',
'j',
'a',
'v',
'a',
4678 '_',
's',
't',
'r',
'i',
'n',
'g',
'_',
'c',
'h',
'e',
'c',
'k',
'_',
'u',
't',
'f',
'8',
'\030',
'\033',
' ',
'\001',
'(',
'\010',
':',
4679 '\005',
'f',
'a',
'l',
's',
'e',
'R',
'\023',
'j',
'a',
'v',
'a',
'S',
't',
'r',
'i',
'n',
'g',
'C',
'h',
'e',
'c',
'k',
'U',
't',
4680 'f',
'8',
'\022',
'S',
'\n',
'\014',
'o',
'p',
't',
'i',
'm',
'i',
'z',
'e',
'_',
'f',
'o',
'r',
'\030',
'\t',
' ',
'\001',
'(',
'\016',
'2',
4681 ')',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'F',
'i',
'l',
'e',
'O',
'p',
't',
4682 'i',
'o',
'n',
's',
'.',
'O',
'p',
't',
'i',
'm',
'i',
'z',
'e',
'M',
'o',
'd',
'e',
':',
'\005',
'S',
'P',
'E',
'E',
'D',
'R',
4683 '\013',
'o',
'p',
't',
'i',
'm',
'i',
'z',
'e',
'F',
'o',
'r',
'\022',
'\035',
'\n',
'\n',
'g',
'o',
'_',
'p',
'a',
'c',
'k',
'a',
'g',
4684 'e',
'\030',
'\013',
' ',
'\001',
'(',
'\t',
'R',
'\t',
'g',
'o',
'P',
'a',
'c',
'k',
'a',
'g',
'e',
'\022',
'5',
'\n',
'\023',
'c',
'c',
'_',
4685 'g',
'e',
'n',
'e',
'r',
'i',
'c',
'_',
's',
'e',
'r',
'v',
'i',
'c',
'e',
's',
'\030',
'\020',
' ',
'\001',
'(',
'\010',
':',
'\005',
'f',
4686 'a',
'l',
's',
'e',
'R',
'\021',
'c',
'c',
'G',
'e',
'n',
'e',
'r',
'i',
'c',
'S',
'e',
'r',
'v',
'i',
'c',
'e',
's',
'\022',
'9',
4687 '\n',
'\025',
'j',
'a',
'v',
'a',
'_',
'g',
'e',
'n',
'e',
'r',
'i',
'c',
'_',
's',
'e',
'r',
'v',
'i',
'c',
'e',
's',
'\030',
'\021',
4688 ' ',
'\001',
'(',
'\010',
':',
'\005',
'f',
'a',
'l',
's',
'e',
'R',
'\023',
'j',
'a',
'v',
'a',
'G',
'e',
'n',
'e',
'r',
'i',
'c',
'S',
4689 'e',
'r',
'v',
'i',
'c',
'e',
's',
'\022',
'5',
'\n',
'\023',
'p',
'y',
'_',
'g',
'e',
'n',
'e',
'r',
'i',
'c',
'_',
's',
'e',
'r',
4690 'v',
'i',
'c',
'e',
's',
'\030',
'\022',
' ',
'\001',
'(',
'\010',
':',
'\005',
'f',
'a',
'l',
's',
'e',
'R',
'\021',
'p',
'y',
'G',
'e',
'n',
4691 'e',
'r',
'i',
'c',
'S',
'e',
'r',
'v',
'i',
'c',
'e',
's',
'\022',
'7',
'\n',
'\024',
'p',
'h',
'p',
'_',
'g',
'e',
'n',
'e',
'r',
4692 'i',
'c',
'_',
's',
'e',
'r',
'v',
'i',
'c',
'e',
's',
'\030',
'*',
' ',
'\001',
'(',
'\010',
':',
'\005',
'f',
'a',
'l',
's',
'e',
'R',
4693 '\022',
'p',
'h',
'p',
'G',
'e',
'n',
'e',
'r',
'i',
'c',
'S',
'e',
'r',
'v',
'i',
'c',
'e',
's',
'\022',
'%',
'\n',
'\n',
'd',
'e',
4694 'p',
'r',
'e',
'c',
'a',
't',
'e',
'd',
'\030',
'\027',
' ',
'\001',
'(',
'\010',
':',
'\005',
'f',
'a',
'l',
's',
'e',
'R',
'\n',
'd',
'e',
4695 'p',
'r',
'e',
'c',
'a',
't',
'e',
'd',
'\022',
'.',
'\n',
'\020',
'c',
'c',
'_',
'e',
'n',
'a',
'b',
'l',
'e',
'_',
'a',
'r',
'e',
4696 'n',
'a',
's',
'\030',
'\037',
' ',
'\001',
'(',
'\010',
':',
'\004',
't',
'r',
'u',
'e',
'R',
'\016',
'c',
'c',
'E',
'n',
'a',
'b',
'l',
'e',
4697 'A',
'r',
'e',
'n',
'a',
's',
'\022',
'*',
'\n',
'\021',
'o',
'b',
'j',
'c',
'_',
'c',
'l',
'a',
's',
's',
'_',
'p',
'r',
'e',
'f',
4698 'i',
'x',
'\030',
'$',
' ',
'\001',
'(',
'\t',
'R',
'\017',
'o',
'b',
'j',
'c',
'C',
'l',
'a',
's',
's',
'P',
'r',
'e',
'f',
'i',
'x',
4699 '\022',
')',
'\n',
'\020',
'c',
's',
'h',
'a',
'r',
'p',
'_',
'n',
'a',
'm',
'e',
's',
'p',
'a',
'c',
'e',
'\030',
'%',
' ',
'\001',
'(',
4700 '\t',
'R',
'\017',
'c',
's',
'h',
'a',
'r',
'p',
'N',
'a',
'm',
'e',
's',
'p',
'a',
'c',
'e',
'\022',
'!',
'\n',
'\014',
's',
'w',
'i',
4701 'f',
't',
'_',
'p',
'r',
'e',
'f',
'i',
'x',
'\030',
'\'',
' ',
'\001',
'(',
'\t',
'R',
'\013',
's',
'w',
'i',
'f',
't',
'P',
'r',
'e',
4702 'f',
'i',
'x',
'\022',
'(',
'\n',
'\020',
'p',
'h',
'p',
'_',
'c',
'l',
'a',
's',
's',
'_',
'p',
'r',
'e',
'f',
'i',
'x',
'\030',
'(',
4703 ' ',
'\001',
'(',
'\t',
'R',
'\016',
'p',
'h',
'p',
'C',
'l',
'a',
's',
's',
'P',
'r',
'e',
'f',
'i',
'x',
'\022',
'#',
'\n',
'\r',
'p',
4704 'h',
'p',
'_',
'n',
'a',
'm',
'e',
's',
'p',
'a',
'c',
'e',
'\030',
')',
' ',
'\001',
'(',
'\t',
'R',
'\014',
'p',
'h',
'p',
'N',
'a',
4705 'm',
'e',
's',
'p',
'a',
'c',
'e',
'\022',
'4',
'\n',
'\026',
'p',
'h',
'p',
'_',
'm',
'e',
't',
'a',
'd',
'a',
't',
'a',
'_',
'n',
4706 'a',
'm',
'e',
's',
'p',
'a',
'c',
'e',
'\030',
',',
' ',
'\001',
'(',
'\t',
'R',
'\024',
'p',
'h',
'p',
'M',
'e',
't',
'a',
'd',
'a',
4707 't',
'a',
'N',
'a',
'm',
'e',
's',
'p',
'a',
'c',
'e',
'\022',
'!',
'\n',
'\014',
'r',
'u',
'b',
'y',
'_',
'p',
'a',
'c',
'k',
'a',
4708 'g',
'e',
'\030',
'-',
' ',
'\001',
'(',
'\t',
'R',
'\013',
'r',
'u',
'b',
'y',
'P',
'a',
'c',
'k',
'a',
'g',
'e',
'\022',
'X',
'\n',
'\024',
4709 'u',
'n',
'i',
'n',
't',
'e',
'r',
'p',
'r',
'e',
't',
'e',
'd',
'_',
'o',
'p',
't',
'i',
'o',
'n',
'\030',
'\347',
'\007',
' ',
'\003',
4710 '(',
'\013',
'2',
'$',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'U',
'n',
'i',
'n',
4711 't',
'e',
'r',
'p',
'r',
'e',
't',
'e',
'd',
'O',
'p',
't',
'i',
'o',
'n',
'R',
'\023',
'u',
'n',
'i',
'n',
't',
'e',
'r',
'p',
4712 'r',
'e',
't',
'e',
'd',
'O',
'p',
't',
'i',
'o',
'n',
'\"',
':',
'\n',
'\014',
'O',
'p',
't',
'i',
'm',
'i',
'z',
'e',
'M',
'o',
4713 'd',
'e',
'\022',
'\t',
'\n',
'\005',
'S',
'P',
'E',
'E',
'D',
'\020',
'\001',
'\022',
'\r',
'\n',
'\t',
'C',
'O',
'D',
'E',
'_',
'S',
'I',
'Z',
4714 'E',
'\020',
'\002',
'\022',
'\020',
'\n',
'\014',
'L',
'I',
'T',
'E',
'_',
'R',
'U',
'N',
'T',
'I',
'M',
'E',
'\020',
'\003',
'*',
'\t',
'\010',
'\350',
4715 '\007',
'\020',
'\200',
'\200',
'\200',
'\200',
'\002',
'J',
'\004',
'\010',
'&',
'\020',
'\'',
'\"',
'\321',
'\002',
'\n',
'\016',
'M',
'e',
's',
's',
'a',
'g',
'e',
4716 'O',
'p',
't',
'i',
'o',
'n',
's',
'\022',
'<',
'\n',
'\027',
'm',
'e',
's',
's',
'a',
'g',
'e',
'_',
's',
'e',
't',
'_',
'w',
'i',
4717 'r',
'e',
'_',
'f',
'o',
'r',
'm',
'a',
't',
'\030',
'\001',
' ',
'\001',
'(',
'\010',
':',
'\005',
'f',
'a',
'l',
's',
'e',
'R',
'\024',
'm',
4718 'e',
's',
's',
'a',
'g',
'e',
'S',
'e',
't',
'W',
'i',
'r',
'e',
'F',
'o',
'r',
'm',
'a',
't',
'\022',
'L',
'\n',
'\037',
'n',
'o',
4719 '_',
's',
't',
'a',
'n',
'd',
'a',
'r',
'd',
'_',
'd',
'e',
's',
'c',
'r',
'i',
'p',
't',
'o',
'r',
'_',
'a',
'c',
'c',
'e',
4720 's',
's',
'o',
'r',
'\030',
'\002',
' ',
'\001',
'(',
'\010',
':',
'\005',
'f',
'a',
'l',
's',
'e',
'R',
'\034',
'n',
'o',
'S',
't',
'a',
'n',
4721 'd',
'a',
'r',
'd',
'D',
'e',
's',
'c',
'r',
'i',
'p',
't',
'o',
'r',
'A',
'c',
'c',
'e',
's',
's',
'o',
'r',
'\022',
'%',
'\n',
4722 '\n',
'd',
'e',
'p',
'r',
'e',
'c',
'a',
't',
'e',
'd',
'\030',
'\003',
' ',
'\001',
'(',
'\010',
':',
'\005',
'f',
'a',
'l',
's',
'e',
'R',
4723 '\n',
'd',
'e',
'p',
'r',
'e',
'c',
'a',
't',
'e',
'd',
'\022',
'\033',
'\n',
'\t',
'm',
'a',
'p',
'_',
'e',
'n',
't',
'r',
'y',
'\030',
4724 '\007',
' ',
'\001',
'(',
'\010',
'R',
'\010',
'm',
'a',
'p',
'E',
'n',
't',
'r',
'y',
'\022',
'X',
'\n',
'\024',
'u',
'n',
'i',
'n',
't',
'e',
4725 'r',
'p',
'r',
'e',
't',
'e',
'd',
'_',
'o',
'p',
't',
'i',
'o',
'n',
'\030',
'\347',
'\007',
' ',
'\003',
'(',
'\013',
'2',
'$',
'.',
'g',
4726 'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'U',
'n',
'i',
'n',
't',
'e',
'r',
'p',
'r',
'e',
4727 't',
'e',
'd',
'O',
'p',
't',
'i',
'o',
'n',
'R',
'\023',
'u',
'n',
'i',
'n',
't',
'e',
'r',
'p',
'r',
'e',
't',
'e',
'd',
'O',
4728 'p',
't',
'i',
'o',
'n',
'*',
'\t',
'\010',
'\350',
'\007',
'\020',
'\200',
'\200',
'\200',
'\200',
'\002',
'J',
'\004',
'\010',
'\010',
'\020',
'\t',
'J',
'\004',
'\010',
4729 '\t',
'\020',
'\n',
'\"',
'\342',
'\003',
'\n',
'\014',
'F',
'i',
'e',
'l',
'd',
'O',
'p',
't',
'i',
'o',
'n',
's',
'\022',
'A',
'\n',
'\005',
'c',
4730 't',
'y',
'p',
'e',
'\030',
'\001',
' ',
'\001',
'(',
'\016',
'2',
'#',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
4731 'b',
'u',
'f',
'.',
'F',
'i',
'e',
'l',
'd',
'O',
'p',
't',
'i',
'o',
'n',
's',
'.',
'C',
'T',
'y',
'p',
'e',
':',
'\006',
'S',
4732 'T',
'R',
'I',
'N',
'G',
'R',
'\005',
'c',
't',
'y',
'p',
'e',
'\022',
'\026',
'\n',
'\006',
'p',
'a',
'c',
'k',
'e',
'd',
'\030',
'\002',
' ',
4733 '\001',
'(',
'\010',
'R',
'\006',
'p',
'a',
'c',
'k',
'e',
'd',
'\022',
'G',
'\n',
'\006',
'j',
's',
't',
'y',
'p',
'e',
'\030',
'\006',
' ',
'\001',
4734 '(',
'\016',
'2',
'$',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'F',
'i',
'e',
'l',
4735 'd',
'O',
'p',
't',
'i',
'o',
'n',
's',
'.',
'J',
'S',
'T',
'y',
'p',
'e',
':',
'\t',
'J',
'S',
'_',
'N',
'O',
'R',
'M',
'A',
4736 'L',
'R',
'\006',
'j',
's',
't',
'y',
'p',
'e',
'\022',
'\031',
'\n',
'\004',
'l',
'a',
'z',
'y',
'\030',
'\005',
' ',
'\001',
'(',
'\010',
':',
'\005',
4737 'f',
'a',
'l',
's',
'e',
'R',
'\004',
'l',
'a',
'z',
'y',
'\022',
'%',
'\n',
'\n',
'd',
'e',
'p',
'r',
'e',
'c',
'a',
't',
'e',
'd',
4738 '\030',
'\003',
' ',
'\001',
'(',
'\010',
':',
'\005',
'f',
'a',
'l',
's',
'e',
'R',
'\n',
'd',
'e',
'p',
'r',
'e',
'c',
'a',
't',
'e',
'd',
4739 '\022',
'\031',
'\n',
'\004',
'w',
'e',
'a',
'k',
'\030',
'\n',
' ',
'\001',
'(',
'\010',
':',
'\005',
'f',
'a',
'l',
's',
'e',
'R',
'\004',
'w',
'e',
4740 'a',
'k',
'\022',
'X',
'\n',
'\024',
'u',
'n',
'i',
'n',
't',
'e',
'r',
'p',
'r',
'e',
't',
'e',
'd',
'_',
'o',
'p',
't',
'i',
'o',
4741 'n',
'\030',
'\347',
'\007',
' ',
'\003',
'(',
'\013',
'2',
'$',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
4742 'f',
'.',
'U',
'n',
'i',
'n',
't',
'e',
'r',
'p',
'r',
'e',
't',
'e',
'd',
'O',
'p',
't',
'i',
'o',
'n',
'R',
'\023',
'u',
'n',
4743 'i',
'n',
't',
'e',
'r',
'p',
'r',
'e',
't',
'e',
'd',
'O',
'p',
't',
'i',
'o',
'n',
'\"',
'/',
'\n',
'\005',
'C',
'T',
'y',
'p',
4744 'e',
'\022',
'\n',
'\n',
'\006',
'S',
'T',
'R',
'I',
'N',
'G',
'\020',
'\000',
'\022',
'\010',
'\n',
'\004',
'C',
'O',
'R',
'D',
'\020',
'\001',
'\022',
'\020',
4745 '\n',
'\014',
'S',
'T',
'R',
'I',
'N',
'G',
'_',
'P',
'I',
'E',
'C',
'E',
'\020',
'\002',
'\"',
'5',
'\n',
'\006',
'J',
'S',
'T',
'y',
'p',
4746 'e',
'\022',
'\r',
'\n',
'\t',
'J',
'S',
'_',
'N',
'O',
'R',
'M',
'A',
'L',
'\020',
'\000',
'\022',
'\r',
'\n',
'\t',
'J',
'S',
'_',
'S',
'T',
4747 'R',
'I',
'N',
'G',
'\020',
'\001',
'\022',
'\r',
'\n',
'\t',
'J',
'S',
'_',
'N',
'U',
'M',
'B',
'E',
'R',
'\020',
'\002',
'*',
'\t',
'\010',
'\350',
4748 '\007',
'\020',
'\200',
'\200',
'\200',
'\200',
'\002',
'J',
'\004',
'\010',
'\004',
'\020',
'\005',
'\"',
's',
'\n',
'\014',
'O',
'n',
'e',
'o',
'f',
'O',
'p',
't',
4749 'i',
'o',
'n',
's',
'\022',
'X',
'\n',
'\024',
'u',
'n',
'i',
'n',
't',
'e',
'r',
'p',
'r',
'e',
't',
'e',
'd',
'_',
'o',
'p',
't',
4750 'i',
'o',
'n',
'\030',
'\347',
'\007',
' ',
'\003',
'(',
'\013',
'2',
'$',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
4751 'b',
'u',
'f',
'.',
'U',
'n',
'i',
'n',
't',
'e',
'r',
'p',
'r',
'e',
't',
'e',
'd',
'O',
'p',
't',
'i',
'o',
'n',
'R',
'\023',
4752 'u',
'n',
'i',
'n',
't',
'e',
'r',
'p',
'r',
'e',
't',
'e',
'd',
'O',
'p',
't',
'i',
'o',
'n',
'*',
'\t',
'\010',
'\350',
'\007',
'\020',
4753 '\200',
'\200',
'\200',
'\200',
'\002',
'\"',
'\300',
'\001',
'\n',
'\013',
'E',
'n',
'u',
'm',
'O',
'p',
't',
'i',
'o',
'n',
's',
'\022',
'\037',
'\n',
'\013',
4754 'a',
'l',
'l',
'o',
'w',
'_',
'a',
'l',
'i',
'a',
's',
'\030',
'\002',
' ',
'\001',
'(',
'\010',
'R',
'\n',
'a',
'l',
'l',
'o',
'w',
'A',
4755 'l',
'i',
'a',
's',
'\022',
'%',
'\n',
'\n',
'd',
'e',
'p',
'r',
'e',
'c',
'a',
't',
'e',
'd',
'\030',
'\003',
' ',
'\001',
'(',
'\010',
':',
4756 '\005',
'f',
'a',
'l',
's',
'e',
'R',
'\n',
'd',
'e',
'p',
'r',
'e',
'c',
'a',
't',
'e',
'd',
'\022',
'X',
'\n',
'\024',
'u',
'n',
'i',
4757 'n',
't',
'e',
'r',
'p',
'r',
'e',
't',
'e',
'd',
'_',
'o',
'p',
't',
'i',
'o',
'n',
'\030',
'\347',
'\007',
' ',
'\003',
'(',
'\013',
'2',
4758 '$',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'U',
'n',
'i',
'n',
't',
'e',
'r',
4759 'p',
'r',
'e',
't',
'e',
'd',
'O',
'p',
't',
'i',
'o',
'n',
'R',
'\023',
'u',
'n',
'i',
'n',
't',
'e',
'r',
'p',
'r',
'e',
't',
4760 'e',
'd',
'O',
'p',
't',
'i',
'o',
'n',
'*',
'\t',
'\010',
'\350',
'\007',
'\020',
'\200',
'\200',
'\200',
'\200',
'\002',
'J',
'\004',
'\010',
'\005',
'\020',
'\006',
4761 '\"',
'\236',
'\001',
'\n',
'\020',
'E',
'n',
'u',
'm',
'V',
'a',
'l',
'u',
'e',
'O',
'p',
't',
'i',
'o',
'n',
's',
'\022',
'%',
'\n',
'\n',
4762 'd',
'e',
'p',
'r',
'e',
'c',
'a',
't',
'e',
'd',
'\030',
'\001',
' ',
'\001',
'(',
'\010',
':',
'\005',
'f',
'a',
'l',
's',
'e',
'R',
'\n',
4763 'd',
'e',
'p',
'r',
'e',
'c',
'a',
't',
'e',
'd',
'\022',
'X',
'\n',
'\024',
'u',
'n',
'i',
'n',
't',
'e',
'r',
'p',
'r',
'e',
't',
4764 'e',
'd',
'_',
'o',
'p',
't',
'i',
'o',
'n',
'\030',
'\347',
'\007',
' ',
'\003',
'(',
'\013',
'2',
'$',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
4765 '.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'U',
'n',
'i',
'n',
't',
'e',
'r',
'p',
'r',
'e',
't',
'e',
'd',
'O',
'p',
4766 't',
'i',
'o',
'n',
'R',
'\023',
'u',
'n',
'i',
'n',
't',
'e',
'r',
'p',
'r',
'e',
't',
'e',
'd',
'O',
'p',
't',
'i',
'o',
'n',
4767 '*',
'\t',
'\010',
'\350',
'\007',
'\020',
'\200',
'\200',
'\200',
'\200',
'\002',
'\"',
'\234',
'\001',
'\n',
'\016',
'S',
'e',
'r',
'v',
'i',
'c',
'e',
'O',
'p',
4768 't',
'i',
'o',
'n',
's',
'\022',
'%',
'\n',
'\n',
'd',
'e',
'p',
'r',
'e',
'c',
'a',
't',
'e',
'd',
'\030',
'!',
' ',
'\001',
'(',
'\010',
4769 ':',
'\005',
'f',
'a',
'l',
's',
'e',
'R',
'\n',
'd',
'e',
'p',
'r',
'e',
'c',
'a',
't',
'e',
'd',
'\022',
'X',
'\n',
'\024',
'u',
'n',
4770 'i',
'n',
't',
'e',
'r',
'p',
'r',
'e',
't',
'e',
'd',
'_',
'o',
'p',
't',
'i',
'o',
'n',
'\030',
'\347',
'\007',
' ',
'\003',
'(',
'\013',
4771 '2',
'$',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'U',
'n',
'i',
'n',
't',
'e',
4772 'r',
'p',
'r',
'e',
't',
'e',
'd',
'O',
'p',
't',
'i',
'o',
'n',
'R',
'\023',
'u',
'n',
'i',
'n',
't',
'e',
'r',
'p',
'r',
'e',
4773 't',
'e',
'd',
'O',
'p',
't',
'i',
'o',
'n',
'*',
'\t',
'\010',
'\350',
'\007',
'\020',
'\200',
'\200',
'\200',
'\200',
'\002',
'\"',
'\340',
'\002',
'\n',
'\r',
4774 'M',
'e',
't',
'h',
'o',
'd',
'O',
'p',
't',
'i',
'o',
'n',
's',
'\022',
'%',
'\n',
'\n',
'd',
'e',
'p',
'r',
'e',
'c',
'a',
't',
4775 'e',
'd',
'\030',
'!',
' ',
'\001',
'(',
'\010',
':',
'\005',
'f',
'a',
'l',
's',
'e',
'R',
'\n',
'd',
'e',
'p',
'r',
'e',
'c',
'a',
't',
4776 'e',
'd',
'\022',
'q',
'\n',
'\021',
'i',
'd',
'e',
'm',
'p',
'o',
't',
'e',
'n',
'c',
'y',
'_',
'l',
'e',
'v',
'e',
'l',
'\030',
'\"',
4777 ' ',
'\001',
'(',
'\016',
'2',
'/',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'M',
'e',
4778 't',
'h',
'o',
'd',
'O',
'p',
't',
'i',
'o',
'n',
's',
'.',
'I',
'd',
'e',
'm',
'p',
'o',
't',
'e',
'n',
'c',
'y',
'L',
'e',
4779 'v',
'e',
'l',
':',
'\023',
'I',
'D',
'E',
'M',
'P',
'O',
'T',
'E',
'N',
'C',
'Y',
'_',
'U',
'N',
'K',
'N',
'O',
'W',
'N',
'R',
4780 '\020',
'i',
'd',
'e',
'm',
'p',
'o',
't',
'e',
'n',
'c',
'y',
'L',
'e',
'v',
'e',
'l',
'\022',
'X',
'\n',
'\024',
'u',
'n',
'i',
'n',
4781 't',
'e',
'r',
'p',
'r',
'e',
't',
'e',
'd',
'_',
'o',
'p',
't',
'i',
'o',
'n',
'\030',
'\347',
'\007',
' ',
'\003',
'(',
'\013',
'2',
'$',
4782 '.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'U',
'n',
'i',
'n',
't',
'e',
'r',
'p',
4783 'r',
'e',
't',
'e',
'd',
'O',
'p',
't',
'i',
'o',
'n',
'R',
'\023',
'u',
'n',
'i',
'n',
't',
'e',
'r',
'p',
'r',
'e',
't',
'e',
4784 'd',
'O',
'p',
't',
'i',
'o',
'n',
'\"',
'P',
'\n',
'\020',
'I',
'd',
'e',
'm',
'p',
'o',
't',
'e',
'n',
'c',
'y',
'L',
'e',
'v',
4785 'e',
'l',
'\022',
'\027',
'\n',
'\023',
'I',
'D',
'E',
'M',
'P',
'O',
'T',
'E',
'N',
'C',
'Y',
'_',
'U',
'N',
'K',
'N',
'O',
'W',
'N',
4786 '\020',
'\000',
'\022',
'\023',
'\n',
'\017',
'N',
'O',
'_',
'S',
'I',
'D',
'E',
'_',
'E',
'F',
'F',
'E',
'C',
'T',
'S',
'\020',
'\001',
'\022',
'\016',
4787 '\n',
'\n',
'I',
'D',
'E',
'M',
'P',
'O',
'T',
'E',
'N',
'T',
'\020',
'\002',
'*',
'\t',
'\010',
'\350',
'\007',
'\020',
'\200',
'\200',
'\200',
'\200',
'\002',
4788 '\"',
'\232',
'\003',
'\n',
'\023',
'U',
'n',
'i',
'n',
't',
'e',
'r',
'p',
'r',
'e',
't',
'e',
'd',
'O',
'p',
't',
'i',
'o',
'n',
'\022',
4789 'A',
'\n',
'\004',
'n',
'a',
'm',
'e',
'\030',
'\002',
' ',
'\003',
'(',
'\013',
'2',
'-',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
4790 'o',
't',
'o',
'b',
'u',
'f',
'.',
'U',
'n',
'i',
'n',
't',
'e',
'r',
'p',
'r',
'e',
't',
'e',
'd',
'O',
'p',
't',
'i',
'o',
4791 'n',
'.',
'N',
'a',
'm',
'e',
'P',
'a',
'r',
't',
'R',
'\004',
'n',
'a',
'm',
'e',
'\022',
')',
'\n',
'\020',
'i',
'd',
'e',
'n',
't',
4792 'i',
'f',
'i',
'e',
'r',
'_',
'v',
'a',
'l',
'u',
'e',
'\030',
'\003',
' ',
'\001',
'(',
'\t',
'R',
'\017',
'i',
'd',
'e',
'n',
't',
'i',
4793 'f',
'i',
'e',
'r',
'V',
'a',
'l',
'u',
'e',
'\022',
',',
'\n',
'\022',
'p',
'o',
's',
'i',
't',
'i',
'v',
'e',
'_',
'i',
'n',
't',
4794 '_',
'v',
'a',
'l',
'u',
'e',
'\030',
'\004',
' ',
'\001',
'(',
'\004',
'R',
'\020',
'p',
'o',
's',
'i',
't',
'i',
'v',
'e',
'I',
'n',
't',
4795 'V',
'a',
'l',
'u',
'e',
'\022',
',',
'\n',
'\022',
'n',
'e',
'g',
'a',
't',
'i',
'v',
'e',
'_',
'i',
'n',
't',
'_',
'v',
'a',
'l',
4796 'u',
'e',
'\030',
'\005',
' ',
'\001',
'(',
'\003',
'R',
'\020',
'n',
'e',
'g',
'a',
't',
'i',
'v',
'e',
'I',
'n',
't',
'V',
'a',
'l',
'u',
4797 'e',
'\022',
'!',
'\n',
'\014',
'd',
'o',
'u',
'b',
'l',
'e',
'_',
'v',
'a',
'l',
'u',
'e',
'\030',
'\006',
' ',
'\001',
'(',
'\001',
'R',
'\013',
4798 'd',
'o',
'u',
'b',
'l',
'e',
'V',
'a',
'l',
'u',
'e',
'\022',
'!',
'\n',
'\014',
's',
't',
'r',
'i',
'n',
'g',
'_',
'v',
'a',
'l',
4799 'u',
'e',
'\030',
'\007',
' ',
'\001',
'(',
'\014',
'R',
'\013',
's',
't',
'r',
'i',
'n',
'g',
'V',
'a',
'l',
'u',
'e',
'\022',
'\'',
'\n',
'\017',
4800 'a',
'g',
'g',
'r',
'e',
'g',
'a',
't',
'e',
'_',
'v',
'a',
'l',
'u',
'e',
'\030',
'\010',
' ',
'\001',
'(',
'\t',
'R',
'\016',
'a',
'g',
4801 'g',
'r',
'e',
'g',
'a',
't',
'e',
'V',
'a',
'l',
'u',
'e',
'\032',
'J',
'\n',
'\010',
'N',
'a',
'm',
'e',
'P',
'a',
'r',
't',
'\022',
4802 '\033',
'\n',
'\t',
'n',
'a',
'm',
'e',
'_',
'p',
'a',
'r',
't',
'\030',
'\001',
' ',
'\002',
'(',
'\t',
'R',
'\010',
'n',
'a',
'm',
'e',
'P',
4803 'a',
'r',
't',
'\022',
'!',
'\n',
'\014',
'i',
's',
'_',
'e',
'x',
't',
'e',
'n',
's',
'i',
'o',
'n',
'\030',
'\002',
' ',
'\002',
'(',
'\010',
4804 'R',
'\013',
'i',
's',
'E',
'x',
't',
'e',
'n',
's',
'i',
'o',
'n',
'\"',
'\247',
'\002',
'\n',
'\016',
'S',
'o',
'u',
'r',
'c',
'e',
'C',
4805 'o',
'd',
'e',
'I',
'n',
'f',
'o',
'\022',
'D',
'\n',
'\010',
'l',
'o',
'c',
'a',
't',
'i',
'o',
'n',
'\030',
'\001',
' ',
'\003',
'(',
'\013',
4806 '2',
'(',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'S',
'o',
'u',
'r',
'c',
'e',
4807 'C',
'o',
'd',
'e',
'I',
'n',
'f',
'o',
'.',
'L',
'o',
'c',
'a',
't',
'i',
'o',
'n',
'R',
'\010',
'l',
'o',
'c',
'a',
't',
'i',
4808 'o',
'n',
'\032',
'\316',
'\001',
'\n',
'\010',
'L',
'o',
'c',
'a',
't',
'i',
'o',
'n',
'\022',
'\026',
'\n',
'\004',
'p',
'a',
't',
'h',
'\030',
'\001',
4809 ' ',
'\003',
'(',
'\005',
'B',
'\002',
'\020',
'\001',
'R',
'\004',
'p',
'a',
't',
'h',
'\022',
'\026',
'\n',
'\004',
's',
'p',
'a',
'n',
'\030',
'\002',
' ',
4810 '\003',
'(',
'\005',
'B',
'\002',
'\020',
'\001',
'R',
'\004',
's',
'p',
'a',
'n',
'\022',
')',
'\n',
'\020',
'l',
'e',
'a',
'd',
'i',
'n',
'g',
'_',
4811 'c',
'o',
'm',
'm',
'e',
'n',
't',
's',
'\030',
'\003',
' ',
'\001',
'(',
'\t',
'R',
'\017',
'l',
'e',
'a',
'd',
'i',
'n',
'g',
'C',
'o',
4812 'm',
'm',
'e',
'n',
't',
's',
'\022',
'+',
'\n',
'\021',
't',
'r',
'a',
'i',
'l',
'i',
'n',
'g',
'_',
'c',
'o',
'm',
'm',
'e',
'n',
4813 't',
's',
'\030',
'\004',
' ',
'\001',
'(',
'\t',
'R',
'\020',
't',
'r',
'a',
'i',
'l',
'i',
'n',
'g',
'C',
'o',
'm',
'm',
'e',
'n',
't',
4814 's',
'\022',
':',
'\n',
'\031',
'l',
'e',
'a',
'd',
'i',
'n',
'g',
'_',
'd',
'e',
't',
'a',
'c',
'h',
'e',
'd',
'_',
'c',
'o',
'm',
4815 'm',
'e',
'n',
't',
's',
'\030',
'\006',
' ',
'\003',
'(',
'\t',
'R',
'\027',
'l',
'e',
'a',
'd',
'i',
'n',
'g',
'D',
'e',
't',
'a',
'c',
4816 'h',
'e',
'd',
'C',
'o',
'm',
'm',
'e',
'n',
't',
's',
'\"',
'\321',
'\001',
'\n',
'\021',
'G',
'e',
'n',
'e',
'r',
'a',
't',
'e',
'd',
4817 'C',
'o',
'd',
'e',
'I',
'n',
'f',
'o',
'\022',
'M',
'\n',
'\n',
'a',
'n',
'n',
'o',
't',
'a',
't',
'i',
'o',
'n',
'\030',
'\001',
' ',
4818 '\003',
'(',
'\013',
'2',
'-',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'G',
'e',
'n',
4819 'e',
'r',
'a',
't',
'e',
'd',
'C',
'o',
'd',
'e',
'I',
'n',
'f',
'o',
'.',
'A',
'n',
'n',
'o',
't',
'a',
't',
'i',
'o',
'n',
4820 'R',
'\n',
'a',
'n',
'n',
'o',
't',
'a',
't',
'i',
'o',
'n',
'\032',
'm',
'\n',
'\n',
'A',
'n',
'n',
'o',
't',
'a',
't',
'i',
'o',
4821 'n',
'\022',
'\026',
'\n',
'\004',
'p',
'a',
't',
'h',
'\030',
'\001',
' ',
'\003',
'(',
'\005',
'B',
'\002',
'\020',
'\001',
'R',
'\004',
'p',
'a',
't',
'h',
4822 '\022',
'\037',
'\n',
'\013',
's',
'o',
'u',
'r',
'c',
'e',
'_',
'f',
'i',
'l',
'e',
'\030',
'\002',
' ',
'\001',
'(',
'\t',
'R',
'\n',
's',
'o',
4823 'u',
'r',
'c',
'e',
'F',
'i',
'l',
'e',
'\022',
'\024',
'\n',
'\005',
'b',
'e',
'g',
'i',
'n',
'\030',
'\003',
' ',
'\001',
'(',
'\005',
'R',
'\005',
4824 'b',
'e',
'g',
'i',
'n',
'\022',
'\020',
'\n',
'\003',
'e',
'n',
'd',
'\030',
'\004',
' ',
'\001',
'(',
'\005',
'R',
'\003',
'e',
'n',
'd',
'B',
'~',
4825 '\n',
'\023',
'c',
'o',
'm',
'.',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'B',
'\020',
'D',
'e',
4826 's',
'c',
'r',
'i',
'p',
't',
'o',
'r',
'P',
'r',
'o',
't',
'o',
's',
'H',
'\001',
'Z',
'-',
'g',
'o',
'o',
'g',
'l',
'e',
'.',
4827 'g',
'o',
'l',
'a',
'n',
'g',
'.',
'o',
'r',
'g',
'/',
'p',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'/',
't',
'y',
'p',
'e',
's',
4828 '/',
'd',
'e',
's',
'c',
'r',
'i',
'p',
't',
'o',
'r',
'p',
'b',
'\370',
'\001',
'\001',
'\242',
'\002',
'\003',
'G',
'P',
'B',
'\252',
'\002',
'\032',
4829 'G',
'o',
'o',
'g',
'l',
'e',
'.',
'P',
'r',
'o',
't',
'o',
'b',
'u',
'f',
'.',
'R',
'e',
'f',
'l',
'e',
'c',
't',
'i',
'o',
4840 "google/protobuf/descriptor.proto",
4971 return (
num & 3) ==
type ? (
const void*)(
num & ~3) : NULL;
4976 return upb_value_constptr((
const void*)
num);
4981 return c >= low &&
c <= high;
4995 if (fullname == NULL) {
4997 }
else if ((
p = strrchr(fullname,
'.')) == NULL) {
5033 if (!strcmp(
name,
"google.protobuf.Any")) {
5035 }
else if (!strcmp(
name,
"google.protobuf.FieldMask")) {
5037 }
else if (!strcmp(
name,
"google.protobuf.Duration")) {
5039 }
else if (!strcmp(
name,
"google.protobuf.Timestamp")) {
5041 }
else if (!strcmp(
name,
"google.protobuf.DoubleValue")) {
5043 }
else if (!strcmp(
name,
"google.protobuf.FloatValue")) {
5045 }
else if (!strcmp(
name,
"google.protobuf.Int64Value")) {
5047 }
else if (!strcmp(
name,
"google.protobuf.UInt64Value")) {
5049 }
else if (!strcmp(
name,
"google.protobuf.Int32Value")) {
5051 }
else if (!strcmp(
name,
"google.protobuf.UInt32Value")) {
5053 }
else if (!strcmp(
name,
"google.protobuf.BoolValue")) {
5055 }
else if (!strcmp(
name,
"google.protobuf.StringValue")) {
5057 }
else if (!strcmp(
name,
"google.protobuf.BytesValue")) {
5059 }
else if (!strcmp(
name,
"google.protobuf.Value")) {
5061 }
else if (!strcmp(
name,
"google.protobuf.ListValue")) {
5063 }
else if (!strcmp(
name,
"google.protobuf.Struct")) {
5074 return e->full_name;
5087 return e->defaultval;
5108 if (
num) *
num = upb_value_getint32(
v);
5129 return f->full_name;
5184 return f->is_extension_;
5200 return f->json_name;
5226 ret.str_val.data =
str->str;
5227 ret.str_val.size =
str->len;
5229 ret.str_val.size = 0;
5244 return f->defaultval.sint;
5249 return (
int32_t)
f->defaultval.sint;
5254 return f->defaultval.uint;
5264 return f->defaultval.boolean;
5269 return f->defaultval.flt;
5274 return f->defaultval.dbl;
5300 return &
f->msgdef->layout->fields[
f->layout_index];
5336 return x >= low &&
x <= high;
5350 return m->full_name;
5362 return m->file->syntax;
5407 const char *
name,
size_t len) {
5422 return m->field_count;
5426 return m->oneof_count;
5430 return m->real_oneof_count;
5434 return m->field_count;
5438 return m->oneof_count;
5442 return m->real_oneof_count;
5451 return &
m->fields[
i];
5456 return &
m->oneofs[
i];
5460 return m->map_entry;
5464 return m->well_known_type;
5547 return o->field_count;
5552 return o->fields[
i];
5556 return o->field_count;
5560 return o -
o->parent->oneofs;
5564 return o->synthetic;
5571 upb_value_getptr(val) : NULL;
5611 return f->phpprefix;
5615 return f->phpnamespace;
5623 return f->msg_count;
5627 return f->dep_count;
5631 return f->enum_count;
5635 return i < 0 || i >=
f->dep_count ? NULL :
f->deps[
i];
5639 return i < 0 || i >=
f->msg_count ? NULL : &
f->msgs[
i];
5643 return i < 0 || i >=
f->enum_count ? NULL : &
f->enums[
i];
5663 s->bytes_loaded = 0;
5703 upb_value_getconstptr(
v) : NULL;
5717 #define CHK_OOM(x) if (!(x)) { symtab_oomerr(ctx); }
5754 for (
i = 0;
i <
len;
i++) {
5757 if (
start || !full) {
5758 symtab_errf(
ctx,
"invalid name: unexpected '.' (%.*s)", (
int)
len,
str);
5765 "invalid name: path components must start with a letter (%.*s)",
5771 symtab_errf(
ctx,
"invalid name: non-alphanumeric character (%.*s)",
5777 symtab_errf(
ctx,
"invalid name: empty part (%.*s)", (
int)
len,
str);
5782 return (
n +
d - 1) /
d;
5799 return sizeof(
void*);
5811 return sizeof(ent.
k);
5813 return sizeof(
void*);
5831 return f1->number -
f2->number;
5838 int dense_below = 0;
5839 for (
i = 0;
i <
n;
i++) {
5842 f->layout_index =
i;
5845 dense_below =
i + 1;
5848 l->dense_below = dense_below;
5883 size_t submsg_count = 0;
5890 for (
size_t i = 0;
i < field_count;
i++) {
5901 l->submsgs = submsgs;
5907 l->fasttable[0].field_data = 0;
5924 fields[1].submsg_index = 0;
5957 field->submsg_index = submsg_count++;
5964 field->presence = ++hasbit;
5966 field->presence = 0;
5995 size_t case_size =
sizeof(
uint32_t);
5996 size_t field_size = 0;
6037 return n == strlen(
b) && memcmp(
a,
b,
n) == 0;
6062 int synthetic_count = 0;
6065 for (
i = 0;
i <
m->oneof_count;
i++) {
6068 if (
o->synthetic &&
o->field_count != 1) {
6069 symtab_errf(
ctx,
"Synthetic oneofs must have one field, not %d: %s",
6075 }
else if (synthetic_count != 0) {
6076 symtab_errf(
ctx,
"Synthetic oneofs must be after all other oneofs: %s",
6084 for (
i = 0;
i <
m->field_count;
i++) {
6088 o->fields[
o->field_count++] =
f;
6092 m->real_oneof_count =
m->oneof_count - synthetic_count;
6096 size_t src,
dst = 0;
6097 bool ucase_next =
false;
6099 #define WRITE(byte) \
6101 if (dst < len) buf[dst - 1] = byte; \
6102 else if (dst == len) buf[dst - 1] = '\0'
6113 for (src = 0;
name[src]; src++) {
6114 if (
name[src] ==
'_') {
6142 symtab_errf(
ctx,
"duplicate symbol '%s'",
name);
6155 if(sym.
size == 0)
goto notfound;
6156 if(sym.
data[0] ==
'.') {
6166 symtab_errf(
ctx,
"type mismatch when resolving field %s, name %s",
6167 f->full_name, sym.
data);
6194 o->synthetic =
false;
6206 if (!
ret)
return NULL;
6228 symtab_errf(
ctx,
"Default too long: %.*s", (
int)
len,
str);
6240 long val = strtol(
str, &
end, 0);
6244 f->defaultval.sint = val;
6253 f->defaultval.sint = val;
6257 long long val = strtoll(
str, &
end, 0);
6261 f->defaultval.sint = val;
6265 unsigned long val = strtoul(
str, &
end, 0);
6269 f->defaultval.uint = val;
6273 unsigned long long val = strtoull(
str, &
end, 0);
6277 f->defaultval.uint = val;
6281 double val = strtod(
str, &
end);
6282 if (errno == ERANGE || *
end) {
6285 f->defaultval.dbl = val;
6289 float val = strtof(
str, &
end);
6290 if (errno == ERANGE || *
end) {
6293 f->defaultval.flt = val;
6298 f->defaultval.boolean =
false;
6300 f->defaultval.boolean =
true;
6314 symtab_errf(
ctx,
"Message should not have a default (%s)",
6321 symtab_errf(
ctx,
"Invalid default '%.*s' for field %s", (
int)
len,
str,
6330 f->defaultval.sint = 0;
6334 f->defaultval.uint = 0;
6338 f->defaultval.dbl = 0;
6345 f->defaultval.boolean =
false;
6358 const char *full_name;
6359 const char *json_name;
6382 symtab_errf(
ctx,
"invalid field number (%u)", field_number);
6391 f->index_ =
m->field_count++;
6393 f->is_extension_ =
false;
6396 symtab_errf(
ctx,
"duplicate field name (%s)",
shortname);
6400 symtab_errf(
ctx,
"duplicate json_name (%s)", json_name);
6404 symtab_errf(
ctx,
"duplicate field number (%u)", field_number);
6409 v = upb_value_constptr(
f);
6410 json_size = strlen(json_name);
6416 if (strcmp(
shortname, json_name) != 0) {
6422 int count =
m->layout->field_count;
6427 f->layout_index =
i;
6437 f->is_extension_ =
true;
6441 f->full_name = full_name;
6442 f->json_name = json_name;
6443 f->file =
ctx->file;
6446 f->number_ = field_number;
6448 f->proto3_optional_ =
6454 f->sub.unresolved = field_proto;
6457 symtab_errf(
ctx,
"proto3 fields cannot be required (%s)",
f->full_name);
6467 symtab_errf(
ctx,
"fields in oneof must have OPTIONAL label (%s)",
6472 symtab_errf(
ctx,
"oneof_index provided for extension field (%s)",
6476 if (oneof_index >=
m->oneof_count) {
6477 symtab_errf(
ctx,
"oneof_index out of range (%s)",
f->full_name);
6484 if (
f->proto3_optional_) {
6492 if (
f->proto3_optional_) {
6493 symtab_errf(
ctx,
"field with proto3_optional was not in a oneof (%s)",
6535 e->file =
ctx->file;
6539 symtab_errf(
ctx,
"enums must contain at least one value (%s)",
6543 for (
i = 0;
i <
n;
i++) {
6551 symtab_errf(
ctx,
"for proto3, the first enum value must be zero (%s)",
6556 symtab_errf(
ctx,
"duplicate enum label '%s'", name2);
6579 size_t i, n_oneof, n_field,
n;
6595 m->file =
ctx->file;
6596 m->map_entry =
false;
6605 m->layout = *
ctx->layouts;
6615 for (
i = 0;
i < n_oneof;
i++) {
6621 for (
i = 0;
i < n_field;
i++) {
6632 for (
i = 0;
i <
n;
i++) {
6637 for (
i = 0;
i <
n;
i++) {
6650 for (
i = 0;
i <
n;
i++) {
6655 file->enum_count +=
n;
6658 file->ext_count +=
n;
6668 for (
i = 0;
i <
n;
i++) {
6673 file->enum_count +=
n;
6676 file->ext_count +=
n;
6684 if (
f->is_extension_) {
6686 symtab_errf(
ctx,
"extension for field '%s' had no extendee",
6696 symtab_errf(
ctx,
"field '%s' is missing type name",
f->full_name);
6714 symtab_errf(
ctx,
"proto3 fields cannot have explicit defaults (%s)",
6719 symtab_errf(
ctx,
"message fields cannot have explicit defaults (%s)",
6742 file->msg_count = 0;
6743 file->enum_count = 0;
6744 file->ext_count = 0;
6751 file->msg_count = 0;
6752 file->enum_count = 0;
6753 file->ext_count = 0;
6756 symtab_errf(
ctx,
"File has no name");
6761 file->phpprefix = NULL;
6762 file->phpnamespace = NULL;
6766 google_protobuf_FileDescriptorProto_package(file_proto);
6770 file->package = NULL;
6791 if (file_options_proto) {
6807 for (
i = 0;
i <
n;
i++) {
6811 dep_name.
size, &
v)) {
6814 "', but it has not been loaded",
6817 file->deps[
i] = upb_value_getconstptr(
v);
6822 for (
i = 0;
i <
n;
i++) {
6828 for (
i = 0;
i <
n;
i++) {
6835 for (
i = 0;
i <
n;
i++) {
6840 for (
i = 0;
i < (size_t)
file->ext_count;
i++) {
6844 for (
i = 0;
i < (size_t)
file->msg_count;
i++) {
6847 for (j = 0; j <
m->field_count; j++) {
6852 if (!
ctx->layouts) {
6853 for (
i = 0;
i < (size_t)
file->msg_count;
i++) {
6862 for (
i = 0;
i <
file->msg_count;
i++) {
6863 const char *
name =
file->msgs[
i].full_name;
6866 for (
i = 0;
i <
file->enum_count;
i++) {
6867 const char *
name =
file->enums[
i].full_name;
6870 for (
i = 0;
i <
file->ext_count;
i++) {
6871 const char *
name =
file->exts[
i].full_name;
6950 s->bytes_loaded +=
init->descriptor.size;
6955 "Failed to parse compiled-in descriptor for file '%s'. This should "
6967 fprintf(
stderr,
"Error loading compiled-in descriptor: %s\n",
6974 return s->bytes_loaded;
6989 static unsigned char sizes[] = {
7051 return field->presence < 0;
7066 }
else if (
field->presence > 0) {
7108 if (
a && (!
ret.msg || wrong_oneof)) {
7125 }
else if (
field->presence > 0) {
7138 if (
field->presence > 0) {
7149 if (
field->presence > 0) {
7153 if (*oneof_case !=
field->number)
return;
7182 test.str_val.data = NULL;
7185 if (memcmp(&
test, &zero,
sizeof(
test)) == 0)
continue;
7210 if (--
depth == 0)
return false;
7216 if (!subm)
continue;
7223 if (!val_m)
continue;
7234 for (
i = 0;
i <
n;
i++) {
7267 int lg2 = arr->
data & 7;
7275 int lg2 = arr->
data & 7;
7358 #include <inttypes.h>
7392 return str.size == strlen(lit) && memcmp(
str.data, lit,
str.size) == 0;
7398 "google.protobuf.NullValue") == 0;
7410 (
int)(
d->ptr -
d->line_begin),
msg);
7418 (
int)(
d->ptr -
d->line_begin));
7426 while (
d->ptr !=
d->end) {
7430 d->line_begin =
d->ptr;
7445 if (
d->ptr ==
d->end || *
d->ptr !=
ch)
return false;
7451 size_t avail =
d->end -
d->ptr;
7452 size_t len = strlen(lit);
7453 if (avail <
len || memcmp(
d->ptr, lit,
len) != 0) {
7522 if (--
d->depth < 0) {
7529 bool is_first =
d->is_first;
7530 d->is_first =
false;
7532 if (*
d->ptr == end_ch)
return false;
7572 const char *
start =
d->ptr;
7574 while (
d->ptr <
d->end) {
7575 if (*
d->ptr <
'0' || *
d->ptr >
'9') {
7591 const char *
start =
d->ptr;
7596 if (*
d->ptr ==
'-')
d->ptr++;
7606 if (
d->ptr ==
d->end)
goto parse;
7610 if (
d->ptr ==
d->end)
goto parse;
7612 if (*
d->ptr ==
'e' || *
d->ptr ==
'E') {
7614 if (
d->ptr ==
d->end) {
7617 if (*
d->ptr ==
'+' || *
d->ptr ==
'-') {
7630 assert(
end ==
d->ptr);
7641 if (val > DBL_MAX || val < -DBL_MAX) {
7652 switch (*
d->ptr++) {
7678 if (
d->end -
d->ptr < 4) {
7683 while (
d->ptr <
end) {
7684 char ch = *
d->ptr++;
7685 if (
ch >=
'0' &&
ch <=
'9') {
7687 }
else if (
ch >=
'a' &&
ch <=
'f') {
7689 }
else if (
ch >=
'A' &&
ch <=
'F') {
7694 cp = (cp << 4) |
ch;
7703 if (cp >= 0xd800 && cp <= 0xdbff) {
7709 if (low < 0xdc00 || low > 0xdfff) {
7712 cp = (high & 0x3ff) << 10;
7713 cp |= (low & 0x3ff);
7715 }
else if (cp >= 0xdc00 && cp <= 0xdfff) {
7723 }
else if (cp <= 0x07FF) {
7724 out[0] = ((cp >> 6) & 0x1F) | 0xC0;
7725 out[1] = ((cp >> 0) & 0x3F) | 0x80;
7727 }
else if (cp <= 0xFFFF) {
7728 out[0] = ((cp >> 12) & 0x0F) | 0xE0;
7729 out[1] = ((cp >> 6) & 0x3F) | 0x80;
7730 out[2] = ((cp >> 0) & 0x3F) | 0x80;
7732 }
else if (cp < 0x10FFFF) {
7733 out[0] = ((cp >> 18) & 0x07) | 0xF0;
7734 out[1] = ((cp >> 12) & 0x3f) | 0x80;
7735 out[2] = ((cp >> 6) & 0x3f) | 0x80;
7736 out[3] = ((cp >> 0) & 0x3f) | 0x80;
7744 size_t oldsize = *buf_end - *
buf;
7758 char *buf_end = NULL;
7762 if (*
d->ptr++ !=
'"') {
7766 while (
d->ptr <
d->end) {
7767 char ch = *
d->ptr++;
7769 if (
end == buf_end) {
7782 if (
d->ptr ==
d->end)
goto eof;
7783 if (*
d->ptr ==
'u') {
7785 if (buf_end -
end < 4) {
7795 if ((
unsigned char)*
d->ptr < 0x20) {
7847 const signed char table[256] = {
7848 -1, -1, -1, -1, -1, -1, -1,
7849 -1, -1, -1, -1, -1, -1, -1,
7850 -1, -1, -1, -1, -1, -1, -1,
7851 -1, -1, -1, -1, -1, -1, -1,
7852 -1, -1, -1, -1, -1, -1, -1,
7853 -1, -1, -1, -1, -1, -1, -1,
7854 -1, 62 , -1, 62 , -1, 63 , 52 ,
7855 53 , 54 , 55 , 56 , 57 , 58 , 59 ,
7856 60 , 61 , -1, -1, -1, -1, -1,
7857 -1, -1, 0 , 1 , 2 , 3 , 4 ,
7858 5 , 6 , 07 , 8 , 9 , 10 , 11 ,
7859 12 , 13 , 14 , 15 , 16 , 17 , 18 ,
7860 19 , 20 , 21 , 22 , 23 , 24 , 25 ,
7861 -1, -1, -1, -1, 63 , -1, 26 ,
7862 27 , 28 , 29 , 30 , 31 , 32 , 33 ,
7863 34 , 35 , 36 , 37 , 38 , 39 , 40 ,
7864 41 , 42 , 43 , 44 , 45 , 46 , 47 ,
7865 48 , 49 , 50 , 51 , -1, -1, -1,
7866 -1, -1, -1, -1, -1, -1, -1,
7867 -1, -1, -1, -1, -1, -1, -1,
7868 -1, -1, -1, -1, -1, -1, -1,
7869 -1, -1, -1, -1, -1, -1, -1,
7870 -1, -1, -1, -1, -1, -1, -1,
7871 -1, -1, -1, -1, -1, -1, -1,
7872 -1, -1, -1, -1, -1, -1, -1,
7873 -1, -1, -1, -1, -1, -1, -1,
7874 -1, -1, -1, -1, -1, -1, -1,
7875 -1, -1, -1, -1, -1, -1, -1,
7876 -1, -1, -1, -1, -1, -1, -1,
7877 -1, -1, -1, -1, -1, -1, -1,
7878 -1, -1, -1, -1, -1, -1, -1,
7879 -1, -1, -1, -1, -1, -1, -1,
7880 -1, -1, -1, -1, -1, -1, -1,
7881 -1, -1, -1, -1, -1, -1, -1,
7882 -1, -1, -1, -1, -1, -1, -1,
7883 -1, -1, -1, -1, -1, -1, -1,
7906 out[1] = (val >> 8) & 0xff;
7921 char *
out = (
char*)
str.data;
7922 const char *
ptr =
str.data;
7924 const char *end4 =
ptr + (
str.size & -4);
7926 for (;
ptr < end4;
ptr += 4,
out += 3) {
7935 if (
ptr[2] ==
'=') {
7945 out[1] = (val >> 8) & 0xff;
7946 out[2] = val & 0xff;
7966 unsigned ch = *
ptr -
'0';
7967 if (
ch >= 10)
break;
7995 *val = neg ? -u64 : u64;
8003 jsondec_err(
d,
"Non-number characters in quoted integer");
8012 jsondec_err(
d,
"Non-number characters in quoted integer");
8026 if (dbl > 9223372036854774784.0 || dbl < -9223372036854775808.0) {
8031 jsondec_errf(
d,
"JSON number was not integral (%f != %" PRId64
")", dbl,
8062 if (dbl > 18446744073709549568.0 || dbl < 0) {
8067 jsondec_errf(
d,
"JSON number was not integral (%f != %" PRIu64
")", dbl,
8276 preserved =
d->debug_field;
8292 d->debug_field = preserved;
8331 const char *
after) {
8333 const char *
p = *
ptr;
8334 const char *
end =
p + digits;
8335 size_t after_len =
after ? strlen(
after) : 0;
8340 (after_len && memcmp(
end,
after, after_len) != 0)) {
8352 const char *
p = *
ptr;
8354 if (
p !=
end && *
p ==
'.') {
8356 int digits = (
int)(nano_end -
p - 1);
8357 int exp_lg10 = 9 - digits;
8361 while (exp_lg10--) nanos *= 10;
8375 const uint32_t adjust = carry ? 12 : 0;
8376 const uint32_t y_adj =
y + year_base - carry;
8377 const uint32_t month_days = ((m_adj + adjust) * 62719 + 769) / 2048;
8378 const uint32_t leap_days = y_adj / 4 - y_adj / 100 + y_adj / 400;
8379 return y_adj * 365 + leap_days + month_days + (
d - 1) - 2472632;
8390 const char *
ptr =
str.data;
8393 if (
str.size < 20)
goto malformed;
8415 if (
ptr ==
end)
goto malformed;
8422 if ((
end -
ptr) != 5)
goto malformed;
8425 ofs_min = ((ofs_hour * 60) + ofs_min) * 60;
8426 seconds.int64_val += (neg ? ofs_min : -ofs_min);
8429 if (
ptr !=
end)
goto malformed;
8436 if (
seconds.int64_val < -62135596800) {
8452 const char *
ptr =
str.data;
8485 value.msg_val = value_msg;
8504 value.msg_val = value_msg;
8576 ret.size += (*
ptr >=
'A' && *
ptr <=
'Z');
8586 if (
ch >=
'A' &&
ch <=
'Z') {
8589 }
else if (
ch ==
'_') {
8604 const char *
ptr =
str.data;
8609 const char *elem_end = memchr(
ptr,
',',
end -
ptr);
8632 jsondec_err(
d,
"Key for well-known type must be 'value'");
8654 jsondec_err(
d,
"Type url must have at least one '/' and non-empty host");
8673 const char *pre_type_data = NULL;
8674 const char *pre_type_end = NULL;
8681 const char *
start =
d->ptr;
8686 if (pre_type_data) {
8687 pre_type_end =
start;
8688 while (*pre_type_end !=
',') pre_type_end--;
8691 if (!pre_type_data) pre_type_data =
start;
8697 jsondec_err(
d,
"Any object didn't contain a '@type' field");
8702 if (pre_type_data) {
8703 size_t len = pre_type_end - pre_type_data + 1;
8705 const char *saved_ptr =
d->ptr;
8706 const char *saved_end =
d->end;
8780 if (
size == 0)
return true;
8785 d.any_pool = any_pool;
8790 d.line_begin =
d.ptr;
8791 d.debug_field = NULL;
8804 #include <inttypes.h>
8856 size_t have = e->end - e->ptr;
8865 e->overflow += (
len - have);
8876 size_t have = e->end - e->ptr;
8887 e->overflow += (
n - have);
8894 if (nanos == 0)
return;
8895 if (nanos < 0 || nanos >= 1000000000) {
8896 jsonenc_err(e,
"error formatting timestamp as JSON: invalid nanos");
8899 while (nanos % 1000 == 0) {
8913 int L,
N,
I, J, K, hour,
min, sec;
8917 "error formatting timestamp as JSON: minimum acceptable value "
8918 "is 0001-01-01T00:00:00Z");
8919 }
else if (
seconds > 253402300799) {
8921 "error formatting timestamp as JSON: maximum acceptable value "
8922 "is 9999-12-31T23:59:59Z");
8931 L =
L - (146097 *
N + 3) / 4;
8932 I = 4000 * (
L + 1) / 1461001;
8933 L =
L - 1461 *
I / 4 + 31;
8935 K =
L - 2447 * J / 80;
8938 I = 100 * (
N - 49) +
I +
L;
8956 (
seconds < 0) != (nanos < 0)) {
8987 static const char base64[] =
8988 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
8989 const unsigned char *
ptr = (
unsigned char*)
str.data;
8996 buf[0] = base64[
ptr[0] >> 2];
8997 buf[1] = base64[((
ptr[0] & 0x3) << 4) | (
ptr[1] >> 4)];
8998 buf[2] = base64[((
ptr[1] & 0xf) << 2) | (
ptr[2] >> 6)];
8999 buf[3] = base64[
ptr[2] & 0x3f];
9006 buf[0] = base64[
ptr[0] >> 2];
9007 buf[1] = base64[((
ptr[0] & 0x3) << 4) | (
ptr[1] >> 4)];
9008 buf[2] = base64[(
ptr[1] & 0xf) << 2];
9013 buf[0] = base64[
ptr[0] >> 2];
9014 buf[1] = base64[((
ptr[0] & 0x3) << 4)];
9025 const char *
ptr =
str.data;
9072 if (val == INFINITY) {
9074 }
else if (val == -INFINITY) {
9076 }
else if (val != val) {
9087 for (
char *
end = e->ptr;
p <
end;
p++) {
9088 if (*
p ==
',') *
p =
'.';
9107 jsonenc_err(e,
"Tried to encode Any, but no symtab was provided");
9110 if (
type_url.size == 0)
goto badurl;
9180 if (
ch >=
'A' &&
ch <=
'Z') {
9181 jsonenc_err(e,
"Field mask element may not have upper-case letter.");
9182 }
else if (
ch ==
'_') {
9183 if (
ptr ==
end - 1 || *(
ptr + 1) <
'a' || *(
ptr + 1) >
'z') {
9184 jsonenc_err(e,
"Underscore must be followed by a lowercase letter.");
9205 for (
i = 0;
i <
n;
i++) {
9469 for (
i = 0;
i <
n;
i++) {
9491 size_t ret = e->ptr - e->buf + e->overflow;
9494 if (e->ptr == e->end) e->ptr--;
9511 e.ext_pool = ext_pool;
9515 if (setjmp(e.err))
return -1;
9527 #undef UPB_READ_ONEOF
9528 #undef UPB_WRITE_ONEOF
9529 #undef UPB_MAPTYPE_STRING
9532 #undef UPB_ALIGN_DOWN
9533 #undef UPB_ALIGN_MALLOC
9537 #undef UPB_FORCEINLINE
9546 #undef UPB_UNREACHABLE
9551 #undef UPB_FASTTABLE_SUPPORTED
9552 #undef UPB_FASTTABLE
9553 #undef UPB_FASTTABLE_INIT
9554 #undef UPB_POISON_MEMORY_REGION
9555 #undef UPB_UNPOISON_MEMORY_REGION
const upb_enumdef * upb_fielddef_enumsubdef(const upb_fielddef *f)
static upb_msgval jsondec_enum(jsondec *d, const upb_fielddef *f)
int cmp_fields(const void *p1, const void *p2)
static const upb_msglayout *const google_protobuf_UninterpretedOption_submsgs[1]
static const size_t memblock_reserve
uint32_t upb_fielddef_number(const upb_fielddef *f)
static const upb_msglayout_field google_protobuf_GeneratedCodeInfo__fields[1]
union upb_map_entry::@434 k
static const upb_msgdef * jsondec_typeurl(jsondec *d, upb_msg *msg, const upb_msgdef *m)
std::chrono::duration< std::int_fast64_t > seconds
bool upb_strtable_insert(upb_strtable *t, const char *k, size_t len, upb_value v, upb_arena *a)
upb_fielddef * upb_msg_iter_field(const upb_msg_field_iter *iter)
static const double MIN_DENSITY
static const upb_msglayout * layouts[27]
upb_arena * _upb_symtab_arena(const upb_symtab *s)
UPB_INLINE int32_t google_protobuf_FieldDescriptorProto_oneof_index(const google_protobuf_FieldDescriptorProto *msg)
bool upb_decode(const char *buf, size_t size, void *msg, const upb_msglayout *l, upb_arena *arena)
UPB_INLINE int _upb_lg2ceilsize(int x)
static const char * decode_tomsg(upb_decstate *d, const char *ptr, upb_msg *msg, upb_msglayout const *const *submsgs, const upb_msglayout_field *field, wireval *val, int op)
bool upb_inttable_lookup(const upb_inttable *t, uintptr_t key, upb_value *v)
static const unsigned fixed32_ok
upb_descriptortype_t upb_fielddef_descriptortype(const upb_fielddef *f)
UPB_INLINE void * upb_arena_malloc(upb_arena *a, size_t size)
static void jsondec_objend(jsondec *d)
upb_strview upb_strtable_iter_key(const upb_strtable_iter *i)
static bool isfull(upb_table *t)
int __cdecl vsnprintf(char *buffer, size_t count, const char *format, va_list argptr)
UPB_INLINE void _upb_clearhas_field(const upb_msg *msg, const upb_msglayout_field *f)
const upb_filedef * upb_symtab_lookupfile(const upb_symtab *s, const char *name)
int upb_enumdef_numvals(const upb_enumdef *e)
UPB_INLINE bool google_protobuf_FieldDescriptorProto_proto3_optional(const google_protobuf_FieldDescriptorProto *msg)
static upb_tabval * inttable_val(upb_inttable *t, uintptr_t key)
upb_symtab * upb_symtab_new(void)
static void jsonenc_listvalue(jsonenc *e, const upb_msg *msg, const upb_msgdef *m)
const upb_msglayout google_protobuf_FieldDescriptorProto_msginit
const upb_fielddef * upb_oneofdef_itof(const upb_oneofdef *o, uint32_t num)
static UPB_FORCEINLINE bool decode_tryfastdispatch(upb_decstate *d, const char **ptr, upb_msg *msg, const upb_msglayout *layout)
static upb_tabent * findentry_mutable(upb_table *t, lookupkey_t key, uint32_t hash, eqlfunc_t *eql)
size_t upb_inttable_count(const upb_inttable *t)
static void encode_double(upb_encstate *e, double d)
const upb_msglayout google_protobuf_EnumOptions_msginit
static uint64_t Wyhash(const void *data, size_t len, uint64_t seed, const uint64_t salt[])
static bool upb_arena_allocblock(upb_arena *a, size_t size)
UPB_INLINE int _upb_lg2ceil(int x)
static void jsondec_resize(jsondec *d, char **buf, char **end, char **buf_end)
const upb_enumdef * upb_symtab_lookupenum(const upb_symtab *s, const char *sym)
static upb_msgval jsondec_uint(jsondec *d, const upb_fielddef *f)
UPB_INLINE upb_StringView const * google_protobuf_FileDescriptorProto_dependency(const google_protobuf_FileDescriptorProto *msg, size_t *len)
static const upb_msglayout *const google_protobuf_ServiceOptions_submsgs[1]
const UPB_INLINE google_protobuf_FieldOptions * google_protobuf_FieldDescriptorProto_options(const google_protobuf_FieldDescriptorProto *msg)
const upb_msglayout_field * fields
static UPB_NOINLINE void encode_longvarint(upb_encstate *e, uint64_t val)
static void jsonenc_msgfields(jsonenc *e, const upb_msg *msg, const upb_msgdef *m, bool first)
double upb_fielddef_defaultdouble(const upb_fielddef *f)
static bool streql(upb_tabkey k1, lookupkey_t k2)
bool upb_msg_oneof_iter_isequal(const upb_msg_oneof_iter *iter1, const upb_msg_oneof_iter *iter2)
bool upb_enumdef_ntoi(const upb_enumdef *def, const char *name, size_t len, int32_t *num)
upb_fielddef * upb_oneof_iter_field(const upb_oneof_iter *iter)
static int field_number_cmp(const void *p1, const void *p2)
bool upb_fielddef_checktype(int32_t type)
void _upb_msg_clear(upb_msg *msg, const upb_msglayout *l)
static const char _upb_fieldtype_to_sizelg2[12]
bool upb_json_decode(const char *buf, size_t size, upb_msg *msg, const upb_msgdef *m, const upb_symtab *any_pool, int options, upb_arena *arena, upb_status *status)
int upb_msgdef_oneofcount(const upb_msgdef *m)
@ UPB_WELLKNOWN_STRINGVALUE
void * _upb_arena_slowmalloc(upb_arena *a, size_t size)
@ UPB_WELLKNOWN_DOUBLEVALUE
const upb_array * array_val
UPB_INLINE uintptr_t _upb_array_tagptr(void *ptr, int elem_size_lg2)
return memset(p, 0, total)
int upb_symtab_filecount(const upb_symtab *s)
bool upb_inttable_init(upb_inttable *t, upb_arena *a)
static void encode_scalar(upb_encstate *e, const void *_field_mem, const upb_msglayout *m, const upb_msglayout_field *f, bool skip_zero_value)
static const int8_t delim_ops[37]
const grpc_generator::File * file
upb_fieldtype_t upb_fielddef_type(const upb_fielddef *f)
#define UPB_SIZE(size32, size64)
static const upb_msglayout *const google_protobuf_EnumDescriptorProto_submsgs[3]
@ UPB_DESCRIPTOR_TYPE_STRING
static void fill_fieldlayout(upb_msglayout_field *field, const upb_fielddef *f)
static const char * decode_readstr(upb_decstate *d, const char *ptr, int size, upb_strview *str)
UPB_INLINE bool google_protobuf_FieldOptions_lazy(const google_protobuf_FieldOptions *msg)
uint64_t upb_fielddef_defaultuint64(const upb_fielddef *f)
void upb_cleanup_func(void *ud)
const upb_fielddef * exts
#define UPB_STRVIEW_INIT(ptr, len)
upb_wellknowntype_t well_known_type
const upb_msgdef * msgdef
UPB_INLINE bool upb_tabent_isempty(const upb_tabent *e)
const char * upb_enumdef_iton(const upb_enumdef *def, int32_t num)
bool upb_msg_field_iter_isequal(const upb_msg_field_iter *iter1, const upb_msg_field_iter *iter2)
const upb_msgdef * upb_symtab_lookupmsg2(const upb_symtab *s, const char *sym, size_t len)
bool upb_fielddef_issubmsg(const upb_fielddef *f)
static const upb_msglayout *const google_protobuf_MethodOptions_submsgs[1]
static void encode_map(upb_encstate *e, const upb_msg *msg, const upb_msglayout *m, const upb_msglayout_field *f)
const upb_filedef * upb_msgdef_file(const upb_msgdef *m)
static bool upb_arrhas(upb_tabval key)
bool upb_msgdef_isnumberwrapper(const upb_msgdef *m)
const char * upb_enum_iter_name(upb_enum_iter *iter)
int jsondec_epochdays(int y, int m, int d)
const upb_filedef * upb_symtab_lookupfile2(const upb_symtab *s, const char *name, size_t len)
const char * upb_filedef_phpnamespace(const upb_filedef *f)
static void assign_msg_wellknowntype(upb_msgdef *m)
UPB_INLINE uint64_t _upb_be_swap64(uint64_t val)
const upb_fielddef * upb_msg_whichoneof(const upb_msg *msg, const upb_oneofdef *o)
UPB_INLINE void decode_poplimit(upb_decstate *d, const char *ptr, int saved_delta)
static const upb_msglayout_field google_protobuf_UninterpretedOption_NamePart__fields[2]
struct google_protobuf_EnumValueDescriptorProto google_protobuf_EnumValueDescriptorProto
static bool realloc_internal(upb_msg *msg, size_t need, upb_arena *arena)
static const uint8_t desctype_to_elem_size_lg2[]
static int64_t jsondec_unixtime(int y, int m, int d, int h, int min, int s)
static const char * jsondec_buftoint64(jsondec *d, const char *ptr, const char *end, int64_t *val)
union upb_map_entry::@435 v
int upb_msgdef_realoneofcount(const upb_msgdef *m)
void * _upb_array_resize_fallback(upb_array **arr_ptr, size_t size, int elem_size_lg2, upb_arena *arena)
const upb_filedef * upb_symtab_addfile(upb_symtab *s, const google_protobuf_FileDescriptorProto *file_proto, upb_status *status)
static unsigned int jsondec_base64_tablelookup(const char ch)
const upb_msgdef * upb_fielddef_containingtype(const upb_fielddef *f)
UPB_INLINE upb_StringView google_protobuf_FieldDescriptorProto_default_value(const google_protobuf_FieldDescriptorProto *msg)
void upb_msg_oneof_next(upb_msg_oneof_iter *iter)
static int copy(grpc_slice_buffer *input, grpc_slice_buffer *output)
static void create_msgdef(symtab_addctx *ctx, const char *prefix, const google_protobuf_DescriptorProto *msg_proto)
static const upb_msglayout_field google_protobuf_FileDescriptorProto__fields[12]
static void jsondec_push(jsondec *d)
const upb_fielddef ** fields
UPB_INLINE void * _upb_map_next(const upb_map *map, size_t *iter)
static const upb_msglayout_field google_protobuf_GeneratedCodeInfo_Annotation__fields[4]
static void jsondec_arrend(jsondec *d)
static const uint8_t seed[20]
static UPB_NORETURN void encode_err(upb_encstate *e)
UPB_INLINE upb_alloc * upb_arena_alloc(upb_arena *a)
static const upb_msglayout_field google_protobuf_MethodDescriptorProto__fields[6]
static void parse_default(symtab_addctx *ctx, const char *str, size_t len, upb_fielddef *f)
const upb_fielddef * upb_msgdef_ntof(const upb_msgdef *m, const char *name, size_t len)
bool upb_fielddef_checkdescriptortype(int32_t type)
static int jsondec_rawpeek(jsondec *d)
void upb_symtab_free(upb_symtab *s)
static upb_msgval jsondec_int(jsondec *d, const upb_fielddef *f)
@ UPB_WIRE_TYPE_END_GROUP
static void check(upb_inttable *t)
const UPB_INLINE google_protobuf_EnumValueDescriptorProto *const * google_protobuf_EnumDescriptorProto_value(const google_protobuf_EnumDescriptorProto *msg, size_t *len)
#define UPB_ALIGN_UP(size, align)
static void jsondec_field(jsondec *d, upb_msg *msg, const upb_msgdef *m)
void upb_map_clear(upb_map *map)
UPB_INLINE void _upb_sethas_field(const upb_msg *msg, const upb_msglayout_field *f)
static const upb_msglayout *const google_protobuf_FileOptions_submsgs[1]
void upb_msg_field_iter_setdone(upb_msg_field_iter *iter)
@ UPB_WELLKNOWN_UNSPECIFIED
uint32_t upb_fielddef_defaultuint32(const upb_fielddef *f)
static const upb_msglayout *const google_protobuf_EnumValueDescriptorProto_submsgs[1]
bool upb_msgdef_iswrapper(const upb_msgdef *m)
bool upb_msgdef_lookupname(const upb_msgdef *m, const char *name, size_t len, const upb_fielddef **f, const upb_oneofdef **o)
static void create_oneofdef(symtab_addctx *ctx, upb_msgdef *m, const google_protobuf_OneofDescriptorProto *oneof_proto)
int upb_msgdef_fieldcount(const upb_msgdef *m)
static upb_msgval _upb_msg_getraw(const upb_msg *msg, const upb_fielddef *f)
@ UPB_DESCRIPTOR_TYPE_FIXED32
bool upb_array_append(upb_array *arr, upb_msgval val, upb_arena *arena)
struct _upb_tabent upb_tabent
static const upb_msglayout *const google_protobuf_FieldOptions_submsgs[1]
static void set_default_default(symtab_addctx *ctx, upb_fielddef *f)
mem_block * freelist_tail
bool upb_msg_next(const upb_msg *msg, const upb_msgdef *m, const upb_symtab *ext_pool, const upb_fielddef **out_f, upb_msgval *out_val, size_t *iter)
UPB_INLINE upb_StringView google_protobuf_DescriptorProto_name(const google_protobuf_DescriptorProto *msg)
void upb_inttable_compact(upb_inttable *t, upb_arena *a)
UPB_INLINE upb_StringView google_protobuf_FileOptions_php_namespace(const google_protobuf_FileOptions *msg)
@ UPB_DESCRIPTOR_TYPE_SFIXED64
static const upb_msglayout_field google_protobuf_SourceCodeInfo__fields[1]
upb_msgval upb_msg_get(const upb_msg *msg, const upb_fielddef *f)
static void symtab_add(symtab_addctx *ctx, const char *name, upb_value v)
static void encode_mapentry(upb_encstate *e, uint32_t number, const upb_msglayout *layout, const upb_map_entry *ent)
const UPB_INLINE google_protobuf_FileOptions * google_protobuf_FileDescriptorProto_options(const google_protobuf_FileDescriptorProto *msg)
static void jsondec_wsch(jsondec *d, char ch)
static const upb_msglayout_field * upb_find_field(const upb_msglayout *l, uint32_t field_number, int *last_field_index)
static const int8_t varint_ops[19]
UPB_INLINE bool _upb_map_get(const upb_map *map, const void *key, size_t key_size, void *val, size_t val_size)
static void jsondec_struct(jsondec *d, upb_msg *msg, const upb_msgdef *m)
const char * upb_enumdef_name(const upb_enumdef *e)
static struct test_ctx ctx
static bool lookup(const upb_table *t, lookupkey_t key, upb_value *v, uint32_t hash, eqlfunc_t *eql)
UPB_INLINE char * upb_tabstr(upb_tabkey key, uint32_t *len)
bool upb_strtable_resize(upb_strtable *t, size_t size_lg2, upb_arena *a)
bool upb_msg_has(const upb_msg *msg, const upb_fielddef *f)
static bool jsondec_isvalue(const upb_fielddef *f)
static void encode_fixedarray(upb_encstate *e, const upb_array *arr, size_t elem_size, uint32_t tag)
int upb_msgdef_numrealoneofs(const upb_msgdef *m)
int32_t upb_enum_iter_number(upb_enum_iter *iter)
@ UPB_DESCRIPTOR_TYPE_GROUP
static void jsonenc_mapkey(jsonenc *e, upb_msgval val, const upb_fielddef *f)
static const upb_msglayout *const google_protobuf_MethodDescriptorProto_submsgs[1]
static upb_array * getorcreate_array(upb_array **arr_ptr, int elem_size_lg2, upb_arena *arena)
UPB_INLINE int32_t google_protobuf_FieldDescriptorProto_number(const google_protobuf_FieldDescriptorProto *msg)
@ UPB_DESCRIPTOR_TYPE_BYTES
UPB_INLINE uintptr_t _upb_tag_arrptr(void *ptr, int elem_size_lg2)
union upb_fielddef::@207 sub
upb_msg_ext * _upb_msg_getorcreateext(upb_msg *msg, const upb_msglayout_ext *e, upb_arena *arena)
UPB_INLINE intptr_t decode_totable(const upb_msglayout *tablep)
const upb_msg_ext * _upb_msg_getext(const upb_msg *msg, const upb_msglayout_ext *e)
uint32_t upb_oneofdef_index(const upb_oneofdef *o)
upb_arena * arena_initslow(void *mem, size_t n, upb_alloc *alloc)
bool _upb_mapsorter_pushmap(_upb_mapsorter *s, upb_descriptortype_t key_type, const upb_map *map, _upb_sortedmap *sorted)
static uint32_t upb_msglayout_place(upb_msglayout *l, size_t size)
static const UPB_FORCEINLINE char * decode_varint64(upb_decstate *d, const char *ptr, uint64_t *val)
const UPB_INLINE upb_msglayout * decode_totablep(intptr_t table)
static UPB_NORETURN void jsondec_errf(jsondec *d, const char *fmt,...)
void upb_status_clear(upb_status *status)
static int64_t jsondec_strtoint64(jsondec *d, upb_strview str)
static const upb_msglayout_field google_protobuf_MessageOptions__fields[5]
#define UPB_PTR_AT(msg, ofs, type)
static void jsondec_false(jsondec *d)
UPB_INLINE upb_StringView google_protobuf_FieldDescriptorProto_extendee(const google_protobuf_FieldDescriptorProto *msg)
const UPB_INLINE google_protobuf_OneofDescriptorProto *const * google_protobuf_DescriptorProto_oneof_decl(const google_protobuf_DescriptorProto *msg, size_t *len)
#define UPB_PB_VARINT_MAX_LEN
static upb_tabval * mutable_array(upb_inttable *t)
struct google_protobuf_OneofDescriptorProto google_protobuf_OneofDescriptorProto
static bool decode_top(struct upb_decstate *d, const char *buf, void *msg, const upb_msglayout *l)
#define UPB_PRINTF(str, first_vararg)
static size_t jsonenc_nullz(jsonenc *e, size_t size)
void upb_status_seterrf(upb_status *status, const char *fmt,...)
static upb_msgval jsondec_double(jsondec *d, const upb_fielddef *f)
UPB_INLINE upb_StringView google_protobuf_EnumValueDescriptorProto_name(const google_protobuf_EnumValueDescriptorProto *msg)
static const upb_msglayout_field google_protobuf_DescriptorProto_ReservedRange__fields[2]
static uint64_t jsondec_strtouint64(jsondec *d, upb_strview str)
UPB_INLINE uint32_t _upb_getoneofcase_field(const upb_msg *msg, const upb_msglayout_field *f)
static double jsondec_number(jsondec *d)
uintptr_t cleanup_metadata
static void encode_scalarfield(upb_encstate *e, const char *msg, const upb_msglayout *m, const upb_msglayout_field *f)
static size_t jsondec_base64(jsondec *d, upb_strview str)
const char * upb_fielddef_jsonname(const upb_fielddef *f)
void upb_msg_set(upb_msg *msg, const upb_fielddef *f, upb_msgval val, upb_arena *a)
static const upb_msglayout_field google_protobuf_UninterpretedOption__fields[7]
const upb_msglayout google_protobuf_ServiceDescriptorProto_msginit
static void jsonenc_printf(jsonenc *e, const char *fmt,...)
const upb_msglayout google_protobuf_SourceCodeInfo_Location_msginit
const upb_oneofdef * upb_msgdef_ntoo(const upb_msgdef *m, const char *name, size_t len)
static const upb_tabent * upb_getentry(const upb_table *t, uint32_t hash)
void upb_msg_clear(upb_msg *msg, const upb_msgdef *m)
bool upb_fielddef_isseq(const upb_fielddef *f)
static const upb_msglayout *const google_protobuf_GeneratedCodeInfo_submsgs[1]
static void encode_float(upb_encstate *e, float d)
static const upb_msglayout_field google_protobuf_EnumValueDescriptorProto__fields[3]
bool _upb_msg_discardunknown(upb_msg *msg, const upb_msgdef *m, int depth)
static const void * unpack_def(upb_value v, upb_deftype_t type)
static char * makejsonname(symtab_addctx *ctx, const char *name)
static int jsondec_peek(jsondec *d)
struct google_protobuf_FieldDescriptorProto google_protobuf_FieldDescriptorProto
static const upb_msglayout *const google_protobuf_FileDescriptorProto_submsgs[6]
static const upb_msglayout_field google_protobuf_FieldOptions__fields[7]
grpc_core::ScopedArenaPtr arena
static UPB_NOINLINE decode_vret decode_longvarint64(const char *ptr, uint64_t val)
void _upb_msg_discardunknown_shallow(upb_msg *msg)
static void jsondec_listvalue(jsondec *d, upb_msg *msg, const upb_msgdef *m)
static void jsonenc_msgfield(jsonenc *e, const upb_msg *msg, const upb_msgdef *m)
upb_syntax_t upb_filedef_syntax(const upb_filedef *f)
static void arena_dofree(upb_arena *a)
bool upb_inttable_iter_isequal(const upb_inttable_iter *i1, const upb_inttable_iter *i2)
const char * upb_msg_getunknown(const upb_msg *msg, size_t *len)
@ UPB_WELLKNOWN_UINT32VALUE
const char * upb_filedef_package(const upb_filedef *f)
static UPB_NORETURN void decode_err(upb_decstate *d)
@ UPB_WELLKNOWN_UINT64VALUE
const upb_msglayout google_protobuf_ServiceOptions_msginit
void upb_status_vseterrf(upb_status *status, const char *fmt, va_list args)
const char * upb_msgdef_fullname(const upb_msgdef *m)
static bool jsondec_tryparsech(jsondec *d, char ch)
static void jsondec_wellknown(jsondec *d, upb_msg *msg, const upb_msgdef *m)
static const char * jsondec_buftouint64(jsondec *d, const char *ptr, const char *end, uint64_t *val)
static void extreg_key(char *buf, const upb_msglayout *l, uint32_t fieldnum)
void upb_enum_next(upb_enum_iter *iter)
bool upb_fielddef_haspresence(const upb_fielddef *f)
UPB_INLINE bool upb_strtable_lookup(const upb_strtable *t, const char *key, upb_value *v)
@ UPB_WIRE_TYPE_DELIMITED
const char * upb_msgdef_name(const upb_msgdef *m)
UPB_INLINE upb_StringView google_protobuf_EnumDescriptorProto_name(const google_protobuf_EnumDescriptorProto *msg)
for(map_begin_internal(intern, &it);!map_done(&it);map_next(&it))
UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_extendee(const google_protobuf_FieldDescriptorProto *msg)
void upb_array_set(upb_array *arr, size_t i, upb_msgval val)
bool upb_inttable_remove(upb_inttable *t, uintptr_t key, upb_value *val)
const upb_msglayout_field * upb_fielddef_layout(const upb_fielddef *f)
static void jsondec_fieldmask(jsondec *d, upb_msg *msg, const upb_msgdef *m)
static const UPB_FORCEINLINE char * decode_tosubmsg(upb_decstate *d, const char *ptr, upb_msg *submsg, upb_msglayout const *const *submsgs, const upb_msglayout_field *field, int size)
const char * upb_fielddef_name(const upb_fielddef *f)
UPB_INLINE void * _upb_array_ptr(upb_array *arr)
@ UPB_JSONDEC_IGNOREUNKNOWN
UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_oneof_index(const google_protobuf_FieldDescriptorProto *msg)
static bool upb_isbetween(char c, char low, char high)
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
static void upb_arena_addblock(upb_arena *a, upb_arena *root, void *ptr, size_t size)
#define UPB_PTRADD(ptr, ofs)
static const upb_msglayout_field google_protobuf_OneofDescriptorProto__fields[2]
static void jsondec_timestamp(jsondec *d, upb_msg *msg, const upb_msgdef *m)
static const uint8_t desctype_to_mapsize[]
UPB_NORETURN static UPB_NOINLINE void symtab_oomerr(symtab_addctx *ctx)
@ UPB_DESCRIPTOR_TYPE_MESSAGE
const upb_msglayout google_protobuf_SourceCodeInfo_msginit
static void encode_fixed32(upb_encstate *e, uint32_t val)
static const unsigned fixed64_ok
static uint32_t inthash(upb_tabkey key)
const upb_msglayout google_protobuf_MethodOptions_msginit
bool upb_inttable_replace(upb_inttable *t, uintptr_t key, upb_value val)
static const void * symtab_resolve(symtab_addctx *ctx, const upb_fielddef *f, const char *base, upb_strview sym, upb_deftype_t type)
upb_wellknowntype_t upb_msgdef_wellknowntype(const upb_msgdef *m)
UPB_INLINE bool _upb_map_set(upb_map *map, const void *key, size_t key_size, void *val, size_t val_size, upb_arena *a)
static upb_strview jsondec_string(jsondec *d)
void upb_oneof_next(upb_oneof_iter *iter)
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
const upb_msglayout google_protobuf_EnumDescriptorProto_msginit
UPB_INLINE bool google_protobuf_FileOptions_has_php_namespace(const google_protobuf_FileOptions *msg)
static uint64_t WyhashMix(uint64_t v0, uint64_t v1)
static size_t upb_msg_sizeof(const upb_msglayout *l)
const char * upb_enumdef_fullname(const upb_enumdef *e)
UPB_INLINE void * upb_realloc(upb_alloc *alloc, void *ptr, size_t oldsize, size_t size)
upb_arena * upb_arena_init(void *mem, size_t n, upb_alloc *alloc)
static void jsondec_skipval(jsondec *d)
static UPB_NOINLINE void encode_growbuffer(upb_encstate *e, size_t bytes)
const upb_msg_ext * _upb_msg_getexts(const upb_msg *msg, size_t *count)
static void * tag(intptr_t t)
void upb_arena_free(upb_arena *a)
static void jsonenc_fieldmask(jsonenc *e, const upb_msg *msg, const upb_msgdef *m)
UPB_INLINE int32_t google_protobuf_FieldDescriptorProto_label(const google_protobuf_FieldDescriptorProto *msg)
static uint32_t UnalignedLoad32(const void *p)
RefCountedPtr< grpc_tls_certificate_provider > root
struct google_protobuf_FieldOptions google_protobuf_FieldOptions
bool upb_oneofdef_issynthetic(const upb_oneofdef *o)
bool eqlfunc_t(upb_tabkey k1, lookupkey_t k2)
static const upb_msglayout_field google_protobuf_EnumDescriptorProto_EnumReservedRange__fields[2]
static bool jsondec_streql(upb_strview str, const char *lit)
void upb_msg_field_next(upb_msg_field_iter *iter)
static void jsonenc_scalar(jsonenc *e, upb_msgval val, const upb_fielddef *f)
@ UPB_WELLKNOWN_FLOATVALUE
const upb_fielddef * upb_oneofdef_field(const upb_oneofdef *o, int i)
bool _upb_decode(const char *buf, size_t size, void *msg, const upb_msglayout *l, const upb_extreg *extreg, int options, upb_arena *arena)
bool upb_msg_discardunknown(upb_msg *msg, const upb_msgdef *m, int maxdepth)
upb_msgval upb_array_get(const upb_array *arr, size_t i)
void upb_oneof_begin(upb_oneof_iter *iter, const upb_oneofdef *o)
UPB_INLINE upb_StringView google_protobuf_FileDescriptorProto_syntax(const google_protobuf_FileDescriptorProto *msg)
int upb_msgdef_numoneofs(const upb_msgdef *m)
bool _upb_array_realloc(upb_array *arr, size_t min_size, upb_arena *arena)
UPB_INLINE bool decode_verifyutf8_inl(const char *buf, int len)
static void insert(upb_table *t, lookupkey_t key, upb_tabkey tabkey, upb_value val, uint32_t hash, hashfunc_t *hashfunc, eqlfunc_t *eql)
UPB_INLINE bool google_protobuf_FileDescriptorProto_has_name(const google_protobuf_FileDescriptorProto *msg)
static UPB_NORETURN void jsonenc_errf(jsonenc *e, const char *fmt,...)
static const UPB_FORCEINLINE char * decode_group(upb_decstate *d, const char *ptr, upb_msg *submsg, const upb_msglayout *subl, uint32_t number)
static const UPB_FORCEINLINE char * decode_tag(upb_decstate *d, const char *ptr, uint32_t *val)
const UPB_INLINE google_protobuf_FieldDescriptorProto *const * google_protobuf_FileDescriptorProto_extension(const google_protobuf_FileDescriptorProto *msg, size_t *len)
@ UPB_DESCRIPTOR_TYPE_SINT32
static uint32_t upb_inthash(uintptr_t key)
static const upb_msglayout *const google_protobuf_DescriptorProto_submsgs[7]
static void check_ident(symtab_addctx *ctx, upb_strview name, bool full)
@ UPB_WELLKNOWN_TIMESTAMP
bool _upb_symtab_loaddefinit(upb_symtab *s, const upb_def_init *init)
bool upb_strtable_init(upb_strtable *t, size_t expected_size, upb_arena *a)
union upb_fielddef::@206 defaultval
static void upb_status_setoom(upb_status *status)
static void jsonenc_msg(jsonenc *e, const upb_msg *msg, const upb_msgdef *m)
static void jsondec_tomsg(jsondec *d, upb_msg *msg, const upb_msgdef *m)
UPB_INLINE void _upb_map_fromvalue(upb_value val, void *out, size_t size)
static char * jsondec_partialbase64(jsondec *d, const char *ptr, const char *end, char *out)
upb_msgval upb_mapiter_key(const upb_map *map, size_t iter)
static bool streql_view(upb_strview view, const char *b)
const upb_filedef * upb_enumdef_file(const upb_enumdef *e)
static int _upb_mapsorter_cmpu64(const void *_a, const void *_b)
bool upb_fielddef_isprimitive(const upb_fielddef *f)
UPB_INLINE upb_StringView google_protobuf_OneofDescriptorProto_name(const google_protobuf_OneofDescriptorProto *msg)
static upb_msgval jsondec_value(jsondec *d, const upb_fielddef *f)
UPB_INLINE void _upb_map_clear(upb_map *map)
static void jsondec_object(jsondec *d, upb_msg *msg, const upb_msgdef *m)
unsigned __int64 uint64_t
static bool jsondec_isnullvalue(const upb_fielddef *f)
static upb_tabent * emptyent(upb_table *t, upb_tabent *e)
static int _upb_mapsorter_cmpi32(const void *_a, const void *_b)
#define UPB_ALIGN_OF(type)
static uint32_t table_hash(const char *p, size_t n)
UPB_INLINE size_t _upb_map_size(const upb_map *map)
static const upb_msglayout *const google_protobuf_OneofDescriptorProto_submsgs[1]
static size_t begin(const upb_table *t)
static const upb_msglayout *const google_protobuf_SourceCodeInfo_submsgs[1]
const google_protobuf_FieldDescriptorProto * unresolved
int def(FILE *source, FILE *dest, int level)
const upb_msglayout google_protobuf_ExtensionRangeOptions_msginit
@ UPB_DESCRIPTOR_TYPE_UINT32
void upb_msg_field_begin(upb_msg_field_iter *iter, const upb_msgdef *m)
static bool streql2(const char *a, size_t n, const char *b)
const UPB_INLINE google_protobuf_FieldDescriptorProto *const * google_protobuf_DescriptorProto_extension(const google_protobuf_DescriptorProto *msg, size_t *len)
static const upb_msglayout *const google_protobuf_MessageOptions_submsgs[1]
upb_descriptortype_t type_
bool upb_strtable_remove(upb_strtable *t, const char *key, size_t len, upb_value *val)
const upb_msglayout google_protobuf_EnumValueDescriptorProto_msginit
struct google_protobuf_EnumDescriptorProto google_protobuf_EnumDescriptorProto
UPB_INLINE upb_msg * _upb_msg_new_inl(const upb_msglayout *l, upb_arena *a)
@ UPB_DESCRIPTOR_TYPE_FIXED64
void upb_inttable_next(upb_inttable_iter *iter)
UPB_INLINE upb_arena * upb_arena_new(void)
float upb_fielddef_defaultfloat(const upb_fielddef *f)
const struct upb_msglayout *const * submsgs
UPB_INLINE upb_StringView google_protobuf_FileOptions_php_class_prefix(const google_protobuf_FileOptions *msg)
const upb_fielddef * fields
static uintptr_t upb_cleanup_metadata(uint32_t *cleanup, bool has_initial_block)
static const size_t overhead
const upb_symtab * upb_filedef_symtab(const upb_filedef *f)
struct upb_arena upb_arena
UPB_INLINE uint32_t fastdecode_loadtag(const char *ptr)
const char * fastdecode_err(upb_decstate *d)
bool upb_fielddef_packed(const upb_fielddef *f)
@ UPB_DESCRIPTOR_TYPE_FLOAT
const upb_msglayout google_protobuf_MessageOptions_msginit
struct cleanup_ent cleanup_ent
const upb_oneofdef * upb_fielddef_containingoneof(const upb_fielddef *f)
static void jsondec_skipws(jsondec *d)
static char * strviewdup(symtab_addctx *ctx, upb_strview view)
static const char *const mon[12]
@ UPB_DESCRIPTOR_TYPE_SINT64
UPB_INLINE void upb_gfree(void *ptr)
char * upb_encode_ex(const void *msg, const upb_msglayout *l, int options, upb_arena *arena, size_t *size)
static int _upb_mapsorter_cmpstr(const void *_a, const void *_b)
static const double MAX_LOAD
UPB_INLINE bool google_protobuf_FileDescriptorProto_has_package(const google_protobuf_FileDescriptorProto *msg)
const upb_symtab * ext_pool
static void jsondec_entrysep(jsondec *d)
bool upb_fielddef_isstring(const upb_fielddef *f)
uint32_t field_rank(const upb_fielddef *f)
static const char * decode_tomap(upb_decstate *d, const char *ptr, upb_msg *msg, upb_msglayout const *const *submsgs, const upb_msglayout_field *field, wireval *val)
#define UPB_STRVIEW_FORMAT
static void make_layout(symtab_addctx *ctx, const upb_msgdef *m)
static void jsonenc_stringbody(jsonenc *e, upb_strview str)
bool upb_arena_addcleanup(upb_arena *a, void *ud, upb_cleanup_func *func)
void upb_strtable_next(upb_strtable_iter *i)
#define UPB_STRVIEW_ARGS(view)
UPB_INLINE upb_fieldmode _upb_getmode(const upb_msglayout_field *field)
static const upb_msglayout_field google_protobuf_SourceCodeInfo_Location__fields[5]
static const upb_msglayout_field google_protobuf_EnumDescriptorProto__fields[5]
static bool upb_isletter(char c)
_W64 unsigned int uintptr_t
static int _upb_mapsorter_cmpbool(const void *_a, const void *_b)
UPB_INLINE size_t _upb_arenahas(upb_arena *a)
const upb_msglayout google_protobuf_MethodDescriptorProto_msginit
static const upb_tabval * inttable_val_const(const upb_inttable *t, uintptr_t key)
static UPB_FORCEINLINE void encode_varint(upb_encstate *e, uint64_t val)
UPB_INLINE void * upb_malloc(upb_alloc *alloc, size_t size)
static uint64_t upb_umul128(uint64_t v0, uint64_t v1, uint64_t *out_high)
UPB_INLINE upb_StringView google_protobuf_FieldDescriptorProto_type_name(const google_protobuf_FieldDescriptorProto *msg)
const upb_msglayout * layout
@ UPB_DEFTYPE_FIELD_JSONNAME
UPB_INLINE bool _upb_sortedmap_next(_upb_mapsorter *s, const upb_map *map, _upb_sortedmap *sorted, upb_map_entry *ent)
const char * upb_filedef_phpprefix(const upb_filedef *f)
const upb_msglayout google_protobuf_FileDescriptorSet_msginit
bool upb_fielddef_checkintfmt(int32_t fmt)
const UPB_INLINE google_protobuf_MessageOptions * google_protobuf_DescriptorProto_options(const google_protobuf_DescriptorProto *msg)
UPB_INLINE bool google_protobuf_FileDescriptorProto_has_syntax(const google_protobuf_FileDescriptorProto *msg)
@ UPB_DESCRIPTOR_TYPE_UINT64
const upb_msglayout google_protobuf_UninterpretedOption_msginit
UPB_INLINE void _upb_mapsorter_popmap(_upb_mapsorter *s, _upb_sortedmap *sorted)
#define UPB_ALIGN_DOWN(size, align)
static int jsondec_tsdigits(jsondec *d, const char **ptr, size_t digits, const char *after)
const upb_msgdef * parent
void qsort(void *a, size_t n, size_t es, int(*cmp)(const void *, const void *))
bool upb_strtable_iter_isequal(const upb_strtable_iter *i1, const upb_strtable_iter *i2)
UPB_INLINE bool _upb_array_resize(upb_array *arr, size_t size, upb_arena *arena)
const upb_msglayout ** layouts
UPB_INLINE bool google_protobuf_FieldOptions_has_packed(const google_protobuf_FieldOptions *msg)
void upb_oneof_iter_setdone(upb_oneof_iter *iter)
static void jsonenc_struct(jsonenc *e, const upb_msg *msg, const upb_msgdef *m)
static const upb_msglayout_field google_protobuf_DescriptorProto_ExtensionRange__fields[3]
const uint64_t kWyhashSalt[5]
UPB_INLINE bool google_protobuf_FileOptions_has_php_class_prefix(const google_protobuf_FileOptions *msg)
static void jsondec_skipdigits(jsondec *d)
UPB_INLINE bool _upb_hasbit_field(const upb_msg *msg, const upb_msglayout_field *f)
UPB_INLINE void _upb_mapsorter_destroy(_upb_mapsorter *s)
int32_t upb_enumdef_default(const upb_enumdef *e)
static void jsonenc_bytes(jsonenc *e, upb_strview str)
int upb_oneofdef_numfields(const upb_oneofdef *o)
const UPB_INLINE google_protobuf_EnumDescriptorProto *const * google_protobuf_FileDescriptorProto_enum_type(const google_protobuf_FileDescriptorProto *msg, size_t *len)
static const char descriptor[7601]
static void jsondec_map(jsondec *d, upb_msg *msg, const upb_fielddef *f)
@ UPB_WELLKNOWN_INT32VALUE
IntAfterTypedTestSuiteP after
const upb_msglayout google_protobuf_EnumValueOptions_msginit
static const upb_msglayout *const google_protobuf_FileDescriptorSet_submsgs[1]
#define UPB_TABVALUE_EMPTY_INIT
static void jsondec_wellknownvalue(jsondec *d, upb_msg *msg, const upb_msgdef *m)
static int log2ceil(uint64_t v)
void upb_msg_oneof_begin(upb_msg_oneof_iter *iter, const upb_msgdef *m)
void upb_enum_begin(upb_enum_iter *i, const upb_enumdef *e)
const upb_oneofdef * upb_msgdef_oneof(const upb_msgdef *m, int i)
bool upb_array_resize(upb_array *arr, size_t size, upb_arena *arena)
const upb_msglayout google_protobuf_FileOptions_msginit
UPB_INLINE upb_StringView google_protobuf_FieldDescriptorProto_json_name(const google_protobuf_FieldDescriptorProto *msg)
@ UPB_DESCRIPTOR_TYPE_DOUBLE
size_t upb_json_encode(const upb_msg *msg, const upb_msgdef *m, const upb_symtab *ext_pool, int options, char *buf, size_t size, upb_status *status)
upb_msgval upb_fielddef_default(const upb_fielddef *f)
static void jsonenc_fieldval(jsonenc *e, const upb_fielddef *f, upb_msgval val, bool *first)
static upb_msgval jsondec_strfield(jsondec *d, const upb_fielddef *f)
static UPB_NORETURN void jsonenc_err(jsonenc *e, const char *msg)
static const char * makefullname(symtab_addctx *ctx, const char *prefix, upb_strview name)
@ UPB_WELLKNOWN_FIELDMASK
UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_json_name(const google_protobuf_FieldDescriptorProto *msg)
bool upb_inttable_sizedinit(upb_inttable *t, size_t asize, int hsize_lg2, upb_arena *a)
const upb_msglayout google_protobuf_DescriptorProto_ExtensionRange_msginit
bool upb_map_delete(upb_map *map, upb_msgval key)
static str_t * newstr(symtab_addctx *ctx, const char *data, size_t len)
static void resolve_fielddef(symtab_addctx *ctx, const char *prefix, upb_fielddef *f)
@ UPB_WELLKNOWN_BYTESVALUE
static size_t upb_roundup_pow2(size_t bytes)
#define UPB_UNREACHABLE()
static upb_msg_internal * upb_msg_getinternal(upb_msg *msg)
static const upb_msglayout_field google_protobuf_FieldDescriptorProto__fields[11]
const struct _upb_tabent * next
static void jsondec_parselit(jsondec *d, const char *lit)
static void jsonenc_duration(jsonenc *e, const upb_msg *msg, const upb_msgdef *m)
const upb_symtab * any_pool
static const upb_msglayout_field google_protobuf_ExtensionRangeOptions__fields[1]
UPB_INLINE void upb_free(upb_alloc *alloc, void *ptr)
static const char * shortname(const char *longname)
static const upb_msglayout_field google_protobuf_MethodOptions__fields[3]
const upb_fielddef * debug_field
bool upb_strtable_lookup2(const upb_strtable *t, const char *key, size_t len, upb_value *v)
const upb_filedef * upb_fielddef_file(const upb_fielddef *f)
const UPB_INLINE google_protobuf_EnumDescriptorProto *const * google_protobuf_DescriptorProto_enum_type(const google_protobuf_DescriptorProto *msg, size_t *len)
static const upb_msglayout *const google_protobuf_DescriptorProto_ExtensionRange_submsgs[1]
GTEST_API_ const char * fmt
static void jsondec_anyfield(jsondec *d, upb_msg *msg, const upb_msgdef *m)
UPB_INLINE uint32_t _upb_be_swap32(uint32_t val)
const UPB_INLINE char * decode_isdonefallback_inl(upb_decstate *d, const char *ptr, int overrun)
UPB_INLINE bool _upb_map_delete(upb_map *map, const void *key, size_t key_size)
static uint8_t upb_msg_fielddefsize(const upb_fielddef *f)
static void count_types_in_msg(const google_protobuf_DescriptorProto *msg_proto, upb_filedef *file)
static bool upb_cleanup_has_initial_block(uintptr_t cleanup_metadata)
void upb_strtable_iter_setdone(upb_strtable_iter *i)
static const upb_filedef * _upb_symtab_addfile(upb_symtab *s, const google_protobuf_FileDescriptorProto *file_proto, const upb_msglayout **layouts, upb_status *status)
UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_type_name(const google_protobuf_FieldDescriptorProto *msg)
@ UPB_DESCRIPTOR_TYPE_SFIXED32
static void encode_fixed64(upb_encstate *e, uint64_t val)
static void jsonenc_array(jsonenc *e, const upb_array *arr, const upb_fielddef *f)
static void * upb_global_allocfunc(upb_alloc *alloc, void *ptr, size_t oldsize, size_t size)
#define UPB_MAPTYPE_STRING
const FieldDescriptor * field
UPB_INLINE void * upb_gmalloc(size_t size)
bool upb_msg_field_done(const upb_msg_field_iter *iter)
int upb_filedef_msgcount(const upb_filedef *f)
upb_msg * upb_msg_new(const upb_msgdef *m, upb_arena *a)
const uint8_t upb_utf8_offsets[]
const upb_oneofdef * oneofs
const upb_fielddef * upb_msgdef_itof(const upb_msgdef *m, uint32_t i)
static void __asan_unpoison_memory_region(const void *addr, size_t size)
static const char * decode_msg(upb_decstate *d, const char *ptr, upb_msg *msg, const upb_msglayout *layout)
bool upb_fielddef_lazy(const upb_fielddef *f)
bool upb_enum_done(upb_enum_iter *iter)
static void * upb_arena_doalloc(upb_alloc *alloc, void *ptr, size_t oldsize, size_t size)
upb_alloc upb_alloc_global
const upb_DefPool * symtab
@ UPB_DESCRIPTOR_TYPE_ENUM
const UPB_INLINE google_protobuf_DescriptorProto *const * google_protobuf_FileDescriptorProto_message_type(const google_protobuf_FileDescriptorProto *msg, size_t *len)
static void jsondec_array(jsondec *d, upb_msg *msg, const upb_fielddef *f)
#define UPB_STATUS_MAX_MESSAGE
UPB_INLINE bool google_protobuf_FieldOptions_packed(const google_protobuf_FieldOptions *msg)
static const upb_msgdef * jsonenc_getanymsg(jsonenc *e, upb_strview type_url)
UPB_INLINE void _upb_mapsorter_init(_upb_mapsorter *s)
static void jsonenc_value(jsonenc *e, const upb_msg *msg, const upb_msgdef *m)
static const upb_msglayout_field google_protobuf_ServiceDescriptorProto__fields[3]
static upb_strview jsondec_mask(jsondec *d, const char *buf, const char *end)
uint32_t upb_fielddef_index(const upb_fielddef *f)
static upb_arena * jsonenc_arena(jsonenc *e)
static size_t jsondec_unicode(jsondec *d, char *out)
const char * upb_fielddef_fullname(const upb_fielddef *f)
UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_name(const google_protobuf_FieldDescriptorProto *msg)
static void nullz(upb_status *status)
static uint32_t jsondec_codepoint(jsondec *d)
static void jsonenc_putsep(jsonenc *e, const char *str, bool *first)
#define CASE(ctype, type, wtype, encodeval)
int upb_oneofdef_fieldcount(const upb_oneofdef *o)
static const upb_tabent * findentry(const upb_table *t, lookupkey_t key, uint32_t hash, eqlfunc_t *eql)
const upb_filedef * upb_filedef_dep(const upb_filedef *f, int i)
bool upb_oneof_done(upb_oneof_iter *iter)
static void count_types_in_file(const google_protobuf_FileDescriptorProto *file_proto, upb_filedef *file)
UPB_INLINE void _upb_value_setval(upb_value *v, uint64_t val, upb_ctype_t ctype)
void upb_msg_clearfield(upb_msg *msg, const upb_fielddef *f)
static const upb_msglayout *const google_protobuf_EnumOptions_submsgs[1]
static const upb_msglayout_field google_protobuf_FileOptions__fields[21]
static void jsondec_wrapper(jsondec *d, upb_msg *msg, const upb_msgdef *m)
static const upb_msglayout *const google_protobuf_OneofOptions_submsgs[1]
const upb_msglayout google_protobuf_GeneratedCodeInfo_msginit
const upb_msglayout google_protobuf_OneofOptions_msginit
const UPB_INLINE google_protobuf_FieldDescriptorProto *const * google_protobuf_DescriptorProto_field(const google_protobuf_DescriptorProto *msg, size_t *len)
static const upb_tabent * str_tabent(const upb_strtable_iter *i)
static void create_fielddef(symtab_addctx *ctx, const char *prefix, upb_msgdef *m, const google_protobuf_FieldDescriptorProto *field_proto)
static const upb_msglayout *const google_protobuf_FieldDescriptorProto_submsgs[1]
static void jsondec_objstart(jsondec *d)
static uint32_t * upb_cleanup_pointer(uintptr_t cleanup_metadata)
size_t upb_array_size(const upb_array *arr)
@ UPB_JSONENC_EMITDEFAULTS
static const upb_msglayout_field google_protobuf_EnumOptions__fields[3]
UniquePtr< SSL_SESSION > ret
UPB_INLINE upb_StringView google_protobuf_FieldDescriptorProto_name(const google_protobuf_FieldDescriptorProto *msg)
const char * upb_filedef_name(const upb_filedef *f)
const UPB_NOINLINE char * decode_isdonefallback(upb_decstate *d, const char *ptr, int overrun)
static size_t get_field_size(const upb_msglayout_field *f)
static bool upb_isalphanum(char c)
size_t upb_map_size(const upb_map *map)
static const upb_msglayout_field google_protobuf_DescriptorProto__fields[10]
void upb_inttable_iter_setdone(upb_inttable_iter *i)
UPB_INLINE int32_t google_protobuf_EnumValueDescriptorProto_number(const google_protobuf_EnumValueDescriptorProto *msg)
UPB_INLINE upb_StringView google_protobuf_FileDescriptorProto_name(const google_protobuf_FileDescriptorProto *msg)
static upb_tabval int_arrent(const upb_inttable_iter *i)
uint32_t hashfunc_t(upb_tabkey key)
const upb_oneofdef * upb_msg_iter_oneof(const upb_msg_oneof_iter *iter)
const upb_msglayout google_protobuf_DescriptorProto_ReservedRange_msginit
const upb_msglayout * upb_msgdef_layout(const upb_msgdef *m)
static void encode_message(upb_encstate *e, const upb_msg *msg, const upb_msglayout *m, size_t *size)
std::array< int64_t, Size > values
@ UPB_DESCRIPTOR_TYPE_INT64
static bool between(int32_t x, int32_t low, int32_t high)
upb_map * upb_map_new(upb_arena *a, upb_fieldtype_t key_type, upb_fieldtype_t value_type)
void upb_status_seterrmsg(upb_status *status, const char *msg)
static void decode_verifyutf8(upb_decstate *d, const char *buf, int len)
bool upb_inttable_done(const upb_inttable_iter *i)
static const char prefix[]
UPB_INLINE upb_strview upb_tabstrview(upb_tabkey key)
static void build_filedef(symtab_addctx *ctx, upb_filedef *file, const google_protobuf_FileDescriptorProto *file_proto)
static void encode_bytes(upb_encstate *e, const void *data, size_t len)
#define UPB_MAPENTRY_VALUE
@ UPB_DESCRIPTOR_TYPE_BOOL
static const char * decode_toarray(upb_decstate *d, const char *ptr, upb_msg *msg, upb_msglayout const *const *submsgs, const upb_msglayout_field *field, wireval *val, int op)
#define UPB_MAX_FIELDNUMBER
static const upb_tabent * int_tabent(const upb_inttable_iter *i)
static void parse(const char *s)
static const UPB_FORCEINLINE char * decode_togroup(upb_decstate *d, const char *ptr, upb_msg *submsg, upb_msglayout const *const *submsgs, const upb_msglayout_field *field)
bool upb_fielddef_ismap(const upb_fielddef *f)
static lookupkey_t strkey2(const char *str, size_t len)
static const upb_msglayout_field google_protobuf_OneofOptions__fields[1]
UPB_INLINE bool decode_isdone(upb_decstate *d, const char **ptr)
void upb_strtable_clear(upb_strtable *t)
static int _upb_mapsorter_cmpu32(const void *_a, const void *_b)
static upb_def_init * deps[1]
upb_extreg * upb_extreg_new(upb_arena *arena)
bool _upb_msg_addunknown(upb_msg *msg, const char *data, size_t len, upb_arena *arena)
static bool jsondec_arrnext(jsondec *d)
ABSL_MUST_USE_RESULT bool ok() const
static void finalize_oneofs(symtab_addctx *ctx, upb_msgdef *m)
void upb_inttable_begin(upb_inttable_iter *i, const upb_inttable *t)
bool upb_msgdef_mapentry(const upb_msgdef *m)
static void jsondec_duration(jsondec *d, upb_msg *msg, const upb_msgdef *m)
int upb_filedef_depcount(const upb_filedef *f)
void upb_strtable_begin(upb_strtable_iter *i, const upb_strtable *t)
static int _upb_mapsorter_cmpi64(const void *_a, const void *_b)
static char jsondec_escape(jsondec *d)
static void jsonenc_double(jsonenc *e, const char *fmt, double val)
bool upb_msg_oneof_done(const upb_msg_oneof_iter *iter)
const upb_enumdef * enumdef
upb_value upb_inttable_iter_value(const upb_inttable_iter *i)
int upb_msgdef_numfields(const upb_msgdef *m)
upb_mutmsgval upb_msg_mutable(upb_msg *msg, const upb_fielddef *f, upb_arena *a)
UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_options(const google_protobuf_FieldDescriptorProto *msg)
const UPB_INLINE void * _upb_array_constptr(const upb_array *arr)
static bool jsondec_tryskipdigits(jsondec *d)
static upb_tabent * getentry_mutable(upb_table *t, uint32_t hash)
static bool jsondec_seqnext(jsondec *d, char end_ch)
static void assign_layout_indices(const upb_msgdef *m, upb_msglayout *l, upb_msglayout_field *fields)
static const upb_msglayout *const google_protobuf_ServiceDescriptorProto_submsgs[2]
static size_t next(const upb_table *t, size_t i)
const upb_msglayout google_protobuf_EnumDescriptorProto_EnumReservedRange_msginit
#define VARINT_CASE(ctype, encode)
static char _upb_fieldtype_to_mapsize[12]
UPB_INLINE bool google_protobuf_MessageOptions_map_entry(const google_protobuf_MessageOptions *msg)
static UPB_FORCEINLINE void encode_reserve(upb_encstate *e, size_t bytes)
upb_cleanup_func * cleanup
int32_t upb_fielddef_defaultint32(const upb_fielddef *f)
const upb_filedef ** deps
static const upb_msglayout_field google_protobuf_FileDescriptorSet__fields[1]
static void jsonenc_putbytes(jsonenc *e, const void *data, size_t len)
static uint32_t encode_zz32(int32_t n)
bool upb_arena_fuse(upb_arena *a1, upb_arena *a2)
const upb_msgdef * upb_oneofdef_containingtype(const upb_oneofdef *o)
static const upb_msglayout *const google_protobuf_ExtensionRangeOptions_submsgs[1]
size_t getjsonname(const char *name, char *buf, size_t len)
static uint64_t UnalignedLoad64(const void *p)
static bool jsondec_objnext(jsondec *d)
const char * phpnamespace
const upb_fielddef * upb_msgdef_lookupjsonname(const upb_msgdef *m, const char *name, size_t len)
const upb_msgdef * upb_symtab_lookupmsg(const upb_symtab *s, const char *sym)
size_t _upb_symtab_bytesloaded(const upb_symtab *s)
const upb_msglayout google_protobuf_UninterpretedOption_NamePart_msginit
upb_def_init google_protobuf_descriptor_proto_upbdefinit
static void jsondec_true(jsondec *d)
@ UPB_WELLKNOWN_BOOLVALUE
const upb_msglayout google_protobuf_GeneratedCodeInfo_Annotation_msginit
static const upb_msg_internal * upb_msg_getinternal_const(const upb_msg *msg)
bool upb_fielddef_isextension(const upb_fielddef *f)
const upb_msglayout_field * _upb_extreg_get(const upb_extreg *r, const upb_msglayout *l, uint32_t num)
static bool decode_reserve(upb_decstate *d, upb_array *arr, size_t elem)
static void jsondec_null(jsondec *d)
UPB_INLINE int32_t google_protobuf_FieldDescriptorProto_type(const google_protobuf_FieldDescriptorProto *msg)
const upb_msglayout google_protobuf_DescriptorProto_msginit
UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_default_value(const google_protobuf_FieldDescriptorProto *msg)
upb_msg * _upb_msg_new(const upb_msglayout *l, upb_arena *a)
static void _upb_mapsorter_getkeys(const void *_a, const void *_b, void *a_key, void *b_key, size_t size)
static upb_msgval jsondec_msg(jsondec *d, const upb_fielddef *f)
static void jsondec_arrstart(jsondec *d)
void upb_status_vappenderrf(upb_status *status, const char *fmt, va_list args)
static bool in_oneof(const upb_msglayout_field *field)
const upb_msglayout google_protobuf_OneofDescriptorProto_msginit
static const char * shortdefname(const char *fullname)
static upb_arena * arena_findroot(upb_arena *a)
@ UPB_WIRE_TYPE_START_GROUP
UPB_INLINE bool _upb_repeated_or_map(const upb_msglayout_field *field)
const upb_enumdef * enums
static const upb_msglayout *const google_protobuf_EnumValueOptions_submsgs[1]
static bool rm(upb_table *t, lookupkey_t key, upb_value *val, upb_tabkey *removed, uint32_t hash, eqlfunc_t *eql)
static bool is_pow2(uint64_t v)
static uint64_t encode_zz64(int64_t n)
static void jsonenc_putstr(jsonenc *e, const char *str)
UPB_INLINE int decode_pushlimit(upb_decstate *d, const char *ptr, int size)
@ UPB_DESCRIPTOR_TYPE_INT32
static const upb_msglayout_field google_protobuf_ServiceOptions__fields[2]
static void chkdefaulttype(const upb_fielddef *f, int ctype)
struct google_protobuf_DescriptorProto google_protobuf_DescriptorProto
bool upb_strtable_done(const upb_strtable_iter *i)
const upb_msglayout google_protobuf_FileDescriptorProto_msginit
static void jsonenc_fieldpath(jsonenc *e, upb_strview path)
UPB_INLINE bool _upb_isle(void)
int64_t upb_fielddef_defaultint64(const upb_fielddef *f)
static bool init(upb_table *t, uint8_t size_lg2, upb_arena *a)
void upb_msg_oneof_iter_setdone(upb_msg_oneof_iter *iter)
const UPB_INLINE google_protobuf_DescriptorProto *const * google_protobuf_DescriptorProto_nested_type(const google_protobuf_DescriptorProto *msg, size_t *len)
bool _upb_extreg_add(upb_extreg *r, const upb_msglayout_ext *e, size_t count)
static void jsonenc_enum(int32_t val, const upb_fielddef *f, jsonenc *e)
static void remove_filedef(upb_symtab *s, upb_filedef *file)
bool upb_ok(const upb_status *status)
char * upb_strdup2(const char *s, size_t len, upb_arena *a)
char * upb_encode(const void *msg, const upb_msglayout *m, upb_arena *arena, size_t *size)
static bool inteql(upb_tabkey k1, lookupkey_t k2)
static void encode_array(upb_encstate *e, const upb_msg *msg, const upb_msglayout *m, const upb_msglayout_field *f)
UPB_INLINE void _upb_map_fromkey(upb_strview key, void *out, size_t size)
const upb_oneofdef * upb_fielddef_realcontainingoneof(const upb_fielddef *f)
bool upb_map_set(upb_map *map, upb_msgval key, upb_msgval val, upb_arena *arena)
static void __asan_poison_memory_region(const void *addr, size_t size)
@ UPB_WELLKNOWN_INT64VALUE
static int jsondec_nanos(jsondec *d, const char **ptr, const char *end)
const char * upb_oneofdef_name(const upb_oneofdef *o)
const char * upb_fielddef_defaultstr(const upb_fielddef *f, size_t *len)
static size_t upb_msgval_sizeof(upb_fieldtype_t type)
UPB_INLINE google_protobuf_FileDescriptorProto * google_protobuf_FileDescriptorProto_parse_ex(const char *buf, size_t size, const upb_ExtensionRegistry *extreg, int options, upb_Arena *arena)
void * symtab_alloc(symtab_addctx *ctx, size_t bytes)
const upb_fielddef * upb_msgdef_field(const upb_msgdef *m, int i)
@ UPB_ENCODE_DETERMINISTIC
const char * fastdecode_generic(struct upb_decstate *d, const char *ptr, upb_msg *msg, intptr_t table, uint64_t hasbits, uint64_t data)
static uint32_t strhash(upb_tabkey key)
bool upb_fielddef_checklabel(int32_t label)
static void jsonenc_timestamp(jsonenc *e, const upb_msg *msg, const upb_msgdef *m)
static void jsondec_any(jsondec *d, upb_msg *msg, const upb_msgdef *m)
struct google_protobuf_FileDescriptorProto google_protobuf_FileDescriptorProto
static void jsonenc_string(jsonenc *e, upb_strview str)
bool upb_fielddef_hassubdef(const upb_fielddef *f)
static UPB_NORETURN void jsondec_err(jsondec *d, const char *msg)
upb_label_t upb_fielddef_label(const upb_fielddef *f)
static void create_enumdef(symtab_addctx *ctx, const char *prefix, const google_protobuf_EnumDescriptorProto *enum_proto)
UPB_INLINE upb_array * _upb_array_new(upb_arena *a, size_t init_size, int elem_size_lg2)
static void jsonenc_map(jsonenc *e, const upb_map *map, const upb_fielddef *f)
const upb_enumdef * upb_filedef_enum(const upb_filedef *f, int i)
const upb_msglayout google_protobuf_FieldOptions_msginit
struct google_protobuf_FileOptions google_protobuf_FileOptions
struct google_protobuf_MessageOptions google_protobuf_MessageOptions
static lookupkey_t intkey(uintptr_t key)
static upb_msgval jsondec_bool(jsondec *d, const upb_fielddef *f)
static void jsonenc_wrapper(jsonenc *e, const upb_msg *msg, const upb_msgdef *m)
UPB_INLINE size_t upb_table_size(const upb_table *t)
int upb_filedef_enumcount(const upb_filedef *f)
upb_array * upb_array_new(upb_arena *a, upb_fieldtype_t type)
if(p->owned &&p->wrapped !=NULL)
bool _upb_array_append_fallback(upb_array **arr_ptr, const void *value, int elem_size_lg2, upb_arena *arena)
static void jsonenc_any(jsonenc *e, const upb_msg *msg, const upb_msgdef *m)
bool upb_mapiter_done(const upb_map *map, size_t iter)
static void jsonenc_nanos(jsonenc *e, int32_t nanos)
bool upb_mapiter_next(const upb_map *map, size_t *iter)
const char * upb_status_errmsg(const upb_status *status)
UPB_INLINE uint32_t * _upb_oneofcase_field(upb_msg *msg, const upb_msglayout_field *f)
std::allocator< int > alloc
#define UPB_UNPOISON_MEMORY_REGION(addr, size)
uintptr_t upb_inttable_iter_key(const upb_inttable_iter *i)
#define UPB_LONGJMP(buf, val)
upb_msgval upb_mapiter_value(const upb_map *map, size_t iter)
UPB_INLINE size_t upb_strtable_count(const upb_strtable *t)
static void decode_munge(int type, wireval *val)
static void encode_tag(upb_encstate *e, uint32_t field_number, uint8_t wire_type)
bool upb_map_get(const upb_map *map, upb_msgval key, upb_msgval *val)
static const upb_msglayout_field google_protobuf_EnumValueOptions__fields[2]
@ UPB_WELLKNOWN_LISTVALUE
static upb_value _upb_value_val(uint64_t val)
static struct rpc_state state
const upb_fielddef * upb_oneofdef_ntof(const upb_oneofdef *o, const char *name, size_t length)
bool upb_inttable_insert(upb_inttable *t, uintptr_t key, upb_value val, upb_arena *a)
upb_map * _upb_map_new(upb_arena *a, size_t key_size, size_t value_size)
struct upb_arena * parent
upb_value upb_strtable_iter_value(const upb_strtable_iter *i)
static size_t div_round_up(size_t n, size_t d)
static upb_tabkey strcopy(lookupkey_t k2, upb_arena *a)
UPB_INLINE void * upb_arena_realloc(upb_arena *a, void *ptr, size_t oldsize, size_t size)
const upb_msgdef * upb_filedef_msg(const upb_filedef *f, int i)
const upb_symtab * symtab
static upb_value pack_def(const void *ptr, upb_deftype_t type)
bool upb_fielddef_defaultbool(const upb_fielddef *f)
upb_syntax_t upb_msgdef_syntax(const upb_msgdef *m)
#define UPB_POISON_MEMORY_REGION(addr, size)
static UPB_NOINLINE size_t encode_varint64(uint64_t val, char *buf)
static upb_msg * decode_newsubmsg(upb_decstate *d, upb_msglayout const *const *submsgs, const upb_msglayout_field *field)
const upb_msgdef * upb_fielddef_msgsubdef(const upb_fielddef *f)
const upb_oneofdef * oneof
grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:00:51