Coverage Report

Created: 2025-09-27 06:26

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/php-src/ext/json/json_scanner.c
Line
Count
Source
1
/* Generated by re2c 1.3 */
2
/*
3
  +----------------------------------------------------------------------+
4
  | Copyright (c) The PHP Group                                          |
5
  +----------------------------------------------------------------------+
6
  | This source file is subject to version 3.01 of the PHP license,      |
7
  | that is bundled with this package in the file LICENSE, and is        |
8
  | available through the world-wide-web at the following url:           |
9
  | https://www.php.net/license/3_01.txt                                 |
10
  | If you did not receive a copy of the PHP license and are unable to   |
11
  | obtain it through the world-wide-web, please send a note to          |
12
  | license@php.net so we can mail you a copy immediately.               |
13
  +----------------------------------------------------------------------+
14
  | Author: Jakub Zelenka <bukka@php.net>                                |
15
  +----------------------------------------------------------------------+
16
*/
17
18
#include "php.h"
19
#include "php_json_scanner.h"
20
#include "php_json_scanner_defs.h"
21
#include "php_json_parser.h"
22
#include "json_parser.tab.h"
23
24
14.5M
#define YYCTYPE     php_json_ctype
25
222M
#define YYCURSOR    s->cursor
26
#define YYLIMIT     s->limit
27
88.4M
#define YYMARKER    s->marker
28
#define YYCTXMARKER s->ctxmarker
29
30
29.0M
#define YYGETCONDITION()        s->state
31
130k
#define YYSETCONDITION(yystate) s->state = yystate
32
33
#define YYFILL(n)
34
35
127k
#define PHP_JSON_CONDITION_SET(condition) YYSETCONDITION(yyc##condition)
36
51.8M
#define PHP_JSON_CONDITION_GOTO(condition) goto yyc_##condition
37
#define PHP_JSON_CONDITION_SET_AND_GOTO(condition) \
38
60.0k
  PHP_JSON_CONDITION_SET(condition); \
39
60.0k
  PHP_JSON_CONDITION_GOTO(condition)
40
#define PHP_JSON_CONDITION_GOTO_STR_P2() \
41
16.3k
  do { \
42
16.3k
    if (s->utf8_invalid) { \
43
0
      PHP_JSON_CONDITION_GOTO(STR_P2_BIN); \
44
16.3k
    } else { \
45
16.3k
      PHP_JSON_CONDITION_GOTO(STR_P2_UTF); \
46
16.3k
    } \
47
16.3k
  } while(0)
48
49
50
6.34k
#define PHP_JSON_SCANNER_COPY_ESC() php_json_scanner_copy_string(s, 0)
51
8.36k
#define PHP_JSON_SCANNER_COPY_UTF() php_json_scanner_copy_string(s, 5)
52
1.61k
#define PHP_JSON_SCANNER_COPY_UTF_SP() php_json_scanner_copy_string(s, 11)
53
54
2.14M
#define PHP_JSON_INT_MAX_LENGTH (MAX_LENGTH_OF_LONG - 1)
55
56
57
static void php_json_scanner_copy_string(php_json_scanner *s, size_t esc_size)
58
16.3k
{
59
16.3k
  size_t len = (size_t)(s->cursor - s->str_start - esc_size - 1);
60
16.3k
  if (len) {
61
2.53k
    memcpy(s->pstr, s->str_start, len);
62
2.53k
    s->pstr += len;
63
2.53k
  }
64
16.3k
}
65
66
static int php_json_hex_to_int(unsigned char code)
67
37.0k
{
68
37.0k
  if (code >= '0' && code <= '9') {
69
18.7k
    return code - '0';
70
18.7k
  } else if (code >= 'A' && code <= 'F') {
71
10.1k
    return code - ('A' - 10);
72
10.1k
  } else if (code >= 'a' && code <= 'f') {
73
8.21k
    return code - ('a' - 10);
74
8.21k
  } else {
75
    /* this should never happened (just to suppress compiler warning) */
76
0
    return -1;
77
0
  }
78
37.0k
}
79
80
static int php_json_ucs2_to_int_ex(php_json_scanner *s, int size, int start)
81
11.5k
{
82
11.5k
  int i, code = 0;
83
11.5k
  php_json_ctype *pc = s->cursor - start;
84
48.6k
  for (i = 0; i < size; i++) {
85
37.0k
    code |= php_json_hex_to_int(*(pc--)) << (i * 4);
86
37.0k
  }
87
11.5k
  return code;
88
11.5k
}
89
90
static int php_json_ucs2_to_int(php_json_scanner *s, int size)
91
9.98k
{
92
9.98k
  return php_json_ucs2_to_int_ex(s, size, 1);
93
9.98k
}
94
95
void php_json_scanner_init(php_json_scanner *s, const char *str, size_t str_len, int options)
96
12.7k
{
97
12.7k
  s->cursor = (php_json_ctype *) str;
98
12.7k
  s->limit = (php_json_ctype *) str + str_len;
99
12.7k
  s->options = options;
100
12.7k
  PHP_JSON_CONDITION_SET(JS);
101
12.7k
}
102
103
int php_json_scan(php_json_scanner *s)
104
14.5M
{
105
14.5M
  ZVAL_NULL(&s->value);
106
107
14.5M
std:
108
14.5M
  s->token = s->cursor;
109
110
111
14.5M
  {
112
14.5M
    YYCTYPE yych;
113
14.5M
    unsigned int yyaccept = 0;
114
14.5M
    if (YYGETCONDITION() < 2) {
115
14.5M
      if (YYGETCONDITION() < 1) {
116
14.5M
        goto yyc_JS;
117
14.5M
      } else {
118
0
        goto yyc_STR_P1;
119
0
      }
120
14.5M
    } else {
121
0
      if (YYGETCONDITION() < 3) {
122
0
        goto yyc_STR_P2_BIN;
123
0
      } else {
124
0
        goto yyc_STR_P2_UTF;
125
0
      }
126
0
    }
127
/* *********************************** */
128
14.5M
yyc_JS:
129
14.5M
    {
130
14.5M
      static const unsigned char yybm[] = {
131
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
132
14.5M
          0,  64,   0,   0,   0,  64,   0,   0, 
133
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
134
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
135
14.5M
         64,   0,   0,   0,   0,   0,   0,   0, 
136
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
137
14.5M
        128, 128, 128, 128, 128, 128, 128, 128, 
138
14.5M
        128, 128,   0,   0,   0,   0,   0,   0, 
139
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
140
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
141
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
142
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
143
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
144
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
145
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
146
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
147
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
148
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
149
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
150
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
151
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
152
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
153
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
154
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
155
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
156
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
157
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
158
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
159
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
160
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
161
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
162
14.5M
          0,   0,   0,   0,   0,   0,   0,   0, 
163
14.5M
      };
164
14.5M
      yych = *YYCURSOR;
165
14.5M
      if (yych <= ']') {
166
7.80M
        if (yych <= '"') {
167
68.9k
          if (yych <= '\f') {
168
8.22k
            if (yych <= 0x08) {
169
7.41k
              if (yych >= 0x01) goto yy5;
170
7.41k
            } else {
171
817
              if (yych <= '\t') goto yy7;
172
577
              if (yych <= '\n') goto yy10;
173
7
              goto yy5;
174
577
            }
175
60.7k
          } else {
176
60.7k
            if (yych <= 0x1F) {
177
465
              if (yych <= '\r') goto yy11;
178
37
              goto yy5;
179
60.2k
            } else {
180
60.2k
              if (yych <= ' ') goto yy7;
181
60.0k
              if (yych <= '!') goto yy12;
182
60.0k
              goto yy14;
183
60.0k
            }
184
60.7k
          }
185
7.73M
        } else {
186
7.73M
          if (yych <= '0') {
187
6.96M
            if (yych <= ',') {
188
5.50M
              if (yych <= '+') goto yy12;
189
5.50M
              goto yy16;
190
5.50M
            } else {
191
1.45M
              if (yych <= '-') goto yy18;
192
1.45M
              if (yych <= '/') goto yy12;
193
1.45M
              goto yy19;
194
1.45M
            }
195
6.96M
          } else {
196
774k
            if (yych <= 'Z') {
197
759k
              if (yych <= '9') goto yy21;
198
53.9k
              if (yych <= ':') goto yy23;
199
112
              goto yy12;
200
53.9k
            } else {
201
14.3k
              if (yych <= '[') goto yy25;
202
6.16k
              if (yych <= '\\') goto yy12;
203
6.13k
              goto yy27;
204
6.16k
            }
205
774k
          }
206
7.73M
        }
207
7.80M
      } else {
208
6.71M
        if (yych <= '}') {
209
6.71M
          if (yych <= 's') {
210
725
            if (yych <= 'f') {
211
435
              if (yych <= 'e') goto yy12;
212
280
              goto yy29;
213
435
            } else {
214
290
              if (yych == 'n') goto yy30;
215
27
              goto yy12;
216
290
            }
217
6.71M
          } else {
218
6.71M
            if (yych <= 'z') {
219
268
              if (yych <= 't') goto yy31;
220
15
              goto yy12;
221
6.71M
            } else {
222
6.71M
              if (yych <= '{') goto yy32;
223
3.35M
              if (yych <= '|') goto yy12;
224
3.35M
              goto yy34;
225
3.35M
            }
226
6.71M
          }
227
6.71M
        } else {
228
485
          if (yych <= 0xEC) {
229
264
            if (yych <= 0xC1) {
230
76
              if (yych <= 0x7F) goto yy12;
231
67
              goto yy36;
232
188
            } else {
233
188
              if (yych <= 0xDF) goto yy38;
234
87
              if (yych <= 0xE0) goto yy39;
235
53
              goto yy40;
236
87
            }
237
264
          } else {
238
221
            if (yych <= 0xF0) {
239
108
              if (yych <= 0xED) goto yy41;
240
75
              if (yych <= 0xEF) goto yy40;
241
51
              goto yy42;
242
113
            } else {
243
113
              if (yych <= 0xF3) goto yy43;
244
56
              if (yych <= 0xF4) goto yy44;
245
21
              goto yy36;
246
56
            }
247
221
          }
248
485
        }
249
6.71M
      }
250
7.39k
      ++YYCURSOR;
251
7.39k
      {
252
7.39k
    if (s->limit < s->cursor) {
253
7.37k
      return PHP_JSON_T_EOI;
254
7.37k
    } else {
255
13
      s->errcode = PHP_JSON_ERROR_CTRL_CHAR;
256
13
      return PHP_JSON_T_ERROR;
257
13
    }
258
7.39k
  }
259
62
yy5:
260
62
      ++YYCURSOR;
261
62
      {
262
62
    s->errcode = PHP_JSON_ERROR_CTRL_CHAR;
263
62
    return PHP_JSON_T_ERROR;
264
7.39k
  }
265
666
yy7:
266
666
      yych = *++YYCURSOR;
267
900
yy8:
268
900
      if (yybm[0+yych] & 64) {
269
202
        goto yy7;
270
202
      }
271
1.46k
yy9:
272
1.46k
      { goto std; }
273
764
yy10:
274
764
      ++YYCURSOR;
275
764
      goto yy9;
276
428
yy11:
277
428
      yych = *++YYCURSOR;
278
428
      if (yych == '\n') goto yy10;
279
234
      goto yy8;
280
525
yy12:
281
525
      ++YYCURSOR;
282
775
yy13:
283
775
      {
284
775
    s->errcode = PHP_JSON_ERROR_SYNTAX;
285
775
    return PHP_JSON_T_ERROR;
286
525
  }
287
60.0k
yy14:
288
60.0k
      ++YYCURSOR;
289
60.0k
      {
290
60.0k
    s->str_start = s->cursor;
291
60.0k
    s->str_esc = 0;
292
60.0k
    s->utf8_invalid = 0;
293
60.0k
    s->utf8_invalid_count = 0;
294
60.0k
    PHP_JSON_CONDITION_SET_AND_GOTO(STR_P1);
295
525
  }
296
5.50M
yy16:
297
5.50M
      ++YYCURSOR;
298
5.50M
      { return ','; }
299
1.14k
yy18:
300
1.14k
      yych = *++YYCURSOR;
301
1.14k
      if (yych <= '/') goto yy13;
302
1.11k
      if (yych <= '0') goto yy19;
303
801
      if (yych <= '9') goto yy21;
304
19
      goto yy13;
305
1.45M
yy19:
306
1.45M
      yyaccept = 0;
307
1.45M
      yych = *(YYMARKER = ++YYCURSOR);
308
1.45M
      if (yych <= 'D') {
309
1.45M
        if (yych == '.') goto yy45;
310
1.45M
      } else {
311
3.71k
        if (yych <= 'E') goto yy47;
312
3.40k
        if (yych == 'e') goto yy47;
313
3.40k
      }
314
2.14M
yy20:
315
2.14M
      {
316
2.14M
    bool bigint = 0, negative = s->token[0] == '-';
317
2.14M
    size_t digits = (size_t) (s->cursor - s->token - negative);
318
2.14M
    if (digits >= PHP_JSON_INT_MAX_LENGTH) {
319
2.55k
      if (digits == PHP_JSON_INT_MAX_LENGTH) {
320
898
        int cmp = strncmp((char *) (s->token + negative), LONG_MIN_DIGITS, PHP_JSON_INT_MAX_LENGTH);
321
898
        if (!(cmp < 0 || (cmp == 0 && negative))) {
322
462
          bigint = 1;
323
462
        }
324
1.65k
      } else {
325
1.65k
        bigint = 1;
326
1.65k
      }
327
2.55k
    }
328
2.14M
    if (!bigint) {
329
2.14M
      ZVAL_LONG(&s->value, ZEND_STRTOL((char *) s->token, NULL, 10));
330
2.14M
      return PHP_JSON_T_INT;
331
2.14M
    } else if (s->options & PHP_JSON_BIGINT_AS_STRING) {
332
0
      ZVAL_STRINGL(&s->value, (char *) s->token, (size_t)(s->cursor - s->token));
333
0
      return PHP_JSON_T_STRING;
334
2.11k
    } else {
335
2.11k
      ZVAL_DOUBLE(&s->value, zend_strtod((char *) s->token, NULL));
336
2.11k
      return PHP_JSON_T_DOUBLE;
337
2.11k
    }
338
2.14M
  }
339
18.9M
yy21:
340
18.9M
      yyaccept = 0;
341
18.9M
      yych = *(YYMARKER = ++YYCURSOR);
342
18.9M
      if (yybm[0+yych] & 128) {
343
18.2M
        goto yy21;
344
18.2M
      }
345
706k
      if (yych <= 'D') {
346
692k
        if (yych == '.') goto yy45;
347
685k
        goto yy20;
348
692k
      } else {
349
13.8k
        if (yych <= 'E') goto yy47;
350
12.4k
        if (yych == 'e') goto yy47;
351
2.61k
        goto yy20;
352
12.4k
      }
353
53.8k
yy23:
354
53.8k
      ++YYCURSOR;
355
53.8k
      { return ':'; }
356
8.22k
yy25:
357
8.22k
      ++YYCURSOR;
358
8.22k
      { return '['; }
359
6.13k
yy27:
360
6.13k
      ++YYCURSOR;
361
6.13k
      { return ']'; }
362
280
yy29:
363
280
      yyaccept = 1;
364
280
      yych = *(YYMARKER = ++YYCURSOR);
365
280
      if (yych == 'a') goto yy48;
366
23
      goto yy13;
367
263
yy30:
368
263
      yyaccept = 1;
369
263
      yych = *(YYMARKER = ++YYCURSOR);
370
263
      if (yych == 'u') goto yy49;
371
25
      goto yy13;
372
253
yy31:
373
253
      yyaccept = 1;
374
253
      yych = *(YYMARKER = ++YYCURSOR);
375
253
      if (yych == 'r') goto yy50;
376
15
      goto yy13;
377
3.36M
yy32:
378
3.36M
      ++YYCURSOR;
379
3.36M
      { return '{'; }
380
3.35M
yy34:
381
3.35M
      ++YYCURSOR;
382
3.35M
      { return '}'; }
383
88
yy36:
384
88
      ++YYCURSOR;
385
450
yy37:
386
450
      {
387
450
    s->errcode = PHP_JSON_ERROR_UTF8;
388
450
    return PHP_JSON_T_ERROR;
389
88
  }
390
101
yy38:
391
101
      yych = *++YYCURSOR;
392
101
      if (yych <= 0x7F) goto yy37;
393
38
      if (yych <= 0xBF) goto yy12;
394
23
      goto yy37;
395
34
yy39:
396
34
      yyaccept = 2;
397
34
      yych = *(YYMARKER = ++YYCURSOR);
398
34
      if (yych <= 0x9F) goto yy37;
399
23
      if (yych <= 0xBF) goto yy51;
400
9
      goto yy37;
401
77
yy40:
402
77
      yyaccept = 2;
403
77
      yych = *(YYMARKER = ++YYCURSOR);
404
77
      if (yych <= 0x7F) goto yy37;
405
53
      if (yych <= 0xBF) goto yy51;
406
23
      goto yy37;
407
33
yy41:
408
33
      yyaccept = 2;
409
33
      yych = *(YYMARKER = ++YYCURSOR);
410
33
      if (yych <= 0x7F) goto yy37;
411
28
      if (yych <= 0x9F) goto yy51;
412
19
      goto yy37;
413
51
yy42:
414
51
      yyaccept = 2;
415
51
      yych = *(YYMARKER = ++YYCURSOR);
416
51
      if (yych <= 0x8F) goto yy37;
417
32
      if (yych <= 0xBF) goto yy52;
418
7
      goto yy37;
419
57
yy43:
420
57
      yyaccept = 2;
421
57
      yych = *(YYMARKER = ++YYCURSOR);
422
57
      if (yych <= 0x7F) goto yy37;
423
50
      if (yych <= 0xBF) goto yy52;
424
21
      goto yy37;
425
35
yy44:
426
35
      yyaccept = 2;
427
35
      yych = *(YYMARKER = ++YYCURSOR);
428
35
      if (yych <= 0x7F) goto yy37;
429
32
      if (yych <= 0x8F) goto yy52;
430
15
      goto yy37;
431
9.39k
yy45:
432
9.39k
      yych = *++YYCURSOR;
433
9.39k
      if (yych <= '/') goto yy46;
434
9.36k
      if (yych <= '9') goto yy53;
435
479
yy46:
436
479
      YYCURSOR = YYMARKER;
437
479
      if (yyaccept <= 1) {
438
291
        if (yyaccept == 0) {
439
154
          goto yy20;
440
154
        } else {
441
137
          goto yy13;
442
137
        }
443
291
      } else {
444
188
        if (yyaccept == 2) {
445
113
          goto yy37;
446
113
        } else {
447
75
          goto yy55;
448
75
        }
449
188
      }
450
14.2k
yy47:
451
14.2k
      yych = *++YYCURSOR;
452
14.2k
      if (yych <= ',') {
453
386
        if (yych == '+') goto yy56;
454
112
        goto yy46;
455
13.8k
      } else {
456
13.8k
        if (yych <= '-') goto yy56;
457
8.30k
        if (yych <= '/') goto yy46;
458
8.30k
        if (yych <= '9') goto yy57;
459
24
        goto yy46;
460
8.30k
      }
461
257
yy48:
462
257
      yych = *++YYCURSOR;
463
257
      if (yych == 'l') goto yy59;
464
23
      goto yy46;
465
238
yy49:
466
238
      yych = *++YYCURSOR;
467
238
      if (yych == 'l') goto yy60;
468
19
      goto yy46;
469
238
yy50:
470
238
      yych = *++YYCURSOR;
471
238
      if (yych == 'u') goto yy61;
472
21
      goto yy46;
473
68
yy51:
474
68
      yych = *++YYCURSOR;
475
68
      if (yych <= 0x7F) goto yy46;
476
14
      if (yych <= 0xBF) goto yy12;
477
3
      goto yy46;
478
71
yy52:
479
71
      yych = *++YYCURSOR;
480
71
      if (yych <= 0x7F) goto yy46;
481
22
      if (yych <= 0xBF) goto yy51;
482
7
      goto yy46;
483
68.0M
yy53:
484
68.0M
      yyaccept = 3;
485
68.0M
      yych = *(YYMARKER = ++YYCURSOR);
486
68.0M
      if (yych <= 'D') {
487
68.0M
        if (yych <= '/') goto yy55;
488
68.0M
        if (yych <= '9') goto yy53;
489
68.0M
      } else {
490
2.80k
        if (yych <= 'E') goto yy47;
491
2.49k
        if (yych == 'e') goto yy47;
492
2.49k
      }
493
21.4k
yy55:
494
21.4k
      {
495
21.4k
    ZVAL_DOUBLE(&s->value, zend_strtod((char *) s->token, NULL));
496
21.4k
    return PHP_JSON_T_DOUBLE;
497
68.0M
  }
498
5.82k
yy56:
499
5.82k
      yych = *++YYCURSOR;
500
5.82k
      if (yych <= '/') goto yy46;
501
5.79k
      if (yych >= ':') goto yy46;
502
3.06M
yy57:
503
3.06M
      yych = *++YYCURSOR;
504
3.06M
      if (yych <= '/') goto yy55;
505
3.04M
      if (yych <= '9') goto yy57;
506
255
      goto yy55;
507
255
yy59:
508
234
      yych = *++YYCURSOR;
509
234
      if (yych == 's') goto yy62;
510
19
      goto yy46;
511
219
yy60:
512
219
      yych = *++YYCURSOR;
513
219
      if (yych == 'l') goto yy63;
514
21
      goto yy46;
515
217
yy61:
516
217
      yych = *++YYCURSOR;
517
217
      if (yych == 'e') goto yy65;
518
19
      goto yy46;
519
215
yy62:
520
215
      yych = *++YYCURSOR;
521
215
      if (yych == 'e') goto yy67;
522
15
      goto yy46;
523
198
yy63:
524
198
      ++YYCURSOR;
525
198
      {
526
198
    ZVAL_NULL(&s->value);
527
198
    return PHP_JSON_T_NUL;
528
215
  }
529
198
yy65:
530
198
      ++YYCURSOR;
531
198
      {
532
198
    ZVAL_TRUE(&s->value);
533
198
    return PHP_JSON_T_TRUE;
534
215
  }
535
200
yy67:
536
200
      ++YYCURSOR;
537
200
      {
538
200
    ZVAL_FALSE(&s->value);
539
200
    return PHP_JSON_T_FALSE;
540
215
  }
541
215
    }
542
/* *********************************** */
543
31.4M
yyc_STR_P1:
544
31.4M
    yych = *YYCURSOR;
545
31.4M
    if (yych <= 0xDF) {
546
31.4M
      if (yych <= '[') {
547
22.3M
        if (yych <= 0x1F) goto yy71;
548
22.3M
        if (yych == '"') goto yy75;
549
22.2M
        goto yy73;
550
22.3M
      } else {
551
9.17M
        if (yych <= '\\') goto yy77;
552
9.15M
        if (yych <= 0x7F) goto yy73;
553
329
        if (yych <= 0xC1) goto yy79;
554
306
        goto yy81;
555
329
      }
556
31.4M
    } else {
557
1.76k
      if (yych <= 0xEF) {
558
807
        if (yych <= 0xE0) goto yy82;
559
531
        if (yych == 0xED) goto yy84;
560
282
        goto yy83;
561
954
      } else {
562
954
        if (yych <= 0xF0) goto yy85;
563
586
        if (yych <= 0xF3) goto yy86;
564
266
        if (yych <= 0xF4) goto yy87;
565
11
        goto yy79;
566
266
      }
567
1.76k
    }
568
439
yy71:
569
439
    ++YYCURSOR;
570
439
    {
571
439
    s->errcode = PHP_JSON_ERROR_CTRL_CHAR;
572
439
    return PHP_JSON_T_ERROR;
573
31.4M
  }
574
31.4M
yy73:
575
31.4M
    ++YYCURSOR;
576
31.4M
    { PHP_JSON_CONDITION_GOTO(STR_P1); }
577
57.8k
yy75:
578
57.8k
    ++YYCURSOR;
579
57.8k
    {
580
57.8k
    zend_string *str;
581
57.8k
    size_t len = (size_t)(s->cursor - s->str_start - s->str_esc - 1 + s->utf8_invalid_count);
582
57.8k
    if (len == 0) {
583
19.5k
      PHP_JSON_CONDITION_SET(JS);
584
19.5k
      ZVAL_EMPTY_STRING(&s->value);
585
19.5k
      return PHP_JSON_T_ESTRING;
586
19.5k
    }
587
38.2k
    str = zend_string_alloc(len, 0);
588
38.2k
    ZSTR_VAL(str)[len] = '\0';
589
38.2k
    ZVAL_STR(&s->value, str);
590
38.2k
    if (s->str_esc || s->utf8_invalid) {
591
3.58k
      s->pstr = (php_json_ctype *) Z_STRVAL(s->value);
592
3.58k
      s->cursor = s->str_start;
593
3.58k
      PHP_JSON_CONDITION_GOTO_STR_P2();
594
34.7k
    } else {
595
34.7k
      memcpy(Z_STRVAL(s->value), s->str_start, len);
596
34.7k
      PHP_JSON_CONDITION_SET(JS);
597
34.7k
      return PHP_JSON_T_STRING;
598
34.7k
    }
599
38.2k
  }
600
19.0k
yy77:
601
19.0k
    yyaccept = 0;
602
19.0k
    yych = *(YYMARKER = ++YYCURSOR);
603
19.0k
    if (yych <= 'e') {
604
2.06k
      if (yych <= '/') {
605
962
        if (yych == '"') goto yy88;
606
531
        if (yych >= '/') goto yy88;
607
1.10k
      } else {
608
1.10k
        if (yych <= '\\') {
609
603
          if (yych >= '\\') goto yy88;
610
603
        } else {
611
498
          if (yych == 'b') goto yy88;
612
498
        }
613
1.10k
      }
614
16.9k
    } else {
615
16.9k
      if (yych <= 'q') {
616
1.04k
        if (yych <= 'f') goto yy88;
617
461
        if (yych == 'n') goto yy88;
618
15.9k
      } else {
619
15.9k
        if (yych <= 's') {
620
442
          if (yych <= 'r') goto yy88;
621
15.5k
        } else {
622
15.5k
          if (yych <= 't') goto yy88;
623
15.0k
          if (yych <= 'u') goto yy90;
624
15.0k
        }
625
15.9k
      }
626
16.9k
    }
627
1.10k
yy78:
628
1.10k
    {
629
1.10k
    s->errcode = PHP_JSON_ERROR_SYNTAX;
630
1.10k
    return PHP_JSON_T_ERROR;
631
19.0k
  }
632
34
yy79:
633
34
    ++YYCURSOR;
634
386
yy80:
635
386
    {
636
386
    if (s->options & (PHP_JSON_INVALID_UTF8_IGNORE | PHP_JSON_INVALID_UTF8_SUBSTITUTE)) {
637
0
      if (s->options & PHP_JSON_INVALID_UTF8_SUBSTITUTE) {
638
0
        if (s->utf8_invalid_count > INT_MAX - 2) {
639
0
          s->errcode = PHP_JSON_ERROR_UTF8;
640
0
          return PHP_JSON_T_ERROR;
641
0
        }
642
0
        s->utf8_invalid_count += 2;
643
0
      } else {
644
0
        s->utf8_invalid_count--;
645
0
      }
646
0
      s->utf8_invalid = 1;
647
0
      PHP_JSON_CONDITION_GOTO(STR_P1);
648
0
    }
649
386
    s->errcode = PHP_JSON_ERROR_UTF8;
650
386
    return PHP_JSON_T_ERROR;
651
386
  }
652
306
yy81:
653
306
    yych = *++YYCURSOR;
654
306
    if (yych <= 0x7F) goto yy80;
655
295
    if (yych <= 0xBF) goto yy73;
656
17
    goto yy80;
657
276
yy82:
658
276
    yyaccept = 1;
659
276
    yych = *(YYMARKER = ++YYCURSOR);
660
276
    if (yych <= 0x9F) goto yy80;
661
259
    if (yych <= 0xBF) goto yy92;
662
13
    goto yy80;
663
282
yy83:
664
282
    yyaccept = 1;
665
282
    yych = *(YYMARKER = ++YYCURSOR);
666
282
    if (yych <= 0x7F) goto yy80;
667
267
    if (yych <= 0xBF) goto yy92;
668
13
    goto yy80;
669
249
yy84:
670
249
    yyaccept = 1;
671
249
    yych = *(YYMARKER = ++YYCURSOR);
672
249
    if (yych <= 0x7F) goto yy80;
673
244
    if (yych <= 0x9F) goto yy92;
674
13
    goto yy80;
675
368
yy85:
676
368
    yyaccept = 1;
677
368
    yych = *(YYMARKER = ++YYCURSOR);
678
368
    if (yych <= 0x8F) goto yy80;
679
351
    if (yych <= 0xBF) goto yy93;
680
11
    goto yy80;
681
320
yy86:
682
320
    yyaccept = 1;
683
320
    yych = *(YYMARKER = ++YYCURSOR);
684
320
    if (yych <= 0x7F) goto yy80;
685
315
    if (yych <= 0xBF) goto yy93;
686
5
    goto yy80;
687
255
yy87:
688
255
    yyaccept = 1;
689
255
    yych = *(YYMARKER = ++YYCURSOR);
690
255
    if (yych <= 0x7F) goto yy80;
691
252
    if (yych <= 0x8F) goto yy93;
692
17
    goto yy80;
693
3.91k
yy88:
694
3.91k
    ++YYCURSOR;
695
3.91k
    {
696
3.91k
    s->str_esc++;
697
3.91k
    PHP_JSON_CONDITION_GOTO(STR_P1);
698
252
  }
699
15.0k
yy90:
700
15.0k
    yych = *++YYCURSOR;
701
15.0k
    if (yych <= 'D') {
702
11.5k
      if (yych <= '9') {
703
8.65k
        if (yych <= '/') goto yy91;
704
8.64k
        if (yych <= '0') goto yy94;
705
622
        goto yy95;
706
8.64k
      } else {
707
2.91k
        if (yych <= '@') goto yy91;
708
2.90k
        if (yych <= 'C') goto yy95;
709
2.63k
        goto yy96;
710
2.90k
      }
711
11.5k
    } else {
712
3.47k
      if (yych <= 'c') {
713
1.05k
        if (yych <= 'F') goto yy95;
714
362
        if (yych >= 'a') goto yy95;
715
2.42k
      } else {
716
2.42k
        if (yych <= 'd') goto yy96;
717
531
        if (yych <= 'f') goto yy95;
718
531
      }
719
3.47k
    }
720
1.40k
yy91:
721
1.40k
    YYCURSOR = YYMARKER;
722
1.40k
    if (yyaccept <= 1) {
723
1.20k
      if (yyaccept == 0) {
724
1.01k
        goto yy78;
725
1.01k
      } else {
726
190
        goto yy80;
727
190
      }
728
1.20k
    } else {
729
206
      goto yy114;
730
206
    }
731
1.52k
yy92:
732
1.52k
    yych = *++YYCURSOR;
733
1.52k
    if (yych <= 0x7F) goto yy91;
734
1.44k
    if (yych <= 0xBF) goto yy73;
735
15
    goto yy91;
736
885
yy93:
737
885
    yych = *++YYCURSOR;
738
885
    if (yych <= 0x7F) goto yy91;
739
809
    if (yych <= 0xBF) goto yy92;
740
15
    goto yy91;
741
8.01k
yy94:
742
8.01k
    yych = *++YYCURSOR;
743
8.01k
    if (yych <= '9') {
744
7.36k
      if (yych <= '/') goto yy91;
745
7.35k
      if (yych <= '0') goto yy97;
746
2.46k
      if (yych <= '7') goto yy98;
747
769
      goto yy99;
748
2.46k
    } else {
749
652
      if (yych <= 'F') {
750
309
        if (yych <= '@') goto yy91;
751
298
        goto yy99;
752
343
      } else {
753
343
        if (yych <= '`') goto yy91;
754
338
        if (yych <= 'f') goto yy99;
755
15
        goto yy91;
756
338
      }
757
652
    }
758
2.44k
yy95:
759
2.44k
    yych = *++YYCURSOR;
760
2.44k
    if (yych <= '@') {
761
937
      if (yych <= '/') goto yy91;
762
861
      if (yych <= '9') goto yy99;
763
7
      goto yy91;
764
1.50k
    } else {
765
1.50k
      if (yych <= 'F') goto yy99;
766
823
      if (yych <= '`') goto yy91;
767
820
      if (yych <= 'f') goto yy99;
768
11
      goto yy91;
769
820
    }
770
4.53k
yy96:
771
4.53k
    yych = *++YYCURSOR;
772
4.53k
    if (yych <= 'B') {
773
2.89k
      if (yych <= '7') {
774
933
        if (yych <= '/') goto yy91;
775
900
        goto yy99;
776
1.95k
      } else {
777
1.95k
        if (yych <= '9') goto yy100;
778
1.27k
        if (yych <= '@') goto yy91;
779
1.26k
        goto yy100;
780
1.27k
      }
781
2.89k
    } else {
782
1.63k
      if (yych <= '`') {
783
103
        if (yych <= 'F') goto yy101;
784
9
        goto yy91;
785
1.53k
      } else {
786
1.53k
        if (yych <= 'b') goto yy100;
787
61
        if (yych <= 'f') goto yy101;
788
21
        goto yy91;
789
61
      }
790
1.63k
    }
791
4.89k
yy97:
792
4.89k
    yych = *++YYCURSOR;
793
4.89k
    if (yych <= '@') {
794
4.22k
      if (yych <= '/') goto yy91;
795
4.21k
      if (yych <= '7') goto yy102;
796
299
      if (yych <= '9') goto yy103;
797
9
      goto yy91;
798
663
    } else {
799
663
      if (yych <= 'F') goto yy103;
800
379
      if (yych <= '`') goto yy91;
801
374
      if (yych <= 'f') goto yy103;
802
13
      goto yy91;
803
374
    }
804
1.69k
yy98:
805
1.69k
    yych = *++YYCURSOR;
806
1.69k
    if (yych <= '@') {
807
610
      if (yych <= '/') goto yy91;
808
591
      if (yych <= '9') goto yy103;
809
7
      goto yy91;
810
1.08k
    } else {
811
1.08k
      if (yych <= 'F') goto yy103;
812
671
      if (yych <= '`') goto yy91;
813
668
      if (yych <= 'f') goto yy103;
814
21
      goto yy91;
815
668
    }
816
4.63k
yy99:
817
4.63k
    yych = *++YYCURSOR;
818
4.63k
    if (yych <= '@') {
819
2.75k
      if (yych <= '/') goto yy91;
820
2.63k
      if (yych <= '9') goto yy104;
821
7
      goto yy91;
822
2.63k
    } else {
823
1.88k
      if (yych <= 'F') goto yy104;
824
773
      if (yych <= '`') goto yy91;
825
762
      if (yych <= 'f') goto yy104;
826
14
      goto yy91;
827
762
    }
828
3.42k
yy100:
829
3.42k
    yych = *++YYCURSOR;
830
3.42k
    if (yych <= '@') {
831
908
      if (yych <= '/') goto yy91;
832
864
      if (yych <= '9') goto yy105;
833
7
      goto yy91;
834
2.51k
    } else {
835
2.51k
      if (yych <= 'F') goto yy105;
836
1.40k
      if (yych <= '`') goto yy91;
837
1.39k
      if (yych <= 'f') goto yy105;
838
13
      goto yy91;
839
1.39k
    }
840
134
yy101:
841
134
    yych = *++YYCURSOR;
842
134
    if (yych <= '@') {
843
60
      if (yych <= '/') goto yy91;
844
32
      if (yych <= '9') goto yy106;
845
7
      goto yy91;
846
74
    } else {
847
74
      if (yych <= 'F') goto yy106;
848
40
      if (yych <= '`') goto yy91;
849
31
      if (yych <= 'f') goto yy106;
850
11
      goto yy91;
851
31
    }
852
3.91k
yy102:
853
3.91k
    yych = *++YYCURSOR;
854
3.91k
    if (yych <= '@') {
855
3.29k
      if (yych <= '/') goto yy91;
856
3.28k
      if (yych <= '9') goto yy107;
857
5
      goto yy91;
858
3.28k
    } else {
859
618
      if (yych <= 'F') goto yy107;
860
312
      if (yych <= '`') goto yy91;
861
303
      if (yych <= 'f') goto yy107;
862
13
      goto yy91;
863
303
    }
864
2.57k
yy103:
865
2.57k
    yych = *++YYCURSOR;
866
2.57k
    if (yych <= '@') {
867
1.02k
      if (yych <= '/') goto yy91;
868
936
      if (yych <= '9') goto yy109;
869
11
      goto yy91;
870
1.55k
    } else {
871
1.55k
      if (yych <= 'F') goto yy109;
872
947
      if (yych <= '`') goto yy91;
873
943
      if (yych <= 'f') goto yy109;
874
9
      goto yy91;
875
943
    }
876
4.48k
yy104:
877
4.48k
    yych = *++YYCURSOR;
878
4.48k
    if (yych <= '@') {
879
2.70k
      if (yych <= '/') goto yy91;
880
2.63k
      if (yych <= '9') goto yy111;
881
11
      goto yy91;
882
2.63k
    } else {
883
1.78k
      if (yych <= 'F') goto yy111;
884
797
      if (yych <= '`') goto yy91;
885
792
      if (yych <= 'f') goto yy111;
886
15
      goto yy91;
887
792
    }
888
3.35k
yy105:
889
3.35k
    yych = *++YYCURSOR;
890
3.35k
    if (yych <= '@') {
891
782
      if (yych <= '/') goto yy91;
892
738
      if (yych <= '9') goto yy113;
893
3
      goto yy91;
894
2.57k
    } else {
895
2.57k
      if (yych <= 'F') goto yy113;
896
708
      if (yych <= '`') goto yy91;
897
697
      if (yych <= 'f') goto yy113;
898
11
      goto yy91;
899
697
    }
900
79
yy106:
901
79
    yych = *++YYCURSOR;
902
79
    if (yych <= '@') {
903
37
      if (yych <= '/') goto yy91;
904
16
      if (yych <= '9') goto yy115;
905
7
      goto yy91;
906
42
    } else {
907
42
      if (yych <= 'F') goto yy115;
908
35
      if (yych <= '`') goto yy91;
909
26
      if (yych <= 'f') goto yy115;
910
19
      goto yy91;
911
26
    }
912
3.87k
yy107:
913
3.87k
    ++YYCURSOR;
914
3.87k
    {
915
3.87k
    s->str_esc += 5;
916
3.87k
    PHP_JSON_CONDITION_GOTO(STR_P1);
917
79
  }
918
2.46k
yy109:
919
2.46k
    ++YYCURSOR;
920
2.46k
    {
921
2.46k
    s->str_esc += 4;
922
2.46k
    PHP_JSON_CONDITION_GOTO(STR_P1);
923
79
  }
924
4.39k
yy111:
925
4.39k
    ++YYCURSOR;
926
4.39k
    {
927
4.39k
    s->str_esc += 3;
928
4.39k
    PHP_JSON_CONDITION_GOTO(STR_P1);
929
79
  }
930
3.28k
yy113:
931
3.28k
    yyaccept = 2;
932
3.28k
    yych = *(YYMARKER = ++YYCURSOR);
933
3.28k
    if (yych == '\\') goto yy116;
934
287
yy114:
935
287
    {
936
287
    s->errcode = PHP_JSON_ERROR_UTF16;
937
287
    return PHP_JSON_T_ERROR;
938
3.28k
  }
939
23
yy115:
940
23
    ++YYCURSOR;
941
23
    goto yy114;
942
3.22k
yy116:
943
3.22k
    yych = *++YYCURSOR;
944
3.22k
    if (yych != 'u') goto yy91;
945
3.21k
    yych = *++YYCURSOR;
946
3.21k
    if (yych == 'D') goto yy118;
947
766
    if (yych != 'd') goto yy91;
948
3.19k
yy118:
949
3.19k
    yych = *++YYCURSOR;
950
3.19k
    if (yych <= 'B') goto yy91;
951
3.17k
    if (yych <= 'F') goto yy119;
952
1.63k
    if (yych <= 'b') goto yy91;
953
1.63k
    if (yych >= 'g') goto yy91;
954
3.15k
yy119:
955
3.15k
    yych = *++YYCURSOR;
956
3.15k
    if (yych <= '@') {
957
968
      if (yych <= '/') goto yy91;
958
942
      if (yych >= ':') goto yy91;
959
2.18k
    } else {
960
2.18k
      if (yych <= 'F') goto yy120;
961
1.08k
      if (yych <= '`') goto yy91;
962
1.07k
      if (yych >= 'g') goto yy91;
963
1.07k
    }
964
3.10k
yy120:
965
3.10k
    yych = *++YYCURSOR;
966
3.10k
    if (yych <= '@') {
967
1.08k
      if (yych <= '/') goto yy91;
968
1.04k
      if (yych >= ':') goto yy91;
969
2.01k
    } else {
970
2.01k
      if (yych <= 'F') goto yy121;
971
975
      if (yych <= '`') goto yy91;
972
966
      if (yych >= 'g') goto yy91;
973
966
    }
974
3.02k
yy121:
975
3.02k
    ++YYCURSOR;
976
3.02k
    {
977
3.02k
    s->str_esc += 8;
978
3.02k
    PHP_JSON_CONDITION_GOTO(STR_P1);
979
3.10k
  }
980
/* *********************************** */
981
0
yyc_STR_P2_BIN:
982
0
    yych = *YYCURSOR;
983
0
    if (yych <= 0xDF) {
984
0
      if (yych <= '[') {
985
0
        if (yych == '"') goto yy127;
986
0
      } else {
987
0
        if (yych <= '\\') goto yy129;
988
0
        if (yych <= 0x7F) goto yy125;
989
0
        if (yych <= 0xC1) goto yy131;
990
0
        goto yy133;
991
0
      }
992
0
    } else {
993
0
      if (yych <= 0xEF) {
994
0
        if (yych <= 0xE0) goto yy134;
995
0
        if (yych == 0xED) goto yy136;
996
0
        goto yy135;
997
0
      } else {
998
0
        if (yych <= 0xF0) goto yy137;
999
0
        if (yych <= 0xF3) goto yy138;
1000
0
        if (yych <= 0xF4) goto yy139;
1001
0
        goto yy131;
1002
0
      }
1003
0
    }
1004
0
yy125:
1005
0
    ++YYCURSOR;
1006
0
    { PHP_JSON_CONDITION_GOTO(STR_P2_BIN); }
1007
0
yy127:
1008
0
    ++YYCURSOR;
1009
0
    YYSETCONDITION(yycJS);
1010
0
    {
1011
0
    PHP_JSON_SCANNER_COPY_ESC();
1012
0
    return PHP_JSON_T_STRING;
1013
0
  }
1014
0
yy129:
1015
0
    yyaccept = 0;
1016
0
    yych = *(YYMARKER = ++YYCURSOR);
1017
0
    if (yych == 'u') goto yy140;
1018
0
yy130:
1019
0
    {
1020
0
    unsigned char esc;
1021
0
    PHP_JSON_SCANNER_COPY_ESC();
1022
0
    switch (*s->cursor) {
1023
0
      case 'b':
1024
0
        esc = '\b';
1025
0
        break;
1026
0
      case 'f':
1027
0
        esc = '\f';       break;
1028
0
      case 'n':
1029
0
        esc = '\n';
1030
0
        break;
1031
0
      case 'r':
1032
0
        esc = '\r';
1033
0
        break;
1034
0
      case 't':
1035
0
        esc = '\t';
1036
0
        break;
1037
0
      case '\\':
1038
0
      case '/':
1039
0
      case '"':
1040
0
        esc = *s->cursor;
1041
0
        break;
1042
0
      default:
1043
0
        s->errcode = PHP_JSON_ERROR_SYNTAX;
1044
0
        return PHP_JSON_T_ERROR;
1045
0
    }
1046
0
    *(s->pstr++) = esc;
1047
0
    ++YYCURSOR;
1048
0
    s->str_start = s->cursor;
1049
0
    PHP_JSON_CONDITION_GOTO_STR_P2();
1050
0
  }
1051
0
yy131:
1052
0
    ++YYCURSOR;
1053
0
yy132:
1054
0
    {
1055
0
    if (s->utf8_invalid) {
1056
0
      PHP_JSON_SCANNER_COPY_ESC();
1057
0
      if (s->options & PHP_JSON_INVALID_UTF8_SUBSTITUTE) {
1058
0
        *(s->pstr++) = (unsigned char) (0xe0 | (0xfffd >> 12));
1059
0
        *(s->pstr++) = (unsigned char) (0x80 | ((0xfffd >> 6) & 0x3f));
1060
0
        *(s->pstr++) = (unsigned char) (0x80 | (0xfffd & 0x3f));
1061
0
      }
1062
0
      s->str_start = s->cursor;
1063
0
    }
1064
0
    PHP_JSON_CONDITION_GOTO(STR_P2_BIN);
1065
0
  }
1066
0
yy133:
1067
0
    yych = *++YYCURSOR;
1068
0
    if (yych <= 0x7F) goto yy132;
1069
0
    if (yych <= 0xBF) goto yy125;
1070
0
    goto yy132;
1071
0
yy134:
1072
0
    yyaccept = 1;
1073
0
    yych = *(YYMARKER = ++YYCURSOR);
1074
0
    if (yych <= 0x9F) goto yy132;
1075
0
    if (yych <= 0xBF) goto yy142;
1076
0
    goto yy132;
1077
0
yy135:
1078
0
    yyaccept = 1;
1079
0
    yych = *(YYMARKER = ++YYCURSOR);
1080
0
    if (yych <= 0x7F) goto yy132;
1081
0
    if (yych <= 0xBF) goto yy142;
1082
0
    goto yy132;
1083
0
yy136:
1084
0
    yyaccept = 1;
1085
0
    yych = *(YYMARKER = ++YYCURSOR);
1086
0
    if (yych <= 0x7F) goto yy132;
1087
0
    if (yych <= 0x9F) goto yy142;
1088
0
    goto yy132;
1089
0
yy137:
1090
0
    yyaccept = 1;
1091
0
    yych = *(YYMARKER = ++YYCURSOR);
1092
0
    if (yych <= 0x8F) goto yy132;
1093
0
    if (yych <= 0xBF) goto yy143;
1094
0
    goto yy132;
1095
0
yy138:
1096
0
    yyaccept = 1;
1097
0
    yych = *(YYMARKER = ++YYCURSOR);
1098
0
    if (yych <= 0x7F) goto yy132;
1099
0
    if (yych <= 0xBF) goto yy143;
1100
0
    goto yy132;
1101
0
yy139:
1102
0
    yyaccept = 1;
1103
0
    yych = *(YYMARKER = ++YYCURSOR);
1104
0
    if (yych <= 0x7F) goto yy132;
1105
0
    if (yych <= 0x8F) goto yy143;
1106
0
    goto yy132;
1107
0
yy140:
1108
0
    yych = *++YYCURSOR;
1109
0
    if (yych <= 'D') {
1110
0
      if (yych <= '9') {
1111
0
        if (yych <= '/') goto yy141;
1112
0
        if (yych <= '0') goto yy144;
1113
0
        goto yy145;
1114
0
      } else {
1115
0
        if (yych <= '@') goto yy141;
1116
0
        if (yych <= 'C') goto yy145;
1117
0
        goto yy146;
1118
0
      }
1119
0
    } else {
1120
0
      if (yych <= 'c') {
1121
0
        if (yych <= 'F') goto yy145;
1122
0
        if (yych >= 'a') goto yy145;
1123
0
      } else {
1124
0
        if (yych <= 'd') goto yy146;
1125
0
        if (yych <= 'f') goto yy145;
1126
0
      }
1127
0
    }
1128
0
yy141:
1129
0
    YYCURSOR = YYMARKER;
1130
0
    if (yyaccept == 0) {
1131
0
      goto yy130;
1132
0
    } else {
1133
0
      goto yy132;
1134
0
    }
1135
0
yy142:
1136
0
    yych = *++YYCURSOR;
1137
0
    if (yych <= 0x7F) goto yy141;
1138
0
    if (yych <= 0xBF) goto yy125;
1139
0
    goto yy141;
1140
0
yy143:
1141
0
    yych = *++YYCURSOR;
1142
0
    if (yych <= 0x7F) goto yy141;
1143
0
    if (yych <= 0xBF) goto yy142;
1144
0
    goto yy141;
1145
0
yy144:
1146
0
    yych = *++YYCURSOR;
1147
0
    if (yych <= '9') {
1148
0
      if (yych <= '/') goto yy141;
1149
0
      if (yych <= '0') goto yy147;
1150
0
      if (yych <= '7') goto yy148;
1151
0
      goto yy149;
1152
0
    } else {
1153
0
      if (yych <= 'F') {
1154
0
        if (yych <= '@') goto yy141;
1155
0
        goto yy149;
1156
0
      } else {
1157
0
        if (yych <= '`') goto yy141;
1158
0
        if (yych <= 'f') goto yy149;
1159
0
        goto yy141;
1160
0
      }
1161
0
    }
1162
0
yy145:
1163
0
    yych = *++YYCURSOR;
1164
0
    if (yych <= '@') {
1165
0
      if (yych <= '/') goto yy141;
1166
0
      if (yych <= '9') goto yy149;
1167
0
      goto yy141;
1168
0
    } else {
1169
0
      if (yych <= 'F') goto yy149;
1170
0
      if (yych <= '`') goto yy141;
1171
0
      if (yych <= 'f') goto yy149;
1172
0
      goto yy141;
1173
0
    }
1174
0
yy146:
1175
0
    yych = *++YYCURSOR;
1176
0
    if (yych <= '@') {
1177
0
      if (yych <= '/') goto yy141;
1178
0
      if (yych <= '7') goto yy149;
1179
0
      if (yych <= '9') goto yy150;
1180
0
      goto yy141;
1181
0
    } else {
1182
0
      if (yych <= 'B') goto yy150;
1183
0
      if (yych <= '`') goto yy141;
1184
0
      if (yych <= 'b') goto yy150;
1185
0
      goto yy141;
1186
0
    }
1187
0
yy147:
1188
0
    yych = *++YYCURSOR;
1189
0
    if (yych <= '@') {
1190
0
      if (yych <= '/') goto yy141;
1191
0
      if (yych <= '7') goto yy151;
1192
0
      if (yych <= '9') goto yy152;
1193
0
      goto yy141;
1194
0
    } else {
1195
0
      if (yych <= 'F') goto yy152;
1196
0
      if (yych <= '`') goto yy141;
1197
0
      if (yych <= 'f') goto yy152;
1198
0
      goto yy141;
1199
0
    }
1200
0
yy148:
1201
0
    yych = *++YYCURSOR;
1202
0
    if (yych <= '@') {
1203
0
      if (yych <= '/') goto yy141;
1204
0
      if (yych <= '9') goto yy152;
1205
0
      goto yy141;
1206
0
    } else {
1207
0
      if (yych <= 'F') goto yy152;
1208
0
      if (yych <= '`') goto yy141;
1209
0
      if (yych <= 'f') goto yy152;
1210
0
      goto yy141;
1211
0
    }
1212
0
yy149:
1213
0
    yych = *++YYCURSOR;
1214
0
    if (yych <= '@') {
1215
0
      if (yych <= '/') goto yy141;
1216
0
      if (yych <= '9') goto yy153;
1217
0
      goto yy141;
1218
0
    } else {
1219
0
      if (yych <= 'F') goto yy153;
1220
0
      if (yych <= '`') goto yy141;
1221
0
      if (yych <= 'f') goto yy153;
1222
0
      goto yy141;
1223
0
    }
1224
0
yy150:
1225
0
    yych = *++YYCURSOR;
1226
0
    if (yych <= '@') {
1227
0
      if (yych <= '/') goto yy141;
1228
0
      if (yych <= '9') goto yy154;
1229
0
      goto yy141;
1230
0
    } else {
1231
0
      if (yych <= 'F') goto yy154;
1232
0
      if (yych <= '`') goto yy141;
1233
0
      if (yych <= 'f') goto yy154;
1234
0
      goto yy141;
1235
0
    }
1236
0
yy151:
1237
0
    yych = *++YYCURSOR;
1238
0
    if (yych <= '@') {
1239
0
      if (yych <= '/') goto yy141;
1240
0
      if (yych <= '9') goto yy155;
1241
0
      goto yy141;
1242
0
    } else {
1243
0
      if (yych <= 'F') goto yy155;
1244
0
      if (yych <= '`') goto yy141;
1245
0
      if (yych <= 'f') goto yy155;
1246
0
      goto yy141;
1247
0
    }
1248
0
yy152:
1249
0
    yych = *++YYCURSOR;
1250
0
    if (yych <= '@') {
1251
0
      if (yych <= '/') goto yy141;
1252
0
      if (yych <= '9') goto yy157;
1253
0
      goto yy141;
1254
0
    } else {
1255
0
      if (yych <= 'F') goto yy157;
1256
0
      if (yych <= '`') goto yy141;
1257
0
      if (yych <= 'f') goto yy157;
1258
0
      goto yy141;
1259
0
    }
1260
0
yy153:
1261
0
    yych = *++YYCURSOR;
1262
0
    if (yych <= '@') {
1263
0
      if (yych <= '/') goto yy141;
1264
0
      if (yych <= '9') goto yy159;
1265
0
      goto yy141;
1266
0
    } else {
1267
0
      if (yych <= 'F') goto yy159;
1268
0
      if (yych <= '`') goto yy141;
1269
0
      if (yych <= 'f') goto yy159;
1270
0
      goto yy141;
1271
0
    }
1272
0
yy154:
1273
0
    yych = *++YYCURSOR;
1274
0
    if (yych <= '@') {
1275
0
      if (yych <= '/') goto yy141;
1276
0
      if (yych <= '9') goto yy161;
1277
0
      goto yy141;
1278
0
    } else {
1279
0
      if (yych <= 'F') goto yy161;
1280
0
      if (yych <= '`') goto yy141;
1281
0
      if (yych <= 'f') goto yy161;
1282
0
      goto yy141;
1283
0
    }
1284
0
yy155:
1285
0
    ++YYCURSOR;
1286
0
    {
1287
0
    int utf16 = php_json_ucs2_to_int(s, 2);
1288
0
    PHP_JSON_SCANNER_COPY_UTF();
1289
0
    *(s->pstr++) = (unsigned char) utf16;
1290
0
    s->str_start = s->cursor;
1291
0
    PHP_JSON_CONDITION_GOTO_STR_P2();
1292
0
  }
1293
0
yy157:
1294
0
    ++YYCURSOR;
1295
0
    {
1296
0
    int utf16 = php_json_ucs2_to_int(s, 3);
1297
0
    PHP_JSON_SCANNER_COPY_UTF();
1298
0
    *(s->pstr++) = (unsigned char) (0xc0 | (utf16 >> 6));
1299
0
    *(s->pstr++) = (unsigned char) (0x80 | (utf16 & 0x3f));
1300
0
    s->str_start = s->cursor;
1301
0
    PHP_JSON_CONDITION_GOTO_STR_P2();
1302
0
  }
1303
0
yy159:
1304
0
    ++YYCURSOR;
1305
0
    {
1306
0
    int utf16 = php_json_ucs2_to_int(s, 4);
1307
0
    PHP_JSON_SCANNER_COPY_UTF();
1308
0
    *(s->pstr++) = (unsigned char) (0xe0 | (utf16 >> 12));
1309
0
    *(s->pstr++) = (unsigned char) (0x80 | ((utf16 >> 6) & 0x3f));
1310
0
    *(s->pstr++) = (unsigned char) (0x80 | (utf16 & 0x3f));
1311
0
    s->str_start = s->cursor;
1312
0
    PHP_JSON_CONDITION_GOTO_STR_P2();
1313
0
  }
1314
0
yy161:
1315
0
    yych = *++YYCURSOR;
1316
0
    if (yych != '\\') goto yy141;
1317
0
    yych = *++YYCURSOR;
1318
0
    if (yych != 'u') goto yy141;
1319
0
    yych = *++YYCURSOR;
1320
0
    if (yych == 'D') goto yy164;
1321
0
    if (yych != 'd') goto yy141;
1322
0
yy164:
1323
0
    yych = *++YYCURSOR;
1324
0
    if (yych <= 'B') goto yy141;
1325
0
    if (yych <= 'F') goto yy165;
1326
0
    if (yych <= 'b') goto yy141;
1327
0
    if (yych >= 'g') goto yy141;
1328
0
yy165:
1329
0
    yych = *++YYCURSOR;
1330
0
    if (yych <= '@') {
1331
0
      if (yych <= '/') goto yy141;
1332
0
      if (yych >= ':') goto yy141;
1333
0
    } else {
1334
0
      if (yych <= 'F') goto yy166;
1335
0
      if (yych <= '`') goto yy141;
1336
0
      if (yych >= 'g') goto yy141;
1337
0
    }
1338
0
yy166:
1339
0
    yych = *++YYCURSOR;
1340
0
    if (yych <= '@') {
1341
0
      if (yych <= '/') goto yy141;
1342
0
      if (yych >= ':') goto yy141;
1343
0
    } else {
1344
0
      if (yych <= 'F') goto yy167;
1345
0
      if (yych <= '`') goto yy141;
1346
0
      if (yych >= 'g') goto yy141;
1347
0
    }
1348
0
yy167:
1349
0
    ++YYCURSOR;
1350
0
    {
1351
0
    int utf32, utf16_hi, utf16_lo;
1352
0
    utf16_hi = php_json_ucs2_to_int(s, 4);
1353
0
    utf16_lo = php_json_ucs2_to_int_ex(s, 4, 7);
1354
0
    utf32 = ((utf16_lo & 0x3FF) << 10) + (utf16_hi & 0x3FF) + 0x10000;
1355
0
    PHP_JSON_SCANNER_COPY_UTF_SP();
1356
0
    *(s->pstr++) = (unsigned char) (0xf0 | (utf32 >> 18));
1357
0
    *(s->pstr++) = (unsigned char) (0x80 | ((utf32 >> 12) & 0x3f));
1358
0
    *(s->pstr++) = (unsigned char) (0x80 | ((utf32 >> 6) & 0x3f));
1359
0
    *(s->pstr++) = (unsigned char) (0x80 | (utf32 & 0x3f));
1360
0
    s->str_start = s->cursor;
1361
0
    PHP_JSON_CONDITION_GOTO_STR_P2();
1362
0
  }
1363
/* *********************************** */
1364
20.3M
yyc_STR_P2_UTF:
1365
20.3M
    yych = *YYCURSOR;
1366
20.3M
    if (yych == '"') goto yy173;
1367
20.3M
    if (yych == '\\') goto yy175;
1368
20.3M
    ++YYCURSOR;
1369
20.3M
    { PHP_JSON_CONDITION_GOTO(STR_P2_UTF); }
1370
3.58k
yy173:
1371
3.58k
    ++YYCURSOR;
1372
3.58k
    YYSETCONDITION(yycJS);
1373
3.58k
    {
1374
3.58k
    PHP_JSON_SCANNER_COPY_ESC();
1375
3.58k
    return PHP_JSON_T_STRING;
1376
20.3M
  }
1377
12.7k
yy175:
1378
12.7k
    yych = *(YYMARKER = ++YYCURSOR);
1379
12.7k
    if (yych == 'u') goto yy177;
1380
2.76k
yy176:
1381
2.76k
    {
1382
2.76k
    unsigned char esc;
1383
2.76k
    PHP_JSON_SCANNER_COPY_ESC();
1384
2.76k
    switch (*s->cursor) {
1385
293
      case 'b':
1386
293
        esc = '\b';
1387
293
        break;
1388
518
      case 'f':
1389
518
        esc = '\f';       break;
1390
384
      case 'n':
1391
384
        esc = '\n';
1392
384
        break;
1393
247
      case 'r':
1394
247
        esc = '\r';
1395
247
        break;
1396
243
      case 't':
1397
243
        esc = '\t';
1398
243
        break;
1399
391
      case '\\':
1400
837
      case '/':
1401
1.07k
      case '"':
1402
1.07k
        esc = *s->cursor;
1403
1.07k
        break;
1404
0
      default:
1405
0
        s->errcode = PHP_JSON_ERROR_SYNTAX;
1406
0
        return PHP_JSON_T_ERROR;
1407
2.76k
    }
1408
2.76k
    *(s->pstr++) = esc;
1409
2.76k
    ++YYCURSOR;
1410
2.76k
    s->str_start = s->cursor;
1411
2.76k
    PHP_JSON_CONDITION_GOTO_STR_P2();
1412
2.76k
  }
1413
9.98k
yy177:
1414
9.98k
    yych = *++YYCURSOR;
1415
9.98k
    if (yych <= 'D') {
1416
8.45k
      if (yych <= '9') {
1417
6.82k
        if (yych <= '/') goto yy178;
1418
6.82k
        if (yych <= '0') goto yy179;
1419
433
        goto yy180;
1420
6.82k
      } else {
1421
1.62k
        if (yych <= '@') goto yy178;
1422
1.62k
        if (yych <= 'C') goto yy180;
1423
1.41k
        goto yy181;
1424
1.62k
      }
1425
8.45k
    } else {
1426
1.52k
      if (yych <= 'c') {
1427
501
        if (yych <= 'F') goto yy180;
1428
223
        if (yych >= 'a') goto yy180;
1429
1.02k
      } else {
1430
1.02k
        if (yych <= 'd') goto yy181;
1431
230
        if (yych <= 'f') goto yy180;
1432
230
      }
1433
1.52k
    }
1434
0
yy178:
1435
0
    YYCURSOR = YYMARKER;
1436
0
    goto yy176;
1437
6.39k
yy179:
1438
6.39k
    yych = *++YYCURSOR;
1439
6.39k
    if (yych <= '9') {
1440
5.93k
      if (yych <= '/') goto yy178;
1441
5.93k
      if (yych <= '0') goto yy182;
1442
1.57k
      if (yych <= '7') goto yy183;
1443
286
      goto yy184;
1444
1.57k
    } else {
1445
463
      if (yych <= 'F') {
1446
207
        if (yych <= '@') goto yy178;
1447
207
        goto yy184;
1448
256
      } else {
1449
256
        if (yych <= '`') goto yy178;
1450
256
        if (yych <= 'f') goto yy184;
1451
0
        goto yy178;
1452
256
      }
1453
463
    }
1454
1.37k
yy180:
1455
1.37k
    yych = *++YYCURSOR;
1456
1.37k
    if (yych <= '@') {
1457
604
      if (yych <= '/') goto yy178;
1458
604
      if (yych <= '9') goto yy184;
1459
0
      goto yy178;
1460
770
    } else {
1461
770
      if (yych <= 'F') goto yy184;
1462
475
      if (yych <= '`') goto yy178;
1463
475
      if (yych <= 'f') goto yy184;
1464
0
      goto yy178;
1465
475
    }
1466
2.21k
yy181:
1467
2.21k
    yych = *++YYCURSOR;
1468
2.21k
    if (yych <= '@') {
1469
922
      if (yych <= '/') goto yy178;
1470
922
      if (yych <= '7') goto yy184;
1471
325
      if (yych <= '9') goto yy185;
1472
0
      goto yy178;
1473
1.28k
    } else {
1474
1.28k
      if (yych <= 'B') goto yy185;
1475
494
      if (yych <= '`') goto yy178;
1476
494
      if (yych <= 'b') goto yy185;
1477
0
      goto yy178;
1478
494
    }
1479
4.35k
yy182:
1480
4.35k
    yych = *++YYCURSOR;
1481
4.35k
    if (yych <= '@') {
1482
3.89k
      if (yych <= '/') goto yy178;
1483
3.89k
      if (yych <= '7') goto yy186;
1484
218
      if (yych <= '9') goto yy187;
1485
0
      goto yy178;
1486
467
    } else {
1487
467
      if (yych <= 'F') goto yy187;
1488
257
      if (yych <= '`') goto yy178;
1489
257
      if (yych <= 'f') goto yy187;
1490
0
      goto yy178;
1491
257
    }
1492
1.28k
yy183:
1493
1.28k
    yych = *++YYCURSOR;
1494
1.28k
    if (yych <= '@') {
1495
413
      if (yych <= '/') goto yy178;
1496
413
      if (yych <= '9') goto yy187;
1497
0
      goto yy178;
1498
875
    } else {
1499
875
      if (yych <= 'F') goto yy187;
1500
567
      if (yych <= '`') goto yy178;
1501
567
      if (yych <= 'f') goto yy187;
1502
0
      goto yy178;
1503
567
    }
1504
2.72k
yy184:
1505
2.72k
    yych = *++YYCURSOR;
1506
2.72k
    if (yych <= '@') {
1507
1.71k
      if (yych <= '/') goto yy178;
1508
1.71k
      if (yych <= '9') goto yy188;
1509
0
      goto yy178;
1510
1.71k
    } else {
1511
1.00k
      if (yych <= 'F') goto yy188;
1512
460
      if (yych <= '`') goto yy178;
1513
460
      if (yych <= 'f') goto yy188;
1514
0
      goto yy178;
1515
460
    }
1516
1.61k
yy185:
1517
1.61k
    yych = *++YYCURSOR;
1518
1.61k
    if (yych <= '@') {
1519
501
      if (yych <= '/') goto yy178;
1520
501
      if (yych <= '9') goto yy189;
1521
0
      goto yy178;
1522
1.11k
    } else {
1523
1.11k
      if (yych <= 'F') goto yy189;
1524
629
      if (yych <= '`') goto yy178;
1525
629
      if (yych <= 'f') goto yy189;
1526
0
      goto yy178;
1527
629
    }
1528
3.67k
yy186:
1529
3.67k
    yych = *++YYCURSOR;
1530
3.67k
    if (yych <= '@') {
1531
3.19k
      if (yych <= '/') goto yy178;
1532
3.19k
      if (yych <= '9') goto yy190;
1533
0
      goto yy178;
1534
3.19k
    } else {
1535
484
      if (yych <= 'F') goto yy190;
1536
226
      if (yych <= '`') goto yy178;
1537
226
      if (yych <= 'f') goto yy190;
1538
0
      goto yy178;
1539
226
    }
1540
1.97k
yy187:
1541
1.97k
    yych = *++YYCURSOR;
1542
1.97k
    if (yych <= '@') {
1543
709
      if (yych <= '/') goto yy178;
1544
709
      if (yych <= '9') goto yy192;
1545
0
      goto yy178;
1546
1.26k
    } else {
1547
1.26k
      if (yych <= 'F') goto yy192;
1548
772
      if (yych <= '`') goto yy178;
1549
772
      if (yych <= 'f') goto yy192;
1550
0
      goto yy178;
1551
772
    }
1552
2.72k
yy188:
1553
2.72k
    yych = *++YYCURSOR;
1554
2.72k
    if (yych <= '@') {
1555
1.70k
      if (yych <= '/') goto yy178;
1556
1.70k
      if (yych <= '9') goto yy194;
1557
0
      goto yy178;
1558
1.70k
    } else {
1559
1.01k
      if (yych <= 'F') goto yy194;
1560
493
      if (yych <= '`') goto yy178;
1561
493
      if (yych <= 'f') goto yy194;
1562
0
      goto yy178;
1563
493
    }
1564
1.61k
yy189:
1565
1.61k
    yych = *++YYCURSOR;
1566
1.61k
    if (yych <= '@') {
1567
399
      if (yych <= '/') goto yy178;
1568
399
      if (yych <= '9') goto yy196;
1569
0
      goto yy178;
1570
1.21k
    } else {
1571
1.21k
      if (yych <= 'F') goto yy196;
1572
248
      if (yych <= '`') goto yy178;
1573
248
      if (yych <= 'f') goto yy196;
1574
0
      goto yy178;
1575
248
    }
1576
3.67k
yy190:
1577
3.67k
    ++YYCURSOR;
1578
3.67k
    {
1579
3.67k
    int utf16 = php_json_ucs2_to_int(s, 2);
1580
3.67k
    PHP_JSON_SCANNER_COPY_UTF();
1581
3.67k
    *(s->pstr++) = (unsigned char) utf16;
1582
3.67k
    s->str_start = s->cursor;
1583
3.67k
    PHP_JSON_CONDITION_GOTO_STR_P2();
1584
3.67k
  }
1585
1.97k
yy192:
1586
1.97k
    ++YYCURSOR;
1587
1.97k
    {
1588
1.97k
    int utf16 = php_json_ucs2_to_int(s, 3);
1589
1.97k
    PHP_JSON_SCANNER_COPY_UTF();
1590
1.97k
    *(s->pstr++) = (unsigned char) (0xc0 | (utf16 >> 6));
1591
1.97k
    *(s->pstr++) = (unsigned char) (0x80 | (utf16 & 0x3f));
1592
1.97k
    s->str_start = s->cursor;
1593
1.97k
    PHP_JSON_CONDITION_GOTO_STR_P2();
1594
1.97k
  }
1595
2.72k
yy194:
1596
2.72k
    ++YYCURSOR;
1597
2.72k
    {
1598
2.72k
    int utf16 = php_json_ucs2_to_int(s, 4);
1599
2.72k
    PHP_JSON_SCANNER_COPY_UTF();
1600
2.72k
    *(s->pstr++) = (unsigned char) (0xe0 | (utf16 >> 12));
1601
2.72k
    *(s->pstr++) = (unsigned char) (0x80 | ((utf16 >> 6) & 0x3f));
1602
2.72k
    *(s->pstr++) = (unsigned char) (0x80 | (utf16 & 0x3f));
1603
2.72k
    s->str_start = s->cursor;
1604
2.72k
    PHP_JSON_CONDITION_GOTO_STR_P2();
1605
2.72k
  }
1606
1.61k
yy196:
1607
1.61k
    yych = *++YYCURSOR;
1608
1.61k
    if (yych != '\\') goto yy178;
1609
1.61k
    yych = *++YYCURSOR;
1610
1.61k
    if (yych != 'u') goto yy178;
1611
1.61k
    yych = *++YYCURSOR;
1612
1.61k
    if (yych == 'D') goto yy199;
1613
307
    if (yych != 'd') goto yy178;
1614
1.61k
yy199:
1615
1.61k
    yych = *++YYCURSOR;
1616
1.61k
    if (yych <= 'B') goto yy178;
1617
1.61k
    if (yych <= 'F') goto yy200;
1618
876
    if (yych <= 'b') goto yy178;
1619
876
    if (yych >= 'g') goto yy178;
1620
1.61k
yy200:
1621
1.61k
    yych = *++YYCURSOR;
1622
1.61k
    if (yych <= '@') {
1623
566
      if (yych <= '/') goto yy178;
1624
566
      if (yych >= ':') goto yy178;
1625
1.04k
    } else {
1626
1.04k
      if (yych <= 'F') goto yy201;
1627
482
      if (yych <= '`') goto yy178;
1628
482
      if (yych >= 'g') goto yy178;
1629
482
    }
1630
1.61k
yy201:
1631
1.61k
    yych = *++YYCURSOR;
1632
1.61k
    if (yych <= '@') {
1633
659
      if (yych <= '/') goto yy178;
1634
659
      if (yych >= ':') goto yy178;
1635
954
    } else {
1636
954
      if (yych <= 'F') goto yy202;
1637
433
      if (yych <= '`') goto yy178;
1638
433
      if (yych >= 'g') goto yy178;
1639
433
    }
1640
1.61k
yy202:
1641
1.61k
    ++YYCURSOR;
1642
1.61k
    {
1643
1.61k
    int utf32, utf16_hi, utf16_lo;
1644
1.61k
    utf16_hi = php_json_ucs2_to_int(s, 4);
1645
1.61k
    utf16_lo = php_json_ucs2_to_int_ex(s, 4, 7);
1646
1.61k
    utf32 = ((utf16_lo & 0x3FF) << 10) + (utf16_hi & 0x3FF) + 0x10000;
1647
1.61k
    PHP_JSON_SCANNER_COPY_UTF_SP();
1648
1.61k
    *(s->pstr++) = (unsigned char) (0xf0 | (utf32 >> 18));
1649
1.61k
    *(s->pstr++) = (unsigned char) (0x80 | ((utf32 >> 12) & 0x3f));
1650
1.61k
    *(s->pstr++) = (unsigned char) (0x80 | ((utf32 >> 6) & 0x3f));
1651
1.61k
    *(s->pstr++) = (unsigned char) (0x80 | (utf32 & 0x3f));
1652
1.61k
    s->str_start = s->cursor;
1653
1.61k
    PHP_JSON_CONDITION_GOTO_STR_P2();
1654
1.61k
  }
1655
1.61k
  }
1656
1657
1658
1.61k
}