TemplateParser::yy_r46()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 2
rs 10
c 1
b 0
f 0
1
<?php
2
3
// line 11 "src/Parser/TemplateParser.y"
4
5
6
namespace Smarty\Parser;
7
8
use \Smarty\Lexer\TemplateLexer as Lexer;
0 ignored issues
show
Bug introduced by
The type \Smarty\Lexer\TemplateLexer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
9
use \Smarty\ParseTree\Template as TemplateParseTree;
0 ignored issues
show
Bug introduced by
The type \Smarty\ParseTree\Template was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
10
use \Smarty\Compiler\Template as TemplateCompiler;
0 ignored issues
show
Bug introduced by
The type \Smarty\Compiler\Template was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
11
use \Smarty\ParseTree\Code;
0 ignored issues
show
Bug introduced by
The type \Smarty\ParseTree\Code was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
12
use \Smarty\ParseTree\Dq;
0 ignored issues
show
Bug introduced by
The type \Smarty\ParseTree\Dq was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
13
use \Smarty\ParseTree\DqContent;
0 ignored issues
show
Bug introduced by
The type \Smarty\ParseTree\DqContent was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
14
use \Smarty\ParseTree\Tag;
0 ignored issues
show
Bug introduced by
The type \Smarty\ParseTree\Tag was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
15
use \Smarty\CompilerException;
0 ignored issues
show
Bug introduced by
The type \Smarty\CompilerException was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
16
17
/**
18
* Smarty Template Parser Class
19
*
20
* This is the template parser.
21
* It is generated from the TemplateParser.y file
22
* 
23
* @author Uwe Tews <[email protected]>
24
*/
25
class TemplateParser
26
{
27
// line 35 "src/Parser/TemplateParser.y"
28
29
    const ERR1 = 'Security error: Call to private object member not allowed';
30
    const ERR2 = 'Security error: Call to dynamic object member not allowed';
31
32
    /**
33
     * result status
34
     *
35
     * @var bool
36
     */
37
    public $successful = true;
38
39
    /**
40
     * return value
41
     *
42
     * @var mixed
43
     */
44
    public $retvalue = 0;
45
46
    /**
47
     * @var
48
     */
49
    public $yymajor;
50
51
    /**
52
     * last index of array variable
53
     *
54
     * @var mixed
55
     */
56
    public $last_index;
57
58
    /**
59
     * last variable name
60
     *
61
     * @var string
62
     */
63
    public $last_variable;
64
65
    /**
66
     * root parse tree buffer
67
     *
68
     * @var TemplateParseTree
69
     */
70
    public $root_buffer;
71
72
    /**
73
     * current parse tree object
74
     *
75
     * @var \Smarty\ParseTree\Base
76
     */
77
    public $current_buffer;
78
79
    /**
80
     * lexer object
81
     *
82
     * @var Lexer
83
     */
84
    public $lex;
85
86
    /**
87
     * internal error flag
88
     *
89
     * @var bool
90
     */
91
    private $internalError = false;
92
93
    /**
94
     * {strip} status
95
     *
96
     * @var bool
97
     */
98
    public $strip = false;
99
    /**
100
     * compiler object
101
     *
102
     * @var TemplateCompiler
103
     */
104
    public $compiler = null;
105
106
    /**
107
     * smarty object
108
     *
109
     * @var \Smarty\Smarty
110
     */
111
    public $smarty = null;
112
113
    /**
114
     * template object
115
     *
116
     * @var \Smarty\Template
117
     */
118
    public $template = null;
119
120
    /**
121
     * block nesting level
122
     *
123
     * @var int
124
     */
125
    public $block_nesting_level = 0;
126
127
    /**
128
     * security object
129
     *
130
     * @var \Smarty\Security
131
     */
132
    public $security = null;
133
134
    /**
135
     * template prefix array
136
     *
137
     * @var \Smarty\ParseTree\Base[]
138
     */
139
    public $template_prefix = array();
140
141
    /**
142
     * template prefix array
143
     *
144
     * @var \Smarty\ParseTree\Base[]
145
     */
146
    public $template_postfix = array();
147
148
    /**
149
     * constructor
150
     *
151
     * @param Lexer        $lex
152
     * @param TemplateCompiler $compiler
153
     */
154
    public function __construct(Lexer $lex, TemplateCompiler $compiler)
155
    {
156
        $this->lex = $lex;
157
        $this->compiler = $compiler;
158
        $this->template = $this->compiler->getTemplate();
159
        $this->smarty = $this->template->getSmarty();
160
        $this->security = $this->smarty->security_policy ?? false;
0 ignored issues
show
Documentation Bug introduced by
It seems like $this->smarty->security_policy ?? false can also be of type false. However, the property $security is declared as type Smarty\Security. Maybe add an additional type check?

Our type inference engine has found a suspicous assignment of a value to a property. This check raises an issue when a value that can be of a mixed type is assigned to a property that is type hinted more strictly.

For example, imagine you have a variable $accountId that can either hold an Id object or false (if there is no account id yet). Your code now assigns that value to the id property of an instance of the Account class. This class holds a proper account, so the id value must no longer be false.

Either this assignment is in error or a type check should be added for that assignment.

class Id
{
    public $id;

    public function __construct($id)
    {
        $this->id = $id;
    }

}

class Account
{
    /** @var  Id $id */
    public $id;
}

$account_id = false;

if (starsAreRight()) {
    $account_id = new Id(42);
}

$account = new Account();
if ($account instanceof Id)
{
    $account->id = $account_id;
}
Loading history...
161
        $this->current_buffer = $this->root_buffer = new TemplateParseTree();
162
    }
163
164
     /**
165
     * insert PHP code in current buffer
166
     *
167
     * @param string $code
168
     */
169
    public function insertPhpCode($code)
170
    {
171
        $this->current_buffer->append_subtree($this, new Tag($this, $code));
0 ignored issues
show
Bug introduced by
The method append_subtree() does not exist on Smarty\ParseTree\Base. It seems like you code against a sub-type of Smarty\ParseTree\Base such as Smarty\ParseTree\Template or Smarty\ParseTree\Dq. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

171
        $this->current_buffer->/** @scrutinizer ignore-call */ 
172
                               append_subtree($this, new Tag($this, $code));
Loading history...
172
    }
173
174
    /**
175
     * error rundown
176
     *
177
     */
178
    public function errorRunDown()
179
    {
180
        while ($this->yystack !== array()) {
181
            $this->yy_pop_parser_stack();
182
        }
183
        if (is_resource($this->yyTraceFILE)) {
184
            fclose($this->yyTraceFILE);
185
        }
186
    }
187
188
    /**
189
     *  merge PHP code with prefix code and return parse tree tag object
190
     *
191
     * @param string $code
192
     *
193
     * @return Tag
194
     */
195
    private function mergePrefixCode($code)
196
    {
197
        $tmp = '';
198
        foreach ($this->compiler->prefix_code as $preCode) {
199
            $tmp .= $preCode;
200
        }
201
        $this->compiler->prefix_code = array();
202
        $tmp .= $code;
203
        return new Tag($this, $this->compiler->processNocacheCode($tmp));
204
    }
205
206
207
    const TP_VERT                           =  1;
208
    const TP_COLON                          =  2;
209
    const TP_TEXT                           =  3;
210
    const TP_STRIPON                        =  4;
211
    const TP_STRIPOFF                       =  5;
212
    const TP_LITERALSTART                   =  6;
213
    const TP_LITERALEND                     =  7;
214
    const TP_LITERAL                        =  8;
215
    const TP_SIMPELOUTPUT                   =  9;
216
    const TP_SIMPLETAG                      = 10;
217
    const TP_SMARTYBLOCKCHILDPARENT         = 11;
218
    const TP_LDEL                           = 12;
219
    const TP_RDEL                           = 13;
220
    const TP_DOLLARID                       = 14;
221
    const TP_EQUAL                          = 15;
222
    const TP_ID                             = 16;
223
    const TP_PTR                            = 17;
224
    const TP_LDELIF                         = 18;
225
    const TP_LDELFOR                        = 19;
226
    const TP_SEMICOLON                      = 20;
227
    const TP_INCDEC                         = 21;
228
    const TP_TO                             = 22;
229
    const TP_STEP                           = 23;
230
    const TP_LDELFOREACH                    = 24;
231
    const TP_SPACE                          = 25;
232
    const TP_AS                             = 26;
233
    const TP_APTR                           = 27;
234
    const TP_LDELSETFILTER                  = 28;
235
    const TP_CLOSETAG                       = 29;
236
    const TP_LDELSLASH                      = 30;
237
    const TP_ATTR                           = 31;
238
    const TP_INTEGER                        = 32;
239
    const TP_COMMA                          = 33;
240
    const TP_OPENP                          = 34;
241
    const TP_CLOSEP                         = 35;
242
    const TP_MATH                           = 36;
243
    const TP_UNIMATH                        = 37;
244
    const TP_ISIN                           = 38;
245
    const TP_QMARK                          = 39;
246
    const TP_NOT                            = 40;
247
    const TP_TYPECAST                       = 41;
248
    const TP_HEX                            = 42;
249
    const TP_DOT                            = 43;
250
    const TP_INSTANCEOF                     = 44;
251
    const TP_SINGLEQUOTESTRING              = 45;
252
    const TP_DOUBLECOLON                    = 46;
253
    const TP_NAMESPACE                      = 47;
254
    const TP_AT                             = 48;
255
    const TP_HATCH                          = 49;
256
    const TP_OPENB                          = 50;
257
    const TP_CLOSEB                         = 51;
258
    const TP_DOLLAR                         = 52;
259
    const TP_LOGOP                          = 53;
260
    const TP_SLOGOP                         = 54;
261
    const TP_TLOGOP                         = 55;
262
    const TP_SINGLECOND                     = 56;
263
    const TP_ARRAYOPEN                      = 57;
264
    const TP_QUOTE                          = 58;
265
    const TP_BACKTICK                       = 59;
266
    const YY_NO_ACTION = 541;
267
    const YY_ACCEPT_ACTION = 540;
268
    const YY_ERROR_ACTION = 539;
269
270
    const YY_SZ_ACTTAB = 2565;
271
public static $yy_action = array(
272
     33,  106,  269,  306,  179,  305,  200,  247,  248,  249,
273
      1,  264,  138,  237,  202,  361,    6,   87,  284,  222,
274
    338,  361,  112,  107,  400,  321,  217,  261,  218,  130,
275
    224,  400,   21,  400,   49,   44,  400,   32,   45,   46,
276
    278,  226,  400,  282,  400,  203,  400,   53,    4,  139,
277
    302,  231,   28,  102,  225,    5,   54,  247,  248,  249,
278
      1,   20,  135,  192,  193,  271,    6,   87,  246,  222,
279
    216,   29,  112,  229,    7,  159,  217,  261,  218,  140,
280
    208,  272,   21,  509,   53,   44,   13,  302,   45,   46,
281
    278,  226,  149,  235,  153,  203,  257,   53,    4,  328,
282
    302,  302,  256,  304,  143,    5,   54,  247,  248,  249,
283
      1,  302,  100,  394,   86,  236,    6,   87,    3,  222,
284
    102,  257,  112,  144,   97,  394,  217,  261,  218,  102,
285
    224,  394,   21,  256,  446,   44,  178,  305,   45,   46,
286
    278,  226,  302,  282,  200,  203,  446,   53,    4,  115,
287
    302,   47,   22,  285,   41,    5,   54,  247,  248,  249,
288
      1,  139,  137,  267,  202,  141,    6,   87,   14,  222,
289
    540,   99,  112,  151,   15,  446,  217,  261,  218,  314,
290
    224,  216,   21,  256,  233,   44,    9,  446,   45,   46,
291
    278,  226,  325,  282,  268,  203,   53,   53,    4,  302,
292
    302,  152,  257,  361,  320,    5,   54,  247,  248,  249,
293
      1,  264,  137,  102,  194,  361,    6,   87,   37,  222,
294
    102,  361,  112,  257,   89,  316,  217,  261,  218,  314,
295
    224,  216,   21,   36,   49,   44,  200,   40,   45,   46,
296
    278,  226,  115,  282,  237,  203,   14,   53,    4,  115,
297
    302,  238,   15,  155,  107,    5,   54,  247,  248,  249,
298
      1,  466,  136,  256,  202,  200,    6,   87,  466,  222,
299
    255,  171,  112,  264,  446,  310,  217,  261,  218,  158,
300
    224,  257,   11,  142,  157,   44,  446,  183,   45,   46,
301
    278,  226,   26,  282,  256,  203,   49,   53,    4,  446,
302
    302,  184,  260,  323,  176,    5,   54,  247,  248,  249,
303
      1,  446,  137,  264,  189,  291,    6,   87,  183,  222,
304
    200,  302,  112,  253,  178,  305,  217,  261,  218,  263,
305
    213,   18,   21,  200,  184,   44,   49,   15,   45,   46,
306
    278,  226,  146,  282,  269,  203,   25,   53,    4,  220,
307
    302,  312,  107,  152,  290,    5,   54,  247,  248,  249,
308
      1,  219,  137,  147,  187,  130,    6,   87,  259,  222,
309
     16,   19,  112,  256,  167,  258,  217,  261,  218,  111,
310
    224,  173,   21,   96,  256,   44,  200,   23,   45,   46,
311
    278,  226,  177,  282,  227,  203,  335,   53,    4,  174,
312
    302,  180,  305,  170,   90,    5,   54,  247,  248,  249,
313
      1,  184,  137,  256,  202,   91,    6,   87,  482,  222,
314
    160,  482,  112,  214,  197,  482,  217,  261,  218,  184,
315
    188,  181,   21,  245,  302,   44,  164,  140,   45,   46,
316
    278,  226,  466,  282,   13,  203,  166,   53,    4,  466,
317
    302,   42,   43,  286,   12,    5,   54,  247,  248,  249,
318
      1,  264,  139,  447,  202,   40,    6,   87,  293,  294,
319
    295,  296,  112,   17,  311,  447,  217,  261,  218,  337,
320
    224,  183,   21,  260,   49,   48,  244,  245,   45,   46,
321
    278,  226,   24,  282,  303,  203,    8,   53,    4,   92,
322
    302,   42,   43,  286,   12,    5,   54,  247,  248,  249,
323
      1,   10,  139,    9,  202,  317,    6,   87,  293,  294,
324
    295,  296,  112,  116,  299,   35,  217,  261,  218,  225,
325
    224,  198,   21,   98,   34,   44,  329,  324,   45,   46,
326
    278,  226,  448,  282,  448,  203,  161,   53,    4,  172,
327
    302,  129,  175,  225,  232,    5,   54,  288,  215,  216,
328
    252,  101,   93,  109,  243,  191,  103,   85,  450,  162,
329
    450,   24,  101,  330,  182,  273,  274,  300,  298,  301,
330
    250,  251,  281,  204,  283,  113,  289,  262,  300,  298,
331
    301,  121,  288,  215,  216,  252,  270,   93,  109,  275,
332
    190,  103,   60,  277,  279,  225,  237,  101,  280,  297,
333
    273,  274,  129,  239,  199,  266,  107,  281,  204,  283,
334
      7,  289,  101,  300,  298,  301,  288,   88,  216,  254,
335
    163,  114,  109,  265,  191,  103,   85,  200,  300,  298,
336
    301,  101,  200,  259,  273,  274,   19,  165,  326,  362,
337
    258,  281,  204,  283,  396,  289,  234,  300,  298,  301,
338
    288,  362,  216,  327,  200,  114,  396,  362,  201,  119,
339
     72,  336,  396,   37,  259,  101,  393,   19,  273,  274,
340
    154,  258,  228,  339,   94,  281,  204,  283,  393,  289,
341
    256,  300,  298,  301,  393,   38,  313,  288,  313,  216,
342
    313,  313,  114,  207,  319,  201,  119,   72,  313,  313,
343
    313,  313,  101,  221,  184,  273,  274,  156,  313,  313,
344
    313,   95,  281,  204,  283,  313,  289,  256,  300,  298,
345
    301,  313,  313,  313,  288,  313,  216,  313,  313,  108,
346
    206,  319,  201,  122,   51,  313,  120,  313,  313,  101,
347
    313,  184,  273,  274,  313,  313,  313,  313,  313,  281,
348
    204,  283,  313,  289,  313,  300,  298,  301,  288,  313,
349
    216,  313,  313,  114,  313,  313,  201,  122,   67,  313,
350
    313,  313,  313,  101,  313,  313,  273,  274,  313,  313,
351
    313,  313,  313,  281,  204,  283,  313,  289,  313,  300,
352
    298,  301,  288,  313,  216,  313,  313,  114,  212,  313,
353
    201,  122,   67,  313,  313,  313,  313,  101,  313,  313,
354
    273,  274,  313,  313,  313,  313,  313,  281,  204,  283,
355
    313,  289,  313,  300,  298,  301,  288,  313,  216,  313,
356
    313,  114,  205,  313,  201,  119,   72,  313,  313,  313,
357
    313,  101,  313,  313,  273,  274,  313,  313,  313,  313,
358
    313,  281,  204,  283,  313,  289,  313,  300,  298,  301,
359
    313,  313,  313,  288,  313,  216,  313,  313,  114,  313,
360
    318,  201,  122,   78,  313,  313,  313,  313,  101,  313,
361
    482,  273,  274,  482,  313,  313,  313,  482,  281,  204,
362
    283,  313,  289,  209,  211,  298,  301,  288,  313,  216,
363
    313,  313,  108,  313,  313,  201,  122,   58,  313,  238,
364
    313,  313,  101,  313,  313,  273,  274,  313,  313,  482,
365
    313,  313,  281,  204,  283,  313,  289,  313,  300,  298,
366
    301,  288,  313,  216,  313,  313,  114,  313,  313,  201,
367
    118,   64,  313,  313,  313,  313,  101,  313,  313,  273,
368
    274,  313,  313,  313,  313,  313,  281,  204,  283,  313,
369
    289,  313,  300,  298,  301,  288,  313,  216,  313,  313,
370
    114,  313,  313,  196,  117,   59,  313,  313,  313,  313,
371
    101,  313,  313,  273,  274,  313,  313,  313,  313,  313,
372
    281,  204,  283,  313,  289,  313,  300,  298,  301,  288,
373
    313,  216,  313,  313,  114,  313,  313,  201,  104,   84,
374
    313,  313,  313,  313,  101,  313,  313,  273,  274,  313,
375
    313,  313,  313,  313,  281,  204,  283,  313,  289,  313,
376
    300,  298,  301,  288,  313,  216,  313,  313,  114,  313,
377
    313,  201,  105,   83,  313,  313,  313,  313,  101,  313,
378
    313,  273,  274,  313,  313,  313,  313,  313,  281,  204,
379
    283,  313,  289,  313,  300,  298,  301,  288,  313,  216,
380
    313,  313,  114,  313,  313,  201,  122,   55,  313,  313,
381
    313,  313,  101,  313,  313,  273,  274,  313,  313,  313,
382
    313,  313,  281,  204,  283,  313,  289,  313,  300,  298,
383
    301,  288,  313,  216,  313,  313,  114,  313,  313,  201,
384
    122,   66,  313,  313,  313,  313,  101,  313,  313,  273,
385
    274,  313,  313,  313,  313,  313,  281,  204,  283,  313,
386
    289,  313,  300,  298,  301,  288,  313,  216,  313,  313,
387
    114,  313,  313,  201,  104,   56,  313,  313,  313,  313,
388
    101,  313,  313,  273,  274,  313,  313,  313,  313,  313,
389
    281,  204,  283,  313,  289,  313,  300,  298,  301,  288,
390
    313,  216,  313,  313,  114,  313,  313,  201,  122,   65,
391
    313,  313,  313,  313,  101,  313,  313,  273,  274,  313,
392
    313,  313,  313,  313,  281,  204,  283,  313,  289,  313,
393
    300,  298,  301,  288,  313,  216,  313,  313,  114,  313,
394
    313,  201,  122,   57,  313,  313,  313,  313,  101,  313,
395
    313,  273,  274,  313,  313,  313,  313,  313,  281,  204,
396
    283,  313,  289,  313,  300,  298,  301,  288,  313,  216,
397
    313,  313,  114,  313,  313,  201,  122,   58,  313,  313,
398
    313,  313,  101,  313,  313,  273,  274,  313,  313,  313,
399
    313,  313,  281,  204,  283,  313,  289,  313,  300,  298,
400
    301,  288,  313,  216,  313,  313,  114,  313,  313,  201,
401
    122,   68,  313,  313,  313,  313,  101,  313,  313,  273,
402
    274,  313,  313,  313,  313,  313,  281,  204,  283,  313,
403
    289,  313,  300,  298,  301,  288,  313,  216,  313,  313,
404
    114,  313,  313,  201,  122,   69,  313,  313,  313,  313,
405
    101,  313,  313,  273,  274,  313,  313,  313,  313,  313,
406
    281,  204,  283,  313,  289,  313,  300,  298,  301,  288,
407
    313,  216,  313,  313,  114,  313,  313,  201,  122,   70,
408
    313,  313,  313,  313,  101,  313,  313,  273,  274,  313,
409
    313,  313,  313,  313,  281,  204,  283,  313,  289,  313,
410
    300,  298,  301,  288,  313,  216,  313,  313,  114,  313,
411
    313,  201,  122,   71,  313,  313,  313,  313,  101,  313,
412
    313,  273,  274,  313,  313,  313,  313,  313,  281,  204,
413
    283,  313,  289,  313,  300,  298,  301,  288,  313,  216,
414
    313,  313,  114,  313,  313,  201,  122,   73,  313,  313,
415
    313,  313,  101,  313,  313,  273,  274,  313,  313,  313,
416
    313,  313,  281,  204,  283,  313,  289,  313,  300,  298,
417
    301,  288,  313,  216,  313,  313,  114,  313,  313,  195,
418
    122,   61,  313,  313,  313,  313,  101,  313,  313,  273,
419
    274,  313,  313,  313,  313,  313,  281,  204,  283,  313,
420
    289,  313,  300,  298,  301,  288,  313,  216,  313,  313,
421
    114,  313,  313,  201,  122,   62,  313,  313,  313,  313,
422
    101,  313,  313,  273,  274,  313,  313,  313,  313,  313,
423
    281,  204,  283,  313,  289,  313,  300,  298,  301,  288,
424
    313,  216,  313,  313,  114,  313,  313,  201,  122,   63,
425
    313,  313,  313,  313,  101,  313,  313,  273,  274,  313,
426
    313,  313,  313,  313,  281,  204,  283,  313,  289,  313,
427
    300,  298,  301,  288,  313,  216,  313,  313,  114,  313,
428
    313,  201,  122,   74,  313,  313,  313,  313,  101,  313,
429
    313,  273,  274,  313,  313,  313,  313,  313,  281,  204,
430
    283,  313,  289,  313,  300,  298,  301,  288,  313,  216,
431
    313,  313,  114,  313,  313,  201,  122,   75,  313,  313,
432
    313,  313,  101,  313,  313,  273,  274,  313,  313,  313,
433
    313,  313,  281,  204,  283,  313,  289,  313,  300,  298,
434
    301,  288,  313,  216,  313,  313,  114,  313,  313,  201,
435
    122,   76,  313,  313,  313,  313,  101,  313,  313,  273,
436
    274,  313,  313,  313,  313,  313,  281,  204,  283,  313,
437
    289,  313,  300,  298,  301,  288,  313,  216,  313,  313,
438
    114,  313,  313,  201,  122,   77,  313,  313,  313,  313,
439
    101,  313,  313,  273,  274,  313,  313,  313,  313,  313,
440
    281,  204,  283,  313,  289,  313,  300,  298,  301,  288,
441
    313,  216,  313,  313,  114,  313,  313,  201,  122,   79,
442
    313,  313,  313,  313,  101,  313,  313,  273,  274,  313,
443
    313,  313,  313,  313,  281,  204,  283,  313,  289,  313,
444
    210,  298,  301,  288,  313,  216,  313,  313,  114,  313,
445
    313,  201,  122,   80,  313,  313,  313,  313,  101,  313,
446
    313,  273,  274,  313,  313,  313,  313,  313,  281,  204,
447
    283,  313,  289,  313,  300,  298,  301,  288,  313,  216,
448
    313,  313,  114,  313,  313,  201,  122,   81,  313,  313,
449
    313,  313,  101,  313,  313,  273,  274,  313,  313,  313,
450
    313,  313,  281,  204,  283,  313,  289,  313,  300,  298,
451
    301,  288,  313,  216,  313,  313,  114,  313,  313,  201,
452
    122,   82,  313,  313,  313,  313,  101,  313,  313,  273,
453
    274,  313,  313,  313,  313,  313,  281,  204,  283,  313,
454
    289,  313,  300,  298,  301,  288,  313,  216,  313,  313,
455
    114,  313,  313,  201,  122,   50,  313,  313,  313,  313,
456
    101,  313,  313,  273,  274,  313,  313,  313,  313,  313,
457
    281,  204,  283,  313,  289,  313,  300,  298,  301,  288,
458
    313,  216,  313,  313,  114,  313,  313,  201,  122,   52,
459
    313,  313,  313,  313,  101,  313,  313,  273,  274,  313,
460
    313,  313,  313,  313,  281,  204,  283,  313,  289,  313,
461
    300,  298,  301,  288,  313,  216,  168,  313,  114,  313,
462
    313,  201,  134,  313,  313,  313,  256,  313,  101,   47,
463
     22,  285,   41,  313,  313,  313,  313,  333,  281,  204,
464
    283,  313,  289,  313,  300,  298,  301,  288,  313,  216,
465
    145,  313,  114,  313,  313,  201,  128,  313,  313,  313,
466
    256,  313,  101,   47,   22,  285,   41,  313,  313,  313,
467
    313,  287,  281,  204,  283,  315,  289,  313,  300,  298,
468
    301,  247,  248,  249,    2,  313,  313,  313,  313,  313,
469
      6,   87,  259,  313,  313,   19,  112,  313,   14,  258,
470
    217,  261,  218,  313,   15,   39,  313,   14,   14,   42,
471
     43,  286,   12,   15,   15,  313,  313,  313,   42,   43,
472
    286,   12,  313,  313,  313,  313,  293,  294,  295,  296,
473
    308,   27,  313,  313,  315,  293,  294,  295,  296,  313,
474
    247,  248,  249,    2,  313,  313,  313,  110,  313,    6,
475
     87,  313,  313,  313,  313,  112,  313,  313,  148,  217,
476
    261,  218,  313,   42,   43,  286,   12,  313,   42,   43,
477
    286,   12,  313,  313,  313,  313,  313,  313,  313,  313,
478
    293,  294,  295,  296,  313,  293,  294,  295,  296,  309,
479
     27,  313,  313,  240,  241,  242,  133,  223,  313,  247,
480
    248,  249,    1,  313,  482,  313,  313,  482,    6,   87,
481
      3,  482,  466,  313,  112,  313,  276,  313,  217,  261,
482
    218,  288,  313,  216,  313,  313,  114,  313,  313,  201,
483
    132,  313,  313,  313,  313,  313,  101,  313,  466,  313,
484
    313,  466,  313,  482,  313,  466,  281,  204,  283,  313,
485
    289,  313,  300,  298,  301,  313,  288,  313,  216,  313,
486
    200,  114,  313,  313,  201,  123,  313,  313,  313,  313,
487
    313,  101,  365,  313,  313,  313,  230,  313,  313,  313,
488
    313,  281,  204,  283,   14,  289,  313,  300,  298,  301,
489
     15,  313,  288,  446,  216,  313,  169,  114,  313,  313,
490
    201,  124,  313,  313,  313,  446,  256,  101,  313,   47,
491
     22,  285,   41,  313,  313,  313,  313,  281,  204,  283,
492
    313,  289,  313,  300,  298,  301,  313,  288,  313,  216,
493
    313,  313,  114,  313,  313,  201,  125,  313,  313,  313,
494
    313,  313,  101,  313,  313,  313,  313,  313,  313,  313,
495
    313,  313,  281,  204,  283,  313,  289,  313,  300,  298,
496
    301,  313,  313,  288,  313,  216,  313,  313,  114,  313,
497
    313,  201,  126,  313,  313,  313,  313,  313,  101,  313,
498
    313,  313,  313,  313,  313,  313,  313,  313,  281,  204,
499
    283,  313,  289,  313,  300,  298,  301,  313,  288,  313,
500
    216,  313,  313,  114,  313,  313,  201,  127,  313,  313,
501
    313,  313,  313,  101,  313,  313,  313,  313,  313,  313,
502
    313,  313,  313,  281,  204,  283,  313,  289,  313,  300,
503
    298,  301,  313,  313,  288,  313,  216,  223,  313,  114,
504
    313,  313,  201,  131,  482,  313,  313,  482,  313,  101,
505
    313,  482,  466,  313,  313,  313,  276,  313,  313,  281,
506
    204,  283,  313,  289,  313,  300,  298,  301,  313,  313,
507
    409,  313,  313,  313,  313,  313,  313,  313,  466,  313,
508
    313,  466,  313,  482,  223,  466,  292,  313,  313,  313,
509
    313,  482,  313,  313,  482,  313,  313,   36,  482,  466,
510
    313,  223,  446,  276,  409,  409,  409,  409,  482,  313,
511
    313,  482,  313,  313,  446,  482,  466,  313,  313,   30,
512
    276,  409,  409,  409,  409,  466,  482,  313,  466,  482,
513
    482,  313,  466,  482,  466,  313,  313,  313,  276,  313,
514
    313,  313,  466,  313,  313,  466,  332,  482,  313,  466,
515
    313,  313,  313,  313,  313,  331,   42,   43,  286,   12,
516
    466,  313,  313,  466,  313,  482,  313,  466,  313,   42,
517
     43,  286,   12,  293,  294,  295,  296,  307,  313,   42,
518
     43,  286,   12,  185,  313,  313,  293,  294,  295,  296,
519
    186,  313,  313,  313,  322,  313,  293,  294,  295,  296,
520
     42,   43,  286,   12,   31,  313,   42,   43,  286,   12,
521
    313,  334,  313,   42,   43,  286,   12,  293,  294,  295,
522
    296,  313,  313,  293,  294,  295,  296,  313,  313,  313,
523
    293,  294,  295,  296,   42,   43,  286,   12,   42,   43,
524
    286,   12,  482,  313,  313,  482,  313,  313,  313,  482,
525
    466,  293,  294,  295,  296,  293,  294,  295,  296,  313,
526
    313,  313,  259,  313,  313,   19,  313,  313,  313,  258,
527
    313,  313,  313,  313,  313,  313,  466,  313,   14,  466,
528
    150,  482,  313,  466,   15,
529
    );
530
    public static $yy_lookahead = array(
531
      2,   80,  100,   13,  102,  103,    1,    9,   10,   11,
532
     12,   21,   14,   70,   16,   25,   18,   19,   93,   21,
533
     77,   31,   24,   80,   13,  104,   28,   29,   30,  104,
534
     32,   20,   34,   22,   44,   37,   25,   39,   40,   41,
535
     42,   43,   31,   45,   33,   47,   35,   49,   50,   14,
536
     52,   16,   12,   17,   43,   57,   58,    9,   10,   11,
537
     12,   12,   14,   14,   16,   16,   18,   19,   65,   21,
538
     67,   12,   24,   14,   34,   16,   28,   29,   30,   43,
539
     32,   32,   34,    1,   49,   37,   50,   52,   40,   41,
540
     42,   43,   72,   45,   99,   47,  101,   49,   50,   51,
541
     52,   52,   82,   69,   14,   57,   58,    9,   10,   11,
542
     12,   52,   14,   13,   16,   15,   18,   19,   15,   21,
543
     17,  101,   24,   72,   34,   25,   28,   29,   30,   17,
544
     32,   31,   34,   82,   34,   37,  102,  103,   40,   41,
545
     42,   43,   52,   45,    1,   47,   46,   49,   50,   46,
546
     52,   85,   86,   87,   88,   57,   58,    9,   10,   11,
547
     12,   14,   14,   16,   16,   80,   18,   19,   25,   21,
548
     61,   62,   24,   72,   31,   34,   28,   29,   30,   65,
549
     32,   67,   34,   82,   43,   37,   33,   46,   40,   41,
550
     42,   43,   51,   45,   47,   47,   49,   49,   50,   52,
551
     52,   99,  101,   13,   51,   57,   58,    9,   10,   11,
552
     12,   21,   14,   17,   16,   25,   18,   19,   15,   21,
553
     17,   31,   24,  101,  110,  111,   28,   29,   30,   65,
554
     32,   67,   34,   15,   44,   37,    1,    2,   40,   41,
555
     42,   43,   46,   45,   70,   47,   25,   49,   50,   46,
556
     52,   77,   31,   72,   80,   57,   58,    9,   10,   11,
557
     12,   43,   14,   82,   16,    1,   18,   19,   50,   21,
558
     82,   76,   24,   21,   34,  111,   28,   29,   30,   99,
559
     32,  101,   34,   14,   72,   37,   46,  106,   40,   41,
560
     42,   43,   27,   45,   82,   47,   44,   49,   50,   34,
561
     52,  106,  107,   51,   76,   57,   58,    9,   10,   11,
562
     12,   46,   14,   21,   16,   51,   18,   19,  106,   21,
563
      1,   52,   24,   69,  102,  103,   28,   29,   30,   16,
564
     32,   25,   34,    1,  106,   37,   44,   31,   40,   41,
565
     42,   43,   70,   45,  100,   47,   27,   49,   50,   17,
566
     52,   59,   80,   99,   93,   57,   58,    9,   10,   11,
567
     12,   48,   14,   72,   16,  104,   18,   19,    9,   21,
568
     20,   12,   24,   82,   72,   16,   28,   29,   30,   79,
569
     32,   76,   34,   33,   82,   37,    1,    2,   40,   41,
570
     42,   43,   14,   45,   16,   47,   14,   49,   50,   76,
571
     52,  102,  103,   72,   80,   57,   58,    9,   10,   11,
572
     12,  106,   14,   82,   16,   80,   18,   19,    9,   21,
573
     99,   12,   24,   63,   64,   16,   28,   29,   30,  106,
574
     32,    6,   34,    8,   52,   37,   99,   43,   40,   41,
575
     42,   43,   43,   45,   50,   47,   99,   49,   50,   50,
576
     52,   36,   37,   38,   39,   57,   58,    9,   10,   11,
577
     12,   21,   14,   34,   16,    2,   18,   19,   53,   54,
578
     55,   56,   24,   15,   59,   46,   28,   29,   30,   21,
579
     32,  106,   34,  107,   44,   37,    7,    8,   40,   41,
580
     42,   43,   33,   45,   35,   47,   34,   49,   50,   99,
581
     52,   36,   37,   38,   39,   57,   58,    9,   10,   11,
582
     12,   34,   14,   33,   16,   35,   18,   19,   53,   54,
583
     55,   56,   24,   46,  103,   15,   28,   29,   30,   43,
584
     32,   64,   34,   81,   33,   37,   35,   51,   40,   41,
585
     42,   43,   33,   45,   35,   47,   99,   49,   50,   81,
586
     52,   70,   81,   43,   73,   57,   58,   65,   66,   67,
587
     68,   80,   70,   71,    7,   73,   74,   75,   33,   99,
588
     35,   33,   80,   35,   16,   83,   84,   96,   97,   98,
589
     13,   13,   90,   91,   92,   16,   94,   16,   96,   97,
590
     98,   16,   65,   66,   67,   68,   16,   70,   71,   14,
591
     73,   74,   75,   16,   32,   43,   70,   80,   32,   16,
592
     83,   84,   70,   77,   78,   73,   80,   90,   91,   92,
593
     34,   94,   80,   96,   97,   98,   65,   16,   67,   68,
594
     49,   70,   71,   91,   73,   74,   75,    1,   96,   97,
595
     98,   80,    1,    9,   83,   84,   12,   49,   51,   13,
596
     16,   90,   91,   92,   13,   94,   16,   96,   97,   98,
597
     65,   25,   67,   51,    1,   70,   25,   31,   73,   74,
598
     75,   16,   31,   15,    9,   80,   13,   12,   83,   84,
599
     72,   16,   48,   35,   76,   90,   91,   92,   25,   94,
600
     82,   96,   97,   98,   31,   22,  112,   65,  112,   67,
601
    112,  112,   70,  108,  109,   73,   74,   75,  112,  112,
602
    112,  112,   80,   48,  106,   83,   84,   72,  112,  112,
603
    112,   76,   90,   91,   92,  112,   94,   82,   96,   97,
604
     98,  112,  112,  112,   65,  112,   67,  112,  112,   70,
605
    108,  109,   73,   74,   75,  112,   77,  112,  112,   80,
606
    112,  106,   83,   84,  112,  112,  112,  112,  112,   90,
607
     91,   92,  112,   94,  112,   96,   97,   98,   65,  112,
608
     67,  112,  112,   70,  112,  112,   73,   74,   75,  112,
609
    112,  112,  112,   80,  112,  112,   83,   84,  112,  112,
610
    112,  112,  112,   90,   91,   92,  112,   94,  112,   96,
611
     97,   98,   65,  112,   67,  112,  112,   70,  105,  112,
612
     73,   74,   75,  112,  112,  112,  112,   80,  112,  112,
613
     83,   84,  112,  112,  112,  112,  112,   90,   91,   92,
614
    112,   94,  112,   96,   97,   98,   65,  112,   67,  112,
615
    112,   70,  105,  112,   73,   74,   75,  112,  112,  112,
616
    112,   80,  112,  112,   83,   84,  112,  112,  112,  112,
617
    112,   90,   91,   92,  112,   94,  112,   96,   97,   98,
618
    112,  112,  112,   65,  112,   67,  112,  112,   70,  112,
619
    109,   73,   74,   75,  112,  112,  112,  112,   80,  112,
620
      9,   83,   84,   12,  112,  112,  112,   16,   90,   91,
621
     92,  112,   94,   95,   96,   97,   98,   65,  112,   67,
622
    112,  112,   70,  112,  112,   73,   74,   75,  112,   77,
623
    112,  112,   80,  112,  112,   83,   84,  112,  112,   48,
624
    112,  112,   90,   91,   92,  112,   94,  112,   96,   97,
625
     98,   65,  112,   67,  112,  112,   70,  112,  112,   73,
626
     74,   75,  112,  112,  112,  112,   80,  112,  112,   83,
627
     84,  112,  112,  112,  112,  112,   90,   91,   92,  112,
628
     94,  112,   96,   97,   98,   65,  112,   67,  112,  112,
629
     70,  112,  112,   73,   74,   75,  112,  112,  112,  112,
630
     80,  112,  112,   83,   84,  112,  112,  112,  112,  112,
631
     90,   91,   92,  112,   94,  112,   96,   97,   98,   65,
632
    112,   67,  112,  112,   70,  112,  112,   73,   74,   75,
633
    112,  112,  112,  112,   80,  112,  112,   83,   84,  112,
634
    112,  112,  112,  112,   90,   91,   92,  112,   94,  112,
635
     96,   97,   98,   65,  112,   67,  112,  112,   70,  112,
636
    112,   73,   74,   75,  112,  112,  112,  112,   80,  112,
637
    112,   83,   84,  112,  112,  112,  112,  112,   90,   91,
638
     92,  112,   94,  112,   96,   97,   98,   65,  112,   67,
639
    112,  112,   70,  112,  112,   73,   74,   75,  112,  112,
640
    112,  112,   80,  112,  112,   83,   84,  112,  112,  112,
641
    112,  112,   90,   91,   92,  112,   94,  112,   96,   97,
642
     98,   65,  112,   67,  112,  112,   70,  112,  112,   73,
643
     74,   75,  112,  112,  112,  112,   80,  112,  112,   83,
644
     84,  112,  112,  112,  112,  112,   90,   91,   92,  112,
645
     94,  112,   96,   97,   98,   65,  112,   67,  112,  112,
646
     70,  112,  112,   73,   74,   75,  112,  112,  112,  112,
647
     80,  112,  112,   83,   84,  112,  112,  112,  112,  112,
648
     90,   91,   92,  112,   94,  112,   96,   97,   98,   65,
649
    112,   67,  112,  112,   70,  112,  112,   73,   74,   75,
650
    112,  112,  112,  112,   80,  112,  112,   83,   84,  112,
651
    112,  112,  112,  112,   90,   91,   92,  112,   94,  112,
652
     96,   97,   98,   65,  112,   67,  112,  112,   70,  112,
653
    112,   73,   74,   75,  112,  112,  112,  112,   80,  112,
654
    112,   83,   84,  112,  112,  112,  112,  112,   90,   91,
655
     92,  112,   94,  112,   96,   97,   98,   65,  112,   67,
656
    112,  112,   70,  112,  112,   73,   74,   75,  112,  112,
657
    112,  112,   80,  112,  112,   83,   84,  112,  112,  112,
658
    112,  112,   90,   91,   92,  112,   94,  112,   96,   97,
659
     98,   65,  112,   67,  112,  112,   70,  112,  112,   73,
660
     74,   75,  112,  112,  112,  112,   80,  112,  112,   83,
661
     84,  112,  112,  112,  112,  112,   90,   91,   92,  112,
662
     94,  112,   96,   97,   98,   65,  112,   67,  112,  112,
663
     70,  112,  112,   73,   74,   75,  112,  112,  112,  112,
664
     80,  112,  112,   83,   84,  112,  112,  112,  112,  112,
665
     90,   91,   92,  112,   94,  112,   96,   97,   98,   65,
666
    112,   67,  112,  112,   70,  112,  112,   73,   74,   75,
667
    112,  112,  112,  112,   80,  112,  112,   83,   84,  112,
668
    112,  112,  112,  112,   90,   91,   92,  112,   94,  112,
669
     96,   97,   98,   65,  112,   67,  112,  112,   70,  112,
670
    112,   73,   74,   75,  112,  112,  112,  112,   80,  112,
671
    112,   83,   84,  112,  112,  112,  112,  112,   90,   91,
672
     92,  112,   94,  112,   96,   97,   98,   65,  112,   67,
673
    112,  112,   70,  112,  112,   73,   74,   75,  112,  112,
674
    112,  112,   80,  112,  112,   83,   84,  112,  112,  112,
675
    112,  112,   90,   91,   92,  112,   94,  112,   96,   97,
676
     98,   65,  112,   67,  112,  112,   70,  112,  112,   73,
677
     74,   75,  112,  112,  112,  112,   80,  112,  112,   83,
678
     84,  112,  112,  112,  112,  112,   90,   91,   92,  112,
679
     94,  112,   96,   97,   98,   65,  112,   67,  112,  112,
680
     70,  112,  112,   73,   74,   75,  112,  112,  112,  112,
681
     80,  112,  112,   83,   84,  112,  112,  112,  112,  112,
682
     90,   91,   92,  112,   94,  112,   96,   97,   98,   65,
683
    112,   67,  112,  112,   70,  112,  112,   73,   74,   75,
684
    112,  112,  112,  112,   80,  112,  112,   83,   84,  112,
685
    112,  112,  112,  112,   90,   91,   92,  112,   94,  112,
686
     96,   97,   98,   65,  112,   67,  112,  112,   70,  112,
687
    112,   73,   74,   75,  112,  112,  112,  112,   80,  112,
688
    112,   83,   84,  112,  112,  112,  112,  112,   90,   91,
689
     92,  112,   94,  112,   96,   97,   98,   65,  112,   67,
690
    112,  112,   70,  112,  112,   73,   74,   75,  112,  112,
691
    112,  112,   80,  112,  112,   83,   84,  112,  112,  112,
692
    112,  112,   90,   91,   92,  112,   94,  112,   96,   97,
693
     98,   65,  112,   67,  112,  112,   70,  112,  112,   73,
694
     74,   75,  112,  112,  112,  112,   80,  112,  112,   83,
695
     84,  112,  112,  112,  112,  112,   90,   91,   92,  112,
696
     94,  112,   96,   97,   98,   65,  112,   67,  112,  112,
697
     70,  112,  112,   73,   74,   75,  112,  112,  112,  112,
698
     80,  112,  112,   83,   84,  112,  112,  112,  112,  112,
699
     90,   91,   92,  112,   94,  112,   96,   97,   98,   65,
700
    112,   67,  112,  112,   70,  112,  112,   73,   74,   75,
701
    112,  112,  112,  112,   80,  112,  112,   83,   84,  112,
702
    112,  112,  112,  112,   90,   91,   92,  112,   94,  112,
703
     96,   97,   98,   65,  112,   67,  112,  112,   70,  112,
704
    112,   73,   74,   75,  112,  112,  112,  112,   80,  112,
705
    112,   83,   84,  112,  112,  112,  112,  112,   90,   91,
706
     92,  112,   94,  112,   96,   97,   98,   65,  112,   67,
707
    112,  112,   70,  112,  112,   73,   74,   75,  112,  112,
708
    112,  112,   80,  112,  112,   83,   84,  112,  112,  112,
709
    112,  112,   90,   91,   92,  112,   94,  112,   96,   97,
710
     98,   65,  112,   67,  112,  112,   70,  112,  112,   73,
711
     74,   75,  112,  112,  112,  112,   80,  112,  112,   83,
712
     84,  112,  112,  112,  112,  112,   90,   91,   92,  112,
713
     94,  112,   96,   97,   98,   65,  112,   67,  112,  112,
714
     70,  112,  112,   73,   74,   75,  112,  112,  112,  112,
715
     80,  112,  112,   83,   84,  112,  112,  112,  112,  112,
716
     90,   91,   92,  112,   94,  112,   96,   97,   98,   65,
717
    112,   67,  112,  112,   70,  112,  112,   73,   74,   75,
718
    112,  112,  112,  112,   80,  112,  112,   83,   84,  112,
719
    112,  112,  112,  112,   90,   91,   92,  112,   94,  112,
720
     96,   97,   98,   65,  112,   67,   72,  112,   70,  112,
721
    112,   73,   74,  112,  112,  112,   82,  112,   80,   85,
722
     86,   87,   88,  112,  112,  112,  112,   89,   90,   91,
723
     92,  112,   94,  112,   96,   97,   98,   65,  112,   67,
724
     72,  112,   70,  112,  112,   73,   74,  112,  112,  112,
725
     82,  112,   80,   85,   86,   87,   88,  112,  112,  112,
726
    112,   89,   90,   91,   92,    3,   94,  112,   96,   97,
727
     98,    9,   10,   11,   12,  112,   14,  112,  112,  112,
728
     18,   19,    9,  112,  112,   12,   24,  112,   25,   16,
729
     28,   29,   30,  112,   31,   23,  112,   25,   25,   36,
730
     37,   38,   39,   31,   31,  112,  112,  112,   36,   37,
731
     38,   39,  112,  112,  112,  112,   53,   54,   55,   56,
732
     58,   59,  112,  112,    3,   53,   54,   55,   56,  112,
733
      9,   10,   11,   12,  112,   14,  112,   20,  112,   18,
734
     19,  112,  112,  112,  112,   24,  112,  112,   26,   28,
735
     29,   30,  112,   36,   37,   38,   39,  112,   36,   37,
736
     38,   39,  112,  112,  112,  112,  112,  112,  112,  112,
737
     53,   54,   55,   56,  112,   53,   54,   55,   56,   58,
738
     59,  112,  112,    3,    4,    5,    6,    2,  112,    9,
739
     10,   11,   12,  112,    9,  112,  112,   12,   18,   19,
740
     15,   16,   17,  112,   24,  112,   21,  112,   28,   29,
741
     30,   65,  112,   67,  112,  112,   70,  112,  112,   73,
742
     74,  112,  112,  112,  112,  112,   80,  112,   43,  112,
743
    112,   46,  112,   48,  112,   50,   90,   91,   92,  112,
744
     94,  112,   96,   97,   98,  112,   65,  112,   67,  112,
745
      1,   70,  112,  112,   73,   74,  112,  112,  112,  112,
746
    112,   80,   13,  112,  112,  112,   17,  112,  112,  112,
747
    112,   90,   91,   92,   25,   94,  112,   96,   97,   98,
748
     31,  112,   65,   34,   67,  112,   72,   70,  112,  112,
749
     73,   74,  112,  112,  112,   46,   82,   80,  112,   85,
750
     86,   87,   88,  112,  112,  112,  112,   90,   91,   92,
751
    112,   94,  112,   96,   97,   98,  112,   65,  112,   67,
752
    112,  112,   70,  112,  112,   73,   74,  112,  112,  112,
753
    112,  112,   80,  112,  112,  112,  112,  112,  112,  112,
754
    112,  112,   90,   91,   92,  112,   94,  112,   96,   97,
755
     98,  112,  112,   65,  112,   67,  112,  112,   70,  112,
756
    112,   73,   74,  112,  112,  112,  112,  112,   80,  112,
757
    112,  112,  112,  112,  112,  112,  112,  112,   90,   91,
758
     92,  112,   94,  112,   96,   97,   98,  112,   65,  112,
759
     67,  112,  112,   70,  112,  112,   73,   74,  112,  112,
760
    112,  112,  112,   80,  112,  112,  112,  112,  112,  112,
761
    112,  112,  112,   90,   91,   92,  112,   94,  112,   96,
762
     97,   98,  112,  112,   65,  112,   67,    2,  112,   70,
763
    112,  112,   73,   74,    9,  112,  112,   12,  112,   80,
764
    112,   16,   17,  112,  112,  112,   21,  112,  112,   90,
765
     91,   92,  112,   94,  112,   96,   97,   98,  112,  112,
766
      2,  112,  112,  112,  112,  112,  112,  112,   43,  112,
767
    112,   46,  112,   48,    2,   50,   51,  112,  112,  112,
768
    112,    9,  112,  112,   12,  112,  112,   15,   16,   17,
769
    112,    2,   34,   21,   36,   37,   38,   39,    9,  112,
770
    112,   12,  112,  112,   46,   16,   17,  112,  112,    2,
771
     21,   53,   54,   55,   56,   43,    9,  112,   46,   12,
772
     48,  112,   50,   16,   17,  112,  112,  112,   21,  112,
773
    112,  112,   43,  112,  112,   46,   13,   48,  112,   50,
774
    112,  112,  112,  112,  112,   35,   36,   37,   38,   39,
775
     43,  112,  112,   46,  112,   48,  112,   50,  112,   36,
776
     37,   38,   39,   53,   54,   55,   56,   13,  112,   36,
777
     37,   38,   39,   13,  112,  112,   53,   54,   55,   56,
778
     13,  112,  112,  112,   51,  112,   53,   54,   55,   56,
779
     36,   37,   38,   39,    2,  112,   36,   37,   38,   39,
780
    112,   13,  112,   36,   37,   38,   39,   53,   54,   55,
781
     56,  112,  112,   53,   54,   55,   56,  112,  112,  112,
782
     53,   54,   55,   56,   36,   37,   38,   39,   36,   37,
783
     38,   39,    9,  112,  112,   12,  112,  112,  112,   16,
784
     17,   53,   54,   55,   56,   53,   54,   55,   56,  112,
785
    112,  112,    9,  112,  112,   12,  112,  112,  112,   16,
786
    112,  112,  112,  112,  112,  112,   43,  112,   25,   46,
787
     27,   48,  112,   50,   31,
788
);
789
    const YY_SHIFT_USE_DFLT = -11;
790
    const YY_SHIFT_MAX = 239;
791
    public static $yy_shift_ofst = array(
792
    -11,   98,   98,  148,  198,  198,  248,  148,  148,  198,
793
    148,  248,   -2,   48,  298,  148,  148,  148,  298,  148,
794
    148,  148,  148,  148,  148,  148,  148,  148,  148,  148,
795
    348,  148,  148,  148,  148,  148,  398,  148,  148,  148,
796
    448,  498,  498,  498,  498,  498,  498,  498,  498,  147,
797
   1962, 1953, 1953,   35, 1952, 2007, 2012, 2413, 2400, 2423,
798
   2444,  415, 2450, 2457, 2482, 2478,  465,  465,  465,  465,
799
    465,  465,  465,  465,  465,  465,  465,  465,  465,  465,
800
    465,  465,  465,  465,  465,  465, 2139,   90,  143, 2011,
801
   2533, 1963,   36,  103,  143,  143,   90,   90,  235, 2070,
802
   2075,  634,   59,  636,  641,  663,  359,  359,  203,  221,
803
    269,  221,  306,  332,  196,  378,  378,  264,  385,  319,
804
    221,    5,    5,    5,    5,    5,    5,    5,    5,  112,
805
    112,   82,    5,  -11,  -11, 2315, 2362, 2379, 2397, 2513,
806
     49,  665,  409,  218,  221,  221,  458,  221,  382,  221,
807
    382,  221,  394,  394,  221,  221,  221,  221,  394,   40,
808
    394,  394,  394,  399,  394,  399,  394,  221,  221,  221,
809
    221,    5,  463,    5,    5,  463,    5,  462,  112,  112,
810
    112,  -11,  -11,  -11,  -11,  -11,  -11, 2348,   11,  100,
811
    -10,  190,  881,  141,  265,  292,  252,  425,  479,  350,
812
    313,  440,  240,  429,  477,  459,  480,  153,  486,  501,
813
    509,  535,  538,  510,  557,  567,  568,  558,  569,  571,
814
    575,  580,  585,  587,  562,  572,  576,  586,  593,  462,
815
    611,  581,  598,  640,  597,  612,  655,  658,  648,  673,
816
);
817
    const YY_REDUCE_USE_DFLT = -99;
818
    const YY_REDUCE_MAX = 186;
819
    public static $yy_reduce_ofst = array(
820
    109,  492,  527,  561,  595,  632,  669,  703,  737,  771,
821
    808,  842,  876,  910,  944,  978, 1012, 1046, 1080, 1114,
822
   1148, 1182, 1216, 1250, 1284, 1318, 1352, 1386, 1420, 1454,
823
   1488, 1522, 1556, 1590, 1624, 1658, 1692, 1726, 1760, 1794,
824
   1828, 1862, 2036, 2071, 2107, 2142, 2178, 2213, 2249,  542,
825
   1824, 1858, 2104,  481,  114,   66,   66,   66,   66,   66,
826
     66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
827
     66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
828
     66,   66,   66,   66,   66,   66,  608,  536,  645,  164,
829
     20,  101,  -98,   34,  181,  212,  -57,  174,  195,    3,
830
    254,   -5,  -79,  228,  228,  228,  180,   -5,  222,   51,
831
    272,  291,  302,  305,  222,  -75,  261,  228,  228,  228,
832
    331,  323,  228,  228,  228,  228,  228,  228,  228,  222,
833
    299,  228,  228,  360,  228,  102,  102,  102,  102,  102,
834
     85,  122,  102,  102,  188,  188,  300,  188,  324,  188,
835
    335,  188,  244,  244,  188,  188,  188,  188,  244,  321,
836
    244,  244,  244,  337,  244,  347,  244,  188,  188,  188,
837
    188,  375,  376,  375,  375,  376,  375,  400,  421,  421,
838
    421,  467,  452,  468,  471,  447,  470,
839
);
840
    public static $yyExpectedTokens = array(
841
         array(),
842
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
843
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
844
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
845
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
846
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
847
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
848
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
849
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
850
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
851
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
852
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
853
         array(2, 9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 39, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
854
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 51, 52, 57, 58, ),
855
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
856
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
857
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
858
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
859
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
860
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
861
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
862
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
863
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
864
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
865
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
866
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
867
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
868
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
869
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
870
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
871
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
872
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
873
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
874
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
875
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
876
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
877
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
878
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
879
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
880
         array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
881
         array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
882
         array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
883
         array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
884
         array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
885
         array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
886
         array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
887
         array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
888
         array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
889
         array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
890
         array(14, 16, 47, 49, 52, ),
891
         array(23, 25, 31, 36, 37, 38, 39, 53, 54, 55, 56, ),
892
         array(25, 31, 36, 37, 38, 39, 53, 54, 55, 56, ),
893
         array(25, 31, 36, 37, 38, 39, 53, 54, 55, 56, ),
894
         array(14, 16, 49, 52, ),
895
         array(3, 9, 10, 11, 12, 14, 18, 19, 24, 28, 29, 30, 58, 59, ),
896
         array(20, 36, 37, 38, 39, 53, 54, 55, 56, ),
897
         array(26, 36, 37, 38, 39, 53, 54, 55, 56, ),
898
         array(13, 36, 37, 38, 39, 53, 54, 55, 56, ),
899
         array(35, 36, 37, 38, 39, 53, 54, 55, 56, ),
900
         array(36, 37, 38, 39, 51, 53, 54, 55, 56, ),
901
         array(13, 36, 37, 38, 39, 53, 54, 55, 56, ),
902
         array(36, 37, 38, 39, 53, 54, 55, 56, 59, ),
903
         array(13, 36, 37, 38, 39, 53, 54, 55, 56, ),
904
         array(13, 36, 37, 38, 39, 53, 54, 55, 56, ),
905
         array(2, 36, 37, 38, 39, 53, 54, 55, 56, ),
906
         array(13, 36, 37, 38, 39, 53, 54, 55, 56, ),
907
         array(36, 37, 38, 39, 53, 54, 55, 56, ),
908
         array(36, 37, 38, 39, 53, 54, 55, 56, ),
909
         array(36, 37, 38, 39, 53, 54, 55, 56, ),
910
         array(36, 37, 38, 39, 53, 54, 55, 56, ),
911
         array(36, 37, 38, 39, 53, 54, 55, 56, ),
912
         array(36, 37, 38, 39, 53, 54, 55, 56, ),
913
         array(36, 37, 38, 39, 53, 54, 55, 56, ),
914
         array(36, 37, 38, 39, 53, 54, 55, 56, ),
915
         array(36, 37, 38, 39, 53, 54, 55, 56, ),
916
         array(36, 37, 38, 39, 53, 54, 55, 56, ),
917
         array(36, 37, 38, 39, 53, 54, 55, 56, ),
918
         array(36, 37, 38, 39, 53, 54, 55, 56, ),
919
         array(36, 37, 38, 39, 53, 54, 55, 56, ),
920
         array(36, 37, 38, 39, 53, 54, 55, 56, ),
921
         array(36, 37, 38, 39, 53, 54, 55, 56, ),
922
         array(36, 37, 38, 39, 53, 54, 55, 56, ),
923
         array(36, 37, 38, 39, 53, 54, 55, 56, ),
924
         array(36, 37, 38, 39, 53, 54, 55, 56, ),
925
         array(36, 37, 38, 39, 53, 54, 55, 56, ),
926
         array(36, 37, 38, 39, 53, 54, 55, 56, ),
927
         array(1, 13, 17, 25, 31, 34, 46, ),
928
         array(14, 34, 52, ),
929
         array(1, 25, 31, ),
930
         array(3, 9, 10, 11, 12, 14, 18, 19, 24, 28, 29, 30, 58, 59, ),
931
         array(9, 12, 16, 25, 27, 31, ),
932
         array(9, 12, 16, 25, 31, ),
933
         array(17, 43, 50, ),
934
         array(15, 17, 46, ),
935
         array(1, 25, 31, ),
936
         array(1, 25, 31, ),
937
         array(14, 34, 52, ),
938
         array(14, 34, 52, ),
939
         array(1, 2, ),
940
         array(3, 4, 5, 6, 9, 10, 11, 12, 18, 19, 24, 28, 29, 30, ),
941
         array(2, 9, 12, 15, 16, 17, 21, 43, 46, 48, 50, ),
942
         array(9, 12, 16, 48, ),
943
         array(12, 14, 16, 52, ),
944
         array(1, 13, 25, 31, ),
945
         array(1, 13, 25, 31, ),
946
         array(1, 13, 25, 31, ),
947
         array(9, 12, 16, ),
948
         array(9, 12, 16, ),
949
         array(15, 17, 46, ),
950
         array(25, 31, ),
951
         array(14, 52, ),
952
         array(25, 31, ),
953
         array(25, 31, ),
954
         array(1, 17, ),
955
         array(17, 46, ),
956
         array(14, 16, ),
957
         array(14, 16, ),
958
         array(1, 51, ),
959
         array(1, 2, ),
960
         array(1, 27, ),
961
         array(25, 31, ),
962
         array(1, ),
963
         array(1, ),
964
         array(1, ),
965
         array(1, ),
966
         array(1, ),
967
         array(1, ),
968
         array(1, ),
969
         array(1, ),
970
         array(17, ),
971
         array(17, ),
972
         array(1, ),
973
         array(1, ),
974
         array(),
975
         array(),
976
         array(2, 9, 12, 16, 17, 21, 43, 46, 48, 50, 51, ),
977
         array(2, 9, 12, 15, 16, 17, 21, 43, 46, 48, 50, ),
978
         array(2, 9, 12, 16, 17, 21, 43, 46, 48, 50, ),
979
         array(2, 9, 12, 16, 17, 21, 43, 46, 48, 50, ),
980
         array(9, 12, 16, 17, 43, 46, 48, 50, ),
981
         array(12, 14, 16, 32, 52, ),
982
         array(9, 12, 16, 48, ),
983
         array(9, 12, 16, ),
984
         array(15, 43, 50, ),
985
         array(25, 31, ),
986
         array(25, 31, ),
987
         array(15, 21, ),
988
         array(25, 31, ),
989
         array(14, 52, ),
990
         array(25, 31, ),
991
         array(14, 52, ),
992
         array(25, 31, ),
993
         array(43, 50, ),
994
         array(43, 50, ),
995
         array(25, 31, ),
996
         array(25, 31, ),
997
         array(25, 31, ),
998
         array(25, 31, ),
999
         array(43, 50, ),
1000
         array(12, 34, ),
1001
         array(43, 50, ),
1002
         array(43, 50, ),
1003
         array(43, 50, ),
1004
         array(43, 50, ),
1005
         array(43, 50, ),
1006
         array(43, 50, ),
1007
         array(43, 50, ),
1008
         array(25, 31, ),
1009
         array(25, 31, ),
1010
         array(25, 31, ),
1011
         array(25, 31, ),
1012
         array(1, ),
1013
         array(2, ),
1014
         array(1, ),
1015
         array(1, ),
1016
         array(2, ),
1017
         array(1, ),
1018
         array(34, ),
1019
         array(17, ),
1020
         array(17, ),
1021
         array(17, ),
1022
         array(),
1023
         array(),
1024
         array(),
1025
         array(),
1026
         array(),
1027
         array(),
1028
         array(2, 34, 36, 37, 38, 39, 46, 53, 54, 55, 56, ),
1029
         array(13, 20, 22, 25, 31, 33, 35, 43, ),
1030
         array(13, 15, 25, 31, 34, 46, ),
1031
         array(13, 21, 25, 31, 44, ),
1032
         array(13, 21, 25, 31, 44, ),
1033
         array(9, 12, 16, 48, ),
1034
         array(34, 43, 46, 51, ),
1035
         array(27, 34, 46, ),
1036
         array(21, 44, 59, ),
1037
         array(21, 44, 51, ),
1038
         array(6, 8, ),
1039
         array(7, 8, ),
1040
         array(20, 33, ),
1041
         array(16, 48, ),
1042
         array(21, 44, ),
1043
         array(34, 46, ),
1044
         array(34, 46, ),
1045
         array(34, 46, ),
1046
         array(33, 35, ),
1047
         array(33, 35, ),
1048
         array(33, 51, ),
1049
         array(43, 51, ),
1050
         array(33, 35, ),
1051
         array(33, 35, ),
1052
         array(33, 35, ),
1053
         array(33, 35, ),
1054
         array(15, 43, ),
1055
         array(7, ),
1056
         array(13, ),
1057
         array(13, ),
1058
         array(16, ),
1059
         array(16, ),
1060
         array(16, ),
1061
         array(16, ),
1062
         array(16, ),
1063
         array(14, ),
1064
         array(16, ),
1065
         array(43, ),
1066
         array(32, ),
1067
         array(32, ),
1068
         array(34, ),
1069
         array(16, ),
1070
         array(34, ),
1071
         array(16, ),
1072
         array(49, ),
1073
         array(49, ),
1074
         array(16, ),
1075
         array(51, ),
1076
         array(51, ),
1077
         array(16, ),
1078
         array(15, ),
1079
         array(35, ),
1080
         array(22, ),
1081
         array(),
1082
         array(),
1083
         array(),
1084
         array(),
1085
         array(),
1086
         array(),
1087
         array(),
1088
         array(),
1089
         array(),
1090
         array(),
1091
         array(),
1092
         array(),
1093
         array(),
1094
         array(),
1095
         array(),
1096
         array(),
1097
         array(),
1098
         array(),
1099
         array(),
1100
         array(),
1101
         array(),
1102
         array(),
1103
         array(),
1104
         array(),
1105
         array(),
1106
         array(),
1107
         array(),
1108
         array(),
1109
         array(),
1110
         array(),
1111
         array(),
1112
         array(),
1113
         array(),
1114
         array(),
1115
         array(),
1116
         array(),
1117
         array(),
1118
         array(),
1119
         array(),
1120
         array(),
1121
         array(),
1122
         array(),
1123
         array(),
1124
         array(),
1125
         array(),
1126
         array(),
1127
         array(),
1128
         array(),
1129
         array(),
1130
         array(),
1131
         array(),
1132
         array(),
1133
         array(),
1134
         array(),
1135
         array(),
1136
         array(),
1137
         array(),
1138
         array(),
1139
         array(),
1140
         array(),
1141
         array(),
1142
         array(),
1143
         array(),
1144
         array(),
1145
         array(),
1146
         array(),
1147
         array(),
1148
         array(),
1149
         array(),
1150
         array(),
1151
         array(),
1152
         array(),
1153
         array(),
1154
         array(),
1155
         array(),
1156
         array(),
1157
         array(),
1158
         array(),
1159
         array(),
1160
         array(),
1161
         array(),
1162
         array(),
1163
         array(),
1164
         array(),
1165
         array(),
1166
         array(),
1167
         array(),
1168
         array(),
1169
         array(),
1170
         array(),
1171
         array(),
1172
         array(),
1173
         array(),
1174
         array(),
1175
         array(),
1176
         array(),
1177
         array(),
1178
         array(),
1179
         array(),
1180
         array(),
1181
);
1182
    public static $yy_default = array(
1183
    350,  539,  539,  539,  524,  524,  539,  501,  501,  539,
1184
    452,  539,  539,  539,  539,  539,  539,  539,  539,  539,
1185
    539,  539,  539,  539,  539,  539,  539,  539,  539,  539,
1186
    539,  539,  539,  539,  539,  539,  539,  539,  539,  539,
1187
    539,  539,  539,  539,  539,  539,  539,  539,  539,  539,
1188
    390,  369,  390,  539,  539,  539,  395,  539,  539,  539,
1189
    363,  539,  539,  539,  539,  539,  374,  500,  413,  420,
1190
    499,  525,  527,  526,  419,  421,  418,  422,  451,  449,
1191
    397,  401,  402,  392,  395,  363,  433,  539,  390,  539,
1192
    390,  390,  514,  454,  390,  390,  539,  539,  381,  340,
1193
    453,  466,  539,  404,  404,  404,  466,  466,  454,  390,
1194
    539,  390,  390,  384,  454,  539,  539,  404,  404,  404,
1195
    371,  386,  404,  411,  424,  425,  426,  412,  417,  454,
1196
    511,  424,  410,  348,  508,  453,  453,  453,  453,  453,
1197
    539,  468,  466,  482,  360,  370,  539,  373,  539,  378,
1198
    539,  379,  463,  464,  364,  366,  367,  368,  492,  466,
1199
    491,  494,  493,  457,  458,  459,  460,  380,  376,  377,
1200
    372,  382,  502,  385,  387,  503,  442,  466,  488,  515,
1201
    512,  348,  507,  507,  507,  466,  466,  433,  429,  433,
1202
    423,  423,  467,  433,  433,  423,  423,  346,  539,  539,
1203
    539,  423,  433,  443,  539,  539,  539,  539,  429,  539,
1204
    461,  461,  539,  429,  539,  539,  539,  539,  539,  539,
1205
    539,  539,  539,  539,  429,  431,  539,  513,  539,  482,
1206
    539,  539,  539,  539,  539,  438,  539,  539,  539,  398,
1207
    341,  342,  343,  344,  345,  347,  349,  351,  352,  353,
1208
    354,  355,  356,  357,  359,  388,  389,  484,  485,  486,
1209
    506,  383,  504,  505,  427,  436,  437,  446,  447,  465,
1210
    469,  470,  471,  405,  406,  407,  408,  409,  428,  430,
1211
    432,  434,  438,  439,  440,  414,  415,  416,  441,  444,
1212
    445,  479,  477,  516,  517,  518,  519,  455,  456,  490,
1213
    461,  462,  483,  498,  358,  489,  535,  536,  528,  529,
1214
    530,  533,  532,  534,  537,  538,  531,  521,  523,  522,
1215
    520,  495,  480,  478,  476,  473,  474,  475,  481,  496,
1216
    497,  435,  472,  510,  487,  482,  391,  375,  399,  403,
1217
);
1218
    const YYNOCODE = 113;
1219
    const YYSTACKDEPTH = 500;
1220
    const YYNSTATE = 340;
1221
    const YYNRULE = 199;
1222
    const YYERRORSYMBOL = 60;
1223
    const YYERRSYMDT = 'yy0';
1224
    const YYFALLBACK = 0;
1225
    public static $yyFallback = array(
1226
    );
1227
    public function Trace($TraceFILE, $zTracePrompt)
1228
    {
1229
        if (!$TraceFILE) {
1230
            $zTracePrompt = 0;
1231
        } elseif (!$zTracePrompt) {
1232
            $TraceFILE = 0;
1233
        }
1234
        $this->yyTraceFILE = $TraceFILE;
1235
        $this->yyTracePrompt = $zTracePrompt;
1236
    }
1237
1238
    public function PrintTrace()
1239
    {
1240
        $this->yyTraceFILE = fopen('php://output', 'w');
1241
        $this->yyTracePrompt = '<br>';
1242
    }
1243
1244
    public $yyTraceFILE;
1245
    public $yyTracePrompt;
1246
    public $yyidx;                    /* Index of top element in stack */
1247
    public $yyerrcnt;                 /* Shifts left before out of the error */
1248
    public $yystack = array();  /* The parser's stack */
1249
1250
    public $yyTokenName = array(
1251
  '$',             'VERT',          'COLON',         'TEXT',        
1252
  'STRIPON',       'STRIPOFF',      'LITERALSTART',  'LITERALEND',  
1253
  'LITERAL',       'SIMPELOUTPUT',  'SIMPLETAG',     'SMARTYBLOCKCHILDPARENT',
1254
  'LDEL',          'RDEL',          'DOLLARID',      'EQUAL',       
1255
  'ID',            'PTR',           'LDELIF',        'LDELFOR',     
1256
  'SEMICOLON',     'INCDEC',        'TO',            'STEP',        
1257
  'LDELFOREACH',   'SPACE',         'AS',            'APTR',        
1258
  'LDELSETFILTER',  'CLOSETAG',      'LDELSLASH',     'ATTR',        
1259
  'INTEGER',       'COMMA',         'OPENP',         'CLOSEP',      
1260
  'MATH',          'UNIMATH',       'ISIN',          'QMARK',       
1261
  'NOT',           'TYPECAST',      'HEX',           'DOT',         
1262
  'INSTANCEOF',    'SINGLEQUOTESTRING',  'DOUBLECOLON',   'NAMESPACE',   
1263
  'AT',            'HATCH',         'OPENB',         'CLOSEB',      
1264
  'DOLLAR',        'LOGOP',         'SLOGOP',        'TLOGOP',      
1265
  'SINGLECOND',    'ARRAYOPEN',     'QUOTE',         'BACKTICK',    
1266
  'error',         'start',         'template',      'literal_e2',  
1267
  'literal_e1',    'smartytag',     'tagbody',       'tag',         
1268
  'outattr',       'eqoutattr',     'varindexed',    'output',      
1269
  'attributes',    'variablevalue',  'value',         'expr',        
1270
  'modifierlist',  'statement',     'statements',    'foraction',   
1271
  'varvar',        'modparameters',  'attribute',     'nullcoalescing',
1272
  'ternary',       'tlop',          'lop',           'scond',       
1273
  'isin',          'array',         'function',      'ns1',         
1274
  'doublequoted_with_quotes',  'static_class_access',  'arraydef',      'variablelist',
1275
  'variable',      'object',        'configvariable',  'arrayindex',  
1276
  'indexdef',      'varvarele',     'objectchain',   'objectelement',
1277
  'method',        'params',        'modifier',      'modparameter',
1278
  'arrayelements',  'arrayelement',  'doublequoted',  'doublequotedcontent',
1279
    );
1280
1281
    public static $yyRuleName = array(
1282
  'start ::= template',
1283
  'template ::= template TEXT',
1284
  'template ::= template STRIPON',
1285
  'template ::= template STRIPOFF',
1286
  'template ::= template LITERALSTART literal_e2 LITERALEND',
1287
  'literal_e2 ::= literal_e1 LITERALSTART literal_e1 LITERALEND',
1288
  'literal_e2 ::= literal_e1',
1289
  'literal_e1 ::= literal_e1 LITERAL',
1290
  'literal_e1 ::=',
1291
  'template ::= template smartytag',
1292
  'template ::=',
1293
  'smartytag ::= SIMPELOUTPUT',
1294
  'smartytag ::= SIMPLETAG',
1295
  'smartytag ::= SMARTYBLOCKCHILDPARENT',
1296
  'smartytag ::= LDEL tagbody RDEL',
1297
  'smartytag ::= tag RDEL',
1298
  'tagbody ::= outattr',
1299
  'tagbody ::= DOLLARID eqoutattr',
1300
  'tagbody ::= varindexed eqoutattr',
1301
  'eqoutattr ::= EQUAL outattr',
1302
  'outattr ::= output attributes',
1303
  'output ::= variablevalue',
1304
  'output ::= value',
1305
  'output ::= expr',
1306
  'tag ::= LDEL ID attributes',
1307
  'tag ::= LDEL ID',
1308
  'tag ::= LDEL ID modifierlist attributes',
1309
  'tag ::= LDEL ID PTR ID attributes',
1310
  'tag ::= LDEL ID PTR ID modifierlist attributes',
1311
  'tag ::= LDELIF expr',
1312
  'tag ::= LDELIF expr attributes',
1313
  'tag ::= LDELIF statement',
1314
  'tag ::= LDELIF statement attributes',
1315
  'tag ::= LDELFOR statements SEMICOLON expr SEMICOLON varindexed foraction attributes',
1316
  'foraction ::= EQUAL expr',
1317
  'foraction ::= INCDEC',
1318
  'tag ::= LDELFOR statement TO expr attributes',
1319
  'tag ::= LDELFOR statement TO expr STEP expr attributes',
1320
  'tag ::= LDELFOREACH SPACE expr AS varvar attributes',
1321
  'tag ::= LDELFOREACH SPACE expr AS varvar APTR varvar attributes',
1322
  'tag ::= LDELFOREACH attributes',
1323
  'tag ::= LDELSETFILTER ID modparameters',
1324
  'tag ::= LDELSETFILTER ID modparameters modifierlist',
1325
  'smartytag ::= CLOSETAG',
1326
  'tag ::= LDELSLASH ID',
1327
  'tag ::= LDELSLASH ID modifierlist',
1328
  'tag ::= LDELSLASH ID PTR ID',
1329
  'tag ::= LDELSLASH ID PTR ID modifierlist',
1330
  'attributes ::= attributes attribute',
1331
  'attributes ::= attribute',
1332
  'attributes ::=',
1333
  'attribute ::= SPACE ID EQUAL ID',
1334
  'attribute ::= ATTR expr',
1335
  'attribute ::= ATTR value',
1336
  'attribute ::= SPACE ID',
1337
  'attribute ::= SPACE expr',
1338
  'attribute ::= SPACE value',
1339
  'attribute ::= SPACE INTEGER EQUAL expr',
1340
  'statements ::= statement',
1341
  'statements ::= statements COMMA statement',
1342
  'statement ::= DOLLARID EQUAL INTEGER',
1343
  'statement ::= DOLLARID EQUAL expr',
1344
  'statement ::= varindexed EQUAL expr',
1345
  'statement ::= OPENP statement CLOSEP',
1346
  'expr ::= value',
1347
  'expr ::= nullcoalescing',
1348
  'expr ::= ternary',
1349
  'expr ::= INCDEC DOLLARID',
1350
  'expr ::= DOLLARID INCDEC',
1351
  'expr ::= DOLLARID COLON ID',
1352
  'expr ::= expr MATH value',
1353
  'expr ::= expr UNIMATH value',
1354
  'expr ::= expr tlop value',
1355
  'expr ::= expr lop expr',
1356
  'expr ::= expr scond',
1357
  'isin ::= ISIN',
1358
  'expr ::= expr isin array',
1359
  'expr ::= expr isin value',
1360
  'nullcoalescing ::= expr QMARK QMARK expr',
1361
  'ternary ::= expr QMARK DOLLARID COLON expr',
1362
  'ternary ::= expr QMARK value COLON expr',
1363
  'ternary ::= expr QMARK expr COLON expr',
1364
  'ternary ::= expr QMARK COLON expr',
1365
  'value ::= variablevalue',
1366
  'value ::= UNIMATH value',
1367
  'value ::= NOT value',
1368
  'value ::= TYPECAST value',
1369
  'value ::= variablevalue INCDEC',
1370
  'value ::= HEX',
1371
  'value ::= INTEGER',
1372
  'value ::= INTEGER DOT INTEGER',
1373
  'value ::= INTEGER DOT',
1374
  'value ::= DOT INTEGER',
1375
  'value ::= ID',
1376
  'value ::= function',
1377
  'value ::= OPENP expr CLOSEP',
1378
  'value ::= variablevalue INSTANCEOF ns1',
1379
  'value ::= variablevalue INSTANCEOF variablevalue',
1380
  'value ::= SINGLEQUOTESTRING',
1381
  'value ::= doublequoted_with_quotes',
1382
  'value ::= varindexed DOUBLECOLON static_class_access',
1383
  'value ::= smartytag',
1384
  'value ::= value modifierlist',
1385
  'value ::= NAMESPACE',
1386
  'value ::= arraydef',
1387
  'value ::= ns1 DOUBLECOLON static_class_access',
1388
  'ns1 ::= ID',
1389
  'ns1 ::= NAMESPACE',
1390
  'variablelist ::= variablelist COMMA variable',
1391
  'variablelist ::= variablelist COMMA expr',
1392
  'variablelist ::= variable',
1393
  'variablelist ::= expr',
1394
  'variablelist ::=',
1395
  'variable ::= DOLLARID',
1396
  'variable ::= varindexed',
1397
  'variable ::= varvar AT ID',
1398
  'variable ::= object',
1399
  'configvariable ::= HATCH ID HATCH',
1400
  'configvariable ::= HATCH ID HATCH arrayindex',
1401
  'configvariable ::= HATCH variablevalue HATCH',
1402
  'configvariable ::= HATCH variablevalue HATCH arrayindex',
1403
  'variablevalue ::= variable',
1404
  'variablevalue ::= configvariable',
1405
  'varindexed ::= DOLLARID arrayindex',
1406
  'varindexed ::= varvar arrayindex',
1407
  'arrayindex ::= arrayindex indexdef',
1408
  'arrayindex ::=',
1409
  'indexdef ::= DOT DOLLARID',
1410
  'indexdef ::= DOT varvar',
1411
  'indexdef ::= DOT varvar AT ID',
1412
  'indexdef ::= DOT ID',
1413
  'indexdef ::= DOT INTEGER',
1414
  'indexdef ::= DOT LDEL expr RDEL',
1415
  'indexdef ::= OPENB ID CLOSEB',
1416
  'indexdef ::= OPENB ID DOT ID CLOSEB',
1417
  'indexdef ::= OPENB SINGLEQUOTESTRING CLOSEB',
1418
  'indexdef ::= OPENB INTEGER CLOSEB',
1419
  'indexdef ::= OPENB DOLLARID CLOSEB',
1420
  'indexdef ::= OPENB variablevalue CLOSEB',
1421
  'indexdef ::= OPENB value CLOSEB',
1422
  'indexdef ::= OPENB expr CLOSEB',
1423
  'indexdef ::= OPENB CLOSEB',
1424
  'varvar ::= DOLLARID',
1425
  'varvar ::= DOLLAR',
1426
  'varvar ::= varvar varvarele',
1427
  'varvarele ::= ID',
1428
  'varvarele ::= SIMPELOUTPUT',
1429
  'varvarele ::= LDEL expr RDEL',
1430
  'object ::= varindexed objectchain',
1431
  'objectchain ::= objectelement',
1432
  'objectchain ::= objectchain objectelement',
1433
  'objectelement ::= PTR ID arrayindex',
1434
  'objectelement ::= PTR varvar arrayindex',
1435
  'objectelement ::= PTR LDEL expr RDEL arrayindex',
1436
  'objectelement ::= PTR ID LDEL expr RDEL arrayindex',
1437
  'objectelement ::= PTR method',
1438
  'function ::= ns1 OPENP variablelist CLOSEP',
1439
  'method ::= ID OPENP params CLOSEP',
1440
  'method ::= DOLLARID OPENP params CLOSEP',
1441
  'params ::= params COMMA expr',
1442
  'params ::= expr',
1443
  'params ::=',
1444
  'modifierlist ::= modifierlist modifier modparameters',
1445
  'modifierlist ::= modifier modparameters',
1446
  'modifier ::= VERT AT ID',
1447
  'modifier ::= VERT ID',
1448
  'modparameters ::= modparameters modparameter',
1449
  'modparameters ::=',
1450
  'modparameter ::= COLON value',
1451
  'modparameter ::= COLON UNIMATH value',
1452
  'modparameter ::= COLON array',
1453
  'static_class_access ::= method',
1454
  'static_class_access ::= method objectchain',
1455
  'static_class_access ::= ID',
1456
  'static_class_access ::= DOLLARID arrayindex',
1457
  'static_class_access ::= DOLLARID arrayindex objectchain',
1458
  'lop ::= LOGOP',
1459
  'lop ::= SLOGOP',
1460
  'tlop ::= TLOGOP',
1461
  'scond ::= SINGLECOND',
1462
  'arraydef ::= OPENB arrayelements CLOSEB',
1463
  'arraydef ::= ARRAYOPEN arrayelements CLOSEP',
1464
  'arrayelements ::= arrayelement',
1465
  'arrayelements ::= arrayelements COMMA arrayelement',
1466
  'arrayelements ::=',
1467
  'arrayelement ::= value APTR expr',
1468
  'arrayelement ::= ID APTR expr',
1469
  'arrayelement ::= expr',
1470
  'doublequoted_with_quotes ::= QUOTE QUOTE',
1471
  'doublequoted_with_quotes ::= QUOTE doublequoted QUOTE',
1472
  'doublequoted ::= doublequoted doublequotedcontent',
1473
  'doublequoted ::= doublequotedcontent',
1474
  'doublequotedcontent ::= BACKTICK variablevalue BACKTICK',
1475
  'doublequotedcontent ::= BACKTICK expr BACKTICK',
1476
  'doublequotedcontent ::= DOLLARID',
1477
  'doublequotedcontent ::= LDEL variablevalue RDEL',
1478
  'doublequotedcontent ::= LDEL expr RDEL',
1479
  'doublequotedcontent ::= smartytag',
1480
  'doublequotedcontent ::= TEXT',
1481
    );
1482
1483
    public function tokenName($tokenType)
1484
    {
1485
        if ($tokenType === 0) {
1486
            return 'End of Input';
1487
        }
1488
        if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
1489
            return $this->yyTokenName[$tokenType];
1490
        } else {
1491
            return 'Unknown';
1492
        }
1493
    }
1494
1495
    public static function yy_destructor($yymajor, $yypminor)
1496
    {
1497
        switch ($yymajor) {
1498
            default:  break;   /* If no destructor action specified: do nothing */
1499
        }
1500
    }
1501
1502
    public function yy_pop_parser_stack()
1503
    {
1504
        if (empty($this->yystack)) {
1505
            return;
1506
        }
1507
        $yytos = array_pop($this->yystack);
1508
        if ($this->yyTraceFILE && $this->yyidx >= 0) {
1509
            fwrite($this->yyTraceFILE,
1510
                $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] .
1511
                    "\n");
1512
        }
1513
        $yymajor = $yytos->major;
1514
        self::yy_destructor($yymajor, $yytos->minor);
1515
        $this->yyidx--;
1516
1517
        return $yymajor;
1518
    }
1519
1520
    public function __destruct()
1521
    {
1522
        while ($this->yystack !== Array()) {
1523
            $this->yy_pop_parser_stack();
1524
        }
1525
        if (is_resource($this->yyTraceFILE)) {
1526
            fclose($this->yyTraceFILE);
1527
        }
1528
    }
1529
1530
    public function yy_get_expected_tokens($token)
1531
    {
1532
        static $res3 = array();
1533
        static $res4 = array();
1534
        $state = $this->yystack[$this->yyidx]->stateno;
1535
        $expected = self::$yyExpectedTokens[$state];
1536
        if (isset($res3[$state][$token])) {
1537
            if ($res3[$state][$token]) {
1538
                return $expected;
1539
            }
1540
        } else {
1541
            if ($res3[$state][$token] = in_array($token, self::$yyExpectedTokens[$state], true)) {
1542
                return $expected;
1543
            }
1544
        }
1545
        $stack = $this->yystack;
1546
        $yyidx = $this->yyidx;
1547
        do {
1548
            $yyact = $this->yy_find_shift_action($token);
1549
            if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
1550
                // reduce action
1551
                $done = 0;
1552
                do {
1553
                    if ($done++ === 100) {
1554
                        $this->yyidx = $yyidx;
1555
                        $this->yystack = $stack;
1556
                        // too much recursion prevents proper detection
1557
                        // so give up
1558
                        return array_unique($expected);
1559
                    }
1560
                    $yyruleno = $yyact - self::YYNSTATE;
1561
                    $this->yyidx -= self::$yyRuleInfo[$yyruleno][1];
1562
                    $nextstate = $this->yy_find_reduce_action(
1563
                        $this->yystack[$this->yyidx]->stateno,
1564
                        self::$yyRuleInfo[$yyruleno][0]);
1565
                    if (isset(self::$yyExpectedTokens[$nextstate])) {
1566
                        $expected = array_merge($expected, self::$yyExpectedTokens[$nextstate]);
1567
                        if (isset($res4[$nextstate][$token])) {
1568
                            if ($res4[$nextstate][$token]) {
1569
                                $this->yyidx = $yyidx;
1570
                                $this->yystack = $stack;
1571
                                return array_unique($expected);
1572
                            }
1573
                        } else {
1574
                            if ($res4[$nextstate][$token] = in_array($token, self::$yyExpectedTokens[$nextstate], true)) {
1575
                                $this->yyidx = $yyidx;
1576
                                $this->yystack = $stack;
1577
                                return array_unique($expected);
1578
                            }
1579
                        }
1580
                    }
1581
                    if ($nextstate < self::YYNSTATE) {
1582
                        // we need to shift a non-terminal
1583
                        $this->yyidx++;
1584
                        $x = (object) ['stateno' => null, 'major' => null, 'minor' => null];
1585
                        $x->stateno = $nextstate;
1586
                        $x->major = self::$yyRuleInfo[$yyruleno][0];
1587
                        $this->yystack[$this->yyidx] = $x;
1588
                        continue 2;
1589
                    } elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) {
1590
                        $this->yyidx = $yyidx;
1591
                        $this->yystack = $stack;
1592
                        // the last token was just ignored, we can't accept
1593
                        // by ignoring input, this is in essence ignoring a
1594
                        // syntax error!
1595
                        return array_unique($expected);
1596
                    } elseif ($nextstate === self::YY_NO_ACTION) {
1597
                        $this->yyidx = $yyidx;
1598
                        $this->yystack = $stack;
1599
                        // input accepted, but not shifted (I guess)
1600
                        return $expected;
1601
                    } else {
1602
                        $yyact = $nextstate;
1603
                    }
1604
                } while (true);
1605
            }
1606
            break;
1607
        } while (true);
1608
        $this->yyidx = $yyidx;
1609
        $this->yystack = $stack;
1610
1611
        return array_unique($expected);
1612
    }
1613
1614
    public function yy_is_expected_token($token)
1615
    {
1616
        static $res = array();
1617
        static $res2 = array();
1618
        if ($token === 0) {
1619
            return true; // 0 is not part of this
1620
        }
1621
        $state = $this->yystack[$this->yyidx]->stateno;
1622
        if (isset($res[$state][$token])) {
1623
            if ($res[$state][$token]) {
1624
                return true;
1625
            }
1626
        } else {
1627
            if ($res[$state][$token] = in_array($token, self::$yyExpectedTokens[$state], true)) {
1628
                return true;
1629
            }
1630
       }
1631
        $stack = $this->yystack;
1632
        $yyidx = $this->yyidx;
1633
        do {
1634
            $yyact = $this->yy_find_shift_action($token);
1635
            if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
1636
                // reduce action
1637
                $done = 0;
1638
                do {
1639
                    if ($done++ === 100) {
1640
                        $this->yyidx = $yyidx;
1641
                        $this->yystack = $stack;
1642
                        // too much recursion prevents proper detection
1643
                        // so give up
1644
                        return true;
1645
                    }
1646
                    $yyruleno = $yyact - self::YYNSTATE;
1647
                    $this->yyidx -= self::$yyRuleInfo[$yyruleno][1];
1648
                    $nextstate = $this->yy_find_reduce_action(
1649
                        $this->yystack[$this->yyidx]->stateno,
1650
                        self::$yyRuleInfo[$yyruleno][0]);
1651
                    if (isset($res2[$nextstate][$token])) {
1652
                        if ($res2[$nextstate][$token]) {
1653
                            $this->yyidx = $yyidx;
1654
                            $this->yystack = $stack;
1655
                            return true;
1656
                        }
1657
                    } else {
1658
                        if ($res2[$nextstate][$token] = (isset(self::$yyExpectedTokens[$nextstate]) && in_array($token, self::$yyExpectedTokens[$nextstate], true))) {
1659
                            $this->yyidx = $yyidx;
1660
                            $this->yystack = $stack;
1661
                            return true;
1662
                        }
1663
                    }
1664
                    if ($nextstate < self::YYNSTATE) {
1665
                        // we need to shift a non-terminal
1666
                        $this->yyidx++;
1667
                        $x = (object) ['stateno' => null, 'major' => null, 'minor' => null];
1668
                        $x->stateno = $nextstate;
1669
                        $x->major = self::$yyRuleInfo[$yyruleno][0];
1670
                        $this->yystack[$this->yyidx] = $x;
1671
                        continue 2;
1672
                    } elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) {
1673
                        $this->yyidx = $yyidx;
1674
                        $this->yystack = $stack;
1675
                        if (!$token) {
1676
                            // end of input: this is valid
1677
                            return true;
1678
                        }
1679
                        // the last token was just ignored, we can't accept
1680
                        // by ignoring input, this is in essence ignoring a
1681
                        // syntax error!
1682
                        return false;
1683
                    } elseif ($nextstate === self::YY_NO_ACTION) {
1684
                        $this->yyidx = $yyidx;
1685
                        $this->yystack = $stack;
1686
                        // input accepted, but not shifted (I guess)
1687
                        return true;
1688
                    } else {
1689
                        $yyact = $nextstate;
1690
                    }
1691
                } while (true);
1692
            }
1693
            break;
1694
        } while (true);
1695
        $this->yyidx = $yyidx;
1696
        $this->yystack = $stack;
1697
1698
        return true;
1699
    }
1700
1701
   public function yy_find_shift_action($iLookAhead)
1702
    {
1703
        $stateno = $this->yystack[$this->yyidx]->stateno;
1704
1705
        /* if ($this->yyidx < 0) return self::YY_NO_ACTION;  */
1706
        if (!isset(self::$yy_shift_ofst[$stateno])) {
1707
            // no shift actions
1708
            return self::$yy_default[$stateno];
1709
        }
1710
        $i = self::$yy_shift_ofst[$stateno];
1711
        if ($i === self::YY_SHIFT_USE_DFLT) {
1712
            return self::$yy_default[$stateno];
1713
        }
1714
        if ($iLookAhead === self::YYNOCODE) {
1715
            return self::YY_NO_ACTION;
1716
        }
1717
        $i += $iLookAhead;
1718
        if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
1719
              self::$yy_lookahead[$i] != $iLookAhead) {
1720
            if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback)
1721
                   && ($iFallback = self::$yyFallback[$iLookAhead]) != 0) {
1722
                if ($this->yyTraceFILE) {
1723
                    fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'FALLBACK ' .
1724
                        $this->yyTokenName[$iLookAhead] . ' => ' .
1725
                        $this->yyTokenName[$iFallback] . "\n");
1726
                }
1727
1728
                return $this->yy_find_shift_action($iFallback);
1729
            }
1730
1731
            return self::$yy_default[$stateno];
1732
        } else {
1733
            return self::$yy_action[$i];
1734
        }
1735
    }
1736
1737
    public function yy_find_reduce_action($stateno, $iLookAhead)
1738
    {
1739
        /* $stateno = $this->yystack[$this->yyidx]->stateno; */
1740
1741
        if (!isset(self::$yy_reduce_ofst[$stateno])) {
1742
            return self::$yy_default[$stateno];
1743
        }
1744
        $i = self::$yy_reduce_ofst[$stateno];
1745
        if ($i === self::YY_REDUCE_USE_DFLT) {
1746
            return self::$yy_default[$stateno];
1747
        }
1748
        if ($iLookAhead === self::YYNOCODE) {
1749
            return self::YY_NO_ACTION;
1750
        }
1751
        $i += $iLookAhead;
1752
        if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
1753
              self::$yy_lookahead[$i] != $iLookAhead) {
1754
            return self::$yy_default[$stateno];
1755
        } else {
1756
            return self::$yy_action[$i];
1757
        }
1758
    }
1759
1760
    public function yy_shift($yyNewState, $yyMajor, $yypMinor)
1761
    {
1762
        $this->yyidx++;
1763
        if ($this->yyidx >= self::YYSTACKDEPTH) {
1764
            $this->yyidx--;
1765
            if ($this->yyTraceFILE) {
1766
                fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt);
1767
            }
1768
            while ($this->yyidx >= 0) {
1769
                $this->yy_pop_parser_stack();
1770
            }
1771
// line 232 "src/Parser/TemplateParser.y"
1772
1773
    $this->internalError = true;
1774
    $this->compiler->trigger_template_error('Stack overflow in template parser');
1775
1776
            return;
1777
        }
1778
        $yytos = (object) ['stateno' => null, 'major' => null, 'minor' => null];
1779
        $yytos->stateno = $yyNewState;
1780
        $yytos->major = $yyMajor;
1781
        $yytos->minor = $yypMinor;
1782
        $this->yystack[] = $yytos;
1783
        if ($this->yyTraceFILE && $this->yyidx > 0) {
1784
            fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt,
1785
                $yyNewState);
1786
            fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
1787
            for ($i = 1; $i <= $this->yyidx; $i++) {
1788
                fprintf($this->yyTraceFILE, " %s",
1789
                    $this->yyTokenName[$this->yystack[$i]->major]);
1790
            }
1791
            fwrite($this->yyTraceFILE,"\n");
1792
        }
1793
    }
1794
1795
    public static $yyRuleInfo = array(
1796
  array( 0 => 61, 1 => 1 ),
1797
  array( 0 => 62, 1 => 2 ),
1798
  array( 0 => 62, 1 => 2 ),
1799
  array( 0 => 62, 1 => 2 ),
1800
  array( 0 => 62, 1 => 4 ),
1801
  array( 0 => 63, 1 => 4 ),
1802
  array( 0 => 63, 1 => 1 ),
1803
  array( 0 => 64, 1 => 2 ),
1804
  array( 0 => 64, 1 => 0 ),
1805
  array( 0 => 62, 1 => 2 ),
1806
  array( 0 => 62, 1 => 0 ),
1807
  array( 0 => 65, 1 => 1 ),
1808
  array( 0 => 65, 1 => 1 ),
1809
  array( 0 => 65, 1 => 1 ),
1810
  array( 0 => 65, 1 => 3 ),
1811
  array( 0 => 65, 1 => 2 ),
1812
  array( 0 => 66, 1 => 1 ),
1813
  array( 0 => 66, 1 => 2 ),
1814
  array( 0 => 66, 1 => 2 ),
1815
  array( 0 => 69, 1 => 2 ),
1816
  array( 0 => 68, 1 => 2 ),
1817
  array( 0 => 71, 1 => 1 ),
1818
  array( 0 => 71, 1 => 1 ),
1819
  array( 0 => 71, 1 => 1 ),
1820
  array( 0 => 67, 1 => 3 ),
1821
  array( 0 => 67, 1 => 2 ),
1822
  array( 0 => 67, 1 => 4 ),
1823
  array( 0 => 67, 1 => 5 ),
1824
  array( 0 => 67, 1 => 6 ),
1825
  array( 0 => 67, 1 => 2 ),
1826
  array( 0 => 67, 1 => 3 ),
1827
  array( 0 => 67, 1 => 2 ),
1828
  array( 0 => 67, 1 => 3 ),
1829
  array( 0 => 67, 1 => 8 ),
1830
  array( 0 => 79, 1 => 2 ),
1831
  array( 0 => 79, 1 => 1 ),
1832
  array( 0 => 67, 1 => 5 ),
1833
  array( 0 => 67, 1 => 7 ),
1834
  array( 0 => 67, 1 => 6 ),
1835
  array( 0 => 67, 1 => 8 ),
1836
  array( 0 => 67, 1 => 2 ),
1837
  array( 0 => 67, 1 => 3 ),
1838
  array( 0 => 67, 1 => 4 ),
1839
  array( 0 => 65, 1 => 1 ),
1840
  array( 0 => 67, 1 => 2 ),
1841
  array( 0 => 67, 1 => 3 ),
1842
  array( 0 => 67, 1 => 4 ),
1843
  array( 0 => 67, 1 => 5 ),
1844
  array( 0 => 72, 1 => 2 ),
1845
  array( 0 => 72, 1 => 1 ),
1846
  array( 0 => 72, 1 => 0 ),
1847
  array( 0 => 82, 1 => 4 ),
1848
  array( 0 => 82, 1 => 2 ),
1849
  array( 0 => 82, 1 => 2 ),
1850
  array( 0 => 82, 1 => 2 ),
1851
  array( 0 => 82, 1 => 2 ),
1852
  array( 0 => 82, 1 => 2 ),
1853
  array( 0 => 82, 1 => 4 ),
1854
  array( 0 => 78, 1 => 1 ),
1855
  array( 0 => 78, 1 => 3 ),
1856
  array( 0 => 77, 1 => 3 ),
1857
  array( 0 => 77, 1 => 3 ),
1858
  array( 0 => 77, 1 => 3 ),
1859
  array( 0 => 77, 1 => 3 ),
1860
  array( 0 => 75, 1 => 1 ),
1861
  array( 0 => 75, 1 => 1 ),
1862
  array( 0 => 75, 1 => 1 ),
1863
  array( 0 => 75, 1 => 2 ),
1864
  array( 0 => 75, 1 => 2 ),
1865
  array( 0 => 75, 1 => 3 ),
1866
  array( 0 => 75, 1 => 3 ),
1867
  array( 0 => 75, 1 => 3 ),
1868
  array( 0 => 75, 1 => 3 ),
1869
  array( 0 => 75, 1 => 3 ),
1870
  array( 0 => 75, 1 => 2 ),
1871
  array( 0 => 88, 1 => 1 ),
1872
  array( 0 => 75, 1 => 3 ),
1873
  array( 0 => 75, 1 => 3 ),
1874
  array( 0 => 83, 1 => 4 ),
1875
  array( 0 => 84, 1 => 5 ),
1876
  array( 0 => 84, 1 => 5 ),
1877
  array( 0 => 84, 1 => 5 ),
1878
  array( 0 => 84, 1 => 4 ),
1879
  array( 0 => 74, 1 => 1 ),
1880
  array( 0 => 74, 1 => 2 ),
1881
  array( 0 => 74, 1 => 2 ),
1882
  array( 0 => 74, 1 => 2 ),
1883
  array( 0 => 74, 1 => 2 ),
1884
  array( 0 => 74, 1 => 1 ),
1885
  array( 0 => 74, 1 => 1 ),
1886
  array( 0 => 74, 1 => 3 ),
1887
  array( 0 => 74, 1 => 2 ),
1888
  array( 0 => 74, 1 => 2 ),
1889
  array( 0 => 74, 1 => 1 ),
1890
  array( 0 => 74, 1 => 1 ),
1891
  array( 0 => 74, 1 => 3 ),
1892
  array( 0 => 74, 1 => 3 ),
1893
  array( 0 => 74, 1 => 3 ),
1894
  array( 0 => 74, 1 => 1 ),
1895
  array( 0 => 74, 1 => 1 ),
1896
  array( 0 => 74, 1 => 3 ),
1897
  array( 0 => 74, 1 => 1 ),
1898
  array( 0 => 74, 1 => 2 ),
1899
  array( 0 => 74, 1 => 1 ),
1900
  array( 0 => 74, 1 => 1 ),
1901
  array( 0 => 74, 1 => 3 ),
1902
  array( 0 => 91, 1 => 1 ),
1903
  array( 0 => 91, 1 => 1 ),
1904
  array( 0 => 95, 1 => 3 ),
1905
  array( 0 => 95, 1 => 3 ),
1906
  array( 0 => 95, 1 => 1 ),
1907
  array( 0 => 95, 1 => 1 ),
1908
  array( 0 => 95, 1 => 0 ),
1909
  array( 0 => 96, 1 => 1 ),
1910
  array( 0 => 96, 1 => 1 ),
1911
  array( 0 => 96, 1 => 3 ),
1912
  array( 0 => 96, 1 => 1 ),
1913
  array( 0 => 98, 1 => 3 ),
1914
  array( 0 => 98, 1 => 4 ),
1915
  array( 0 => 98, 1 => 3 ),
1916
  array( 0 => 98, 1 => 4 ),
1917
  array( 0 => 73, 1 => 1 ),
1918
  array( 0 => 73, 1 => 1 ),
1919
  array( 0 => 70, 1 => 2 ),
1920
  array( 0 => 70, 1 => 2 ),
1921
  array( 0 => 99, 1 => 2 ),
1922
  array( 0 => 99, 1 => 0 ),
1923
  array( 0 => 100, 1 => 2 ),
1924
  array( 0 => 100, 1 => 2 ),
1925
  array( 0 => 100, 1 => 4 ),
1926
  array( 0 => 100, 1 => 2 ),
1927
  array( 0 => 100, 1 => 2 ),
1928
  array( 0 => 100, 1 => 4 ),
1929
  array( 0 => 100, 1 => 3 ),
1930
  array( 0 => 100, 1 => 5 ),
1931
  array( 0 => 100, 1 => 3 ),
1932
  array( 0 => 100, 1 => 3 ),
1933
  array( 0 => 100, 1 => 3 ),
1934
  array( 0 => 100, 1 => 3 ),
1935
  array( 0 => 100, 1 => 3 ),
1936
  array( 0 => 100, 1 => 3 ),
1937
  array( 0 => 100, 1 => 2 ),
1938
  array( 0 => 80, 1 => 1 ),
1939
  array( 0 => 80, 1 => 1 ),
1940
  array( 0 => 80, 1 => 2 ),
1941
  array( 0 => 101, 1 => 1 ),
1942
  array( 0 => 101, 1 => 1 ),
1943
  array( 0 => 101, 1 => 3 ),
1944
  array( 0 => 97, 1 => 2 ),
1945
  array( 0 => 102, 1 => 1 ),
1946
  array( 0 => 102, 1 => 2 ),
1947
  array( 0 => 103, 1 => 3 ),
1948
  array( 0 => 103, 1 => 3 ),
1949
  array( 0 => 103, 1 => 5 ),
1950
  array( 0 => 103, 1 => 6 ),
1951
  array( 0 => 103, 1 => 2 ),
1952
  array( 0 => 90, 1 => 4 ),
1953
  array( 0 => 104, 1 => 4 ),
1954
  array( 0 => 104, 1 => 4 ),
1955
  array( 0 => 105, 1 => 3 ),
1956
  array( 0 => 105, 1 => 1 ),
1957
  array( 0 => 105, 1 => 0 ),
1958
  array( 0 => 76, 1 => 3 ),
1959
  array( 0 => 76, 1 => 2 ),
1960
  array( 0 => 106, 1 => 3 ),
1961
  array( 0 => 106, 1 => 2 ),
1962
  array( 0 => 81, 1 => 2 ),
1963
  array( 0 => 81, 1 => 0 ),
1964
  array( 0 => 107, 1 => 2 ),
1965
  array( 0 => 107, 1 => 3 ),
1966
  array( 0 => 107, 1 => 2 ),
1967
  array( 0 => 93, 1 => 1 ),
1968
  array( 0 => 93, 1 => 2 ),
1969
  array( 0 => 93, 1 => 1 ),
1970
  array( 0 => 93, 1 => 2 ),
1971
  array( 0 => 93, 1 => 3 ),
1972
  array( 0 => 86, 1 => 1 ),
1973
  array( 0 => 86, 1 => 1 ),
1974
  array( 0 => 85, 1 => 1 ),
1975
  array( 0 => 87, 1 => 1 ),
1976
  array( 0 => 94, 1 => 3 ),
1977
  array( 0 => 94, 1 => 3 ),
1978
  array( 0 => 108, 1 => 1 ),
1979
  array( 0 => 108, 1 => 3 ),
1980
  array( 0 => 108, 1 => 0 ),
1981
  array( 0 => 109, 1 => 3 ),
1982
  array( 0 => 109, 1 => 3 ),
1983
  array( 0 => 109, 1 => 1 ),
1984
  array( 0 => 92, 1 => 2 ),
1985
  array( 0 => 92, 1 => 3 ),
1986
  array( 0 => 110, 1 => 2 ),
1987
  array( 0 => 110, 1 => 1 ),
1988
  array( 0 => 111, 1 => 3 ),
1989
  array( 0 => 111, 1 => 3 ),
1990
  array( 0 => 111, 1 => 1 ),
1991
  array( 0 => 111, 1 => 3 ),
1992
  array( 0 => 111, 1 => 3 ),
1993
  array( 0 => 111, 1 => 1 ),
1994
  array( 0 => 111, 1 => 1 ),
1995
    );
1996
1997
    public static $yyReduceMap = array(
1998
        0 => 0,
1999
        1 => 1,
2000
        2 => 2,
2001
        3 => 3,
2002
        4 => 4,
2003
        5 => 5,
2004
        6 => 6,
2005
        21 => 6,
2006
        22 => 6,
2007
        23 => 6,
2008
        35 => 6,
2009
        55 => 6,
2010
        56 => 6,
2011
        64 => 6,
2012
        65 => 6,
2013
        66 => 6,
2014
        83 => 6,
2015
        88 => 6,
2016
        89 => 6,
2017
        94 => 6,
2018
        98 => 6,
2019
        99 => 6,
2020
        103 => 6,
2021
        104 => 6,
2022
        106 => 6,
2023
        122 => 6,
2024
        182 => 6,
2025
        187 => 6,
2026
        7 => 7,
2027
        8 => 8,
2028
        9 => 9,
2029
        11 => 11,
2030
        12 => 12,
2031
        13 => 13,
2032
        14 => 14,
2033
        15 => 15,
2034
        16 => 16,
2035
        17 => 17,
2036
        18 => 18,
2037
        19 => 19,
2038
        20 => 20,
2039
        24 => 24,
2040
        25 => 25,
2041
        26 => 26,
2042
        27 => 27,
2043
        28 => 28,
2044
        29 => 29,
2045
        30 => 30,
2046
        32 => 30,
2047
        31 => 31,
2048
        33 => 33,
2049
        34 => 34,
2050
        36 => 36,
2051
        37 => 37,
2052
        38 => 38,
2053
        39 => 39,
2054
        40 => 40,
2055
        41 => 41,
2056
        42 => 42,
2057
        43 => 43,
2058
        44 => 44,
2059
        45 => 45,
2060
        46 => 46,
2061
        47 => 47,
2062
        48 => 48,
2063
        49 => 49,
2064
        58 => 49,
2065
        110 => 49,
2066
        111 => 49,
2067
        160 => 49,
2068
        164 => 49,
2069
        168 => 49,
2070
        170 => 49,
2071
        50 => 50,
2072
        112 => 50,
2073
        161 => 50,
2074
        167 => 50,
2075
        51 => 51,
2076
        52 => 52,
2077
        53 => 52,
2078
        54 => 54,
2079
        145 => 54,
2080
        57 => 57,
2081
        59 => 59,
2082
        60 => 60,
2083
        61 => 60,
2084
        62 => 62,
2085
        63 => 63,
2086
        67 => 67,
2087
        68 => 68,
2088
        69 => 69,
2089
        70 => 70,
2090
        71 => 70,
2091
        72 => 72,
2092
        73 => 73,
2093
        74 => 74,
2094
        75 => 75,
2095
        76 => 76,
2096
        77 => 77,
2097
        78 => 78,
2098
        79 => 79,
2099
        80 => 80,
2100
        81 => 80,
2101
        82 => 82,
2102
        84 => 84,
2103
        86 => 84,
2104
        87 => 84,
2105
        125 => 84,
2106
        85 => 85,
2107
        90 => 90,
2108
        91 => 91,
2109
        92 => 92,
2110
        93 => 93,
2111
        95 => 95,
2112
        96 => 96,
2113
        97 => 96,
2114
        100 => 100,
2115
        101 => 101,
2116
        102 => 102,
2117
        105 => 105,
2118
        107 => 107,
2119
        108 => 108,
2120
        109 => 108,
2121
        159 => 108,
2122
        113 => 113,
2123
        114 => 114,
2124
        115 => 115,
2125
        116 => 116,
2126
        117 => 117,
2127
        118 => 118,
2128
        119 => 119,
2129
        120 => 120,
2130
        121 => 121,
2131
        123 => 123,
2132
        124 => 124,
2133
        126 => 126,
2134
        184 => 126,
2135
        127 => 127,
2136
        128 => 128,
2137
        129 => 129,
2138
        130 => 130,
2139
        131 => 131,
2140
        132 => 132,
2141
        140 => 132,
2142
        133 => 133,
2143
        134 => 134,
2144
        135 => 135,
2145
        136 => 135,
2146
        138 => 135,
2147
        139 => 135,
2148
        137 => 137,
2149
        141 => 141,
2150
        142 => 142,
2151
        143 => 143,
2152
        188 => 143,
2153
        144 => 144,
2154
        146 => 146,
2155
        147 => 147,
2156
        148 => 148,
2157
        149 => 149,
2158
        150 => 150,
2159
        151 => 151,
2160
        152 => 152,
2161
        153 => 153,
2162
        154 => 154,
2163
        155 => 155,
2164
        156 => 156,
2165
        157 => 157,
2166
        158 => 158,
2167
        162 => 162,
2168
        163 => 163,
2169
        165 => 165,
2170
        166 => 166,
2171
        169 => 169,
2172
        171 => 171,
2173
        172 => 172,
2174
        173 => 173,
2175
        174 => 174,
2176
        175 => 175,
2177
        176 => 176,
2178
        177 => 177,
2179
        178 => 178,
2180
        179 => 179,
2181
        180 => 180,
2182
        181 => 180,
2183
        183 => 183,
2184
        185 => 185,
2185
        186 => 186,
2186
        189 => 189,
2187
        190 => 190,
2188
        191 => 191,
2189
        192 => 192,
2190
        195 => 192,
2191
        193 => 193,
2192
        196 => 193,
2193
        194 => 194,
2194
        197 => 197,
2195
        198 => 198,
2196
    );
2197
// line 245 "src/Parser/TemplateParser.y"
2198
    public function yy_r0(){
2199
    $this->root_buffer->prepend_array($this, $this->template_prefix);
2200
    $this->root_buffer->append_array($this, $this->template_postfix);
2201
    $this->_retvalue = $this->root_buffer->to_smarty_php($this);
2202
    }
2203
// line 252 "src/Parser/TemplateParser.y"
2204
    public function yy_r1(){
2205
         $text = $this->yystack[ $this->yyidx + 0 ]->minor;
2206
2207
         if ((string)$text == '') {
2208
            $this->current_buffer->append_subtree($this, null);
2209
         }
2210
2211
         $this->current_buffer->append_subtree($this, new \Smarty\ParseTree\Text($text, $this->strip));
2212
    }
2213
// line 262 "src/Parser/TemplateParser.y"
2214
    public function yy_r2(){
2215
    $this->strip = true;
2216
    }
2217
// line 266 "src/Parser/TemplateParser.y"
2218
    public function yy_r3(){
2219
    $this->strip = false;
2220
    }
2221
// line 271 "src/Parser/TemplateParser.y"
2222
    public function yy_r4(){
2223
       $this->current_buffer->append_subtree($this, new \Smarty\ParseTree\Text($this->yystack[$this->yyidx + -1]->minor));
2224
    }
2225
// line 276 "src/Parser/TemplateParser.y"
2226
    public function yy_r5(){
2227
    $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.$this->yystack[$this->yyidx + -1]->minor;
2228
    }
2229
// line 279 "src/Parser/TemplateParser.y"
2230
    public function yy_r6(){
2231
    $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
2232
    }
2233
// line 283 "src/Parser/TemplateParser.y"
2234
    public function yy_r7(){
2235
        $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
2236
2237
    }
2238
// line 288 "src/Parser/TemplateParser.y"
2239
    public function yy_r8(){
2240
    $this->_retvalue = '';
2241
    }
2242
// line 292 "src/Parser/TemplateParser.y"
2243
    public function yy_r9(){
2244
     $this->current_buffer->append_subtree($this, $this->mergePrefixCode($this->yystack[$this->yyidx + 0]->minor));
2245
     $this->compiler->has_variable_string = false;
2246
     $this->block_nesting_level = $this->compiler->getTagStackCount();
2247
    }
2248
// line 302 "src/Parser/TemplateParser.y"
2249
    public function yy_r11(){
2250
    $var = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' $');
2251
    $attributes = [];
2252
    if (preg_match('/^(.*)(\s+nocache)$/', $var, $match)) {
2253
        $attributes[] = 'nocache';
2254
        $var = $match[1];
2255
    }
2256
    $this->compiler->triggerTagNoCache($var);
2257
    $this->_retvalue = $this->compiler->compilePrintExpression('$_smarty_tpl->getValue(\''.$var.'\')', $attributes);
2258
    }
2259
// line 314 "src/Parser/TemplateParser.y"
2260
    public function yy_r12(){
2261
    $tag = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()));
2262
    if ($tag == 'strip') {
2263
        $this->strip = true;
2264
        $this->_retvalue = null;
2265
    } else {
2266
        if (defined($tag)) {
2267
            if ($this->security) {
2268
               $this->security->isTrustedConstant($tag, $this->compiler);
2269
            }
2270
            $this->_retvalue = $this->compiler->compilePrintExpression($tag);
2271
        } else {
2272
            if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) {
2273
                $this->_retvalue = $this->compiler->compileTag($match[1],array('\'nocache\''));
2274
            } else {
2275
                $this->_retvalue = $this->compiler->compileTag($tag,array());
2276
            }
2277
        }
2278
    }
2279
    }
2280
// line 335 "src/Parser/TemplateParser.y"
2281
    public function yy_r13(){
2282
    $j = strrpos($this->yystack[$this->yyidx + 0]->minor,'.');
2283
    if ($this->yystack[$this->yyidx + 0]->minor[$j+1] == 'c') {
2284
        // {$smarty.block.child}
2285
        $this->_retvalue = $this->compiler->compileChildBlock();
2286
    } else {
2287
        // {$smarty.block.parent}
2288
       $this->_retvalue = $this->compiler->compileParentBlock();
2289
     }
2290
    }
2291
// line 346 "src/Parser/TemplateParser.y"
2292
    public function yy_r14(){
2293
    $this->_retvalue  = $this->yystack[$this->yyidx + -1]->minor;
2294
    }
2295
// line 350 "src/Parser/TemplateParser.y"
2296
    public function yy_r15(){
2297
     $this->_retvalue  = $this->yystack[$this->yyidx + -1]->minor;
2298
     }
2299
// line 354 "src/Parser/TemplateParser.y"
2300
    public function yy_r16(){
2301
    $this->_retvalue = $this->compiler->compilePrintExpression($this->yystack[$this->yyidx + 0]->minor[0], $this->yystack[$this->yyidx + 0]->minor[1]);
2302
    }
2303
// line 363 "src/Parser/TemplateParser.y"
2304
    public function yy_r17(){
2305
    $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array(array('value'=>$this->yystack[$this->yyidx + 0]->minor[0]),array('var'=>'\''.substr($this->yystack[$this->yyidx + -1]->minor,1).'\'')),$this->yystack[$this->yyidx + 0]->minor[1]));
2306
    }
2307
// line 367 "src/Parser/TemplateParser.y"
2308
    public function yy_r18(){
2309
    $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array(array('value'=>$this->yystack[$this->yyidx + 0]->minor[0]),array('var'=>$this->yystack[$this->yyidx + -1]->minor['var'])),$this->yystack[$this->yyidx + 0]->minor[1]),array('smarty_internal_index'=>$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index']));
2310
    }
2311
// line 371 "src/Parser/TemplateParser.y"
2312
    public function yy_r19(){
2313
       $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
2314
    }
2315
// line 375 "src/Parser/TemplateParser.y"
2316
    public function yy_r20(){
2317
    $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor);
2318
    }
2319
// line 390 "src/Parser/TemplateParser.y"
2320
    public function yy_r24(){
2321
        if (defined($this->yystack[$this->yyidx + -1]->minor)) {
2322
            if ($this->security) {
2323
                $this->security->isTrustedConstant($this->yystack[$this->yyidx + -1]->minor, $this->compiler);
2324
            }
2325
            $this->_retvalue = $this->compiler->compilePrintExpression($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor);
2326
        } else {
2327
            $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor);
2328
        }
2329
    }
2330
// line 400 "src/Parser/TemplateParser.y"
2331
    public function yy_r25(){
2332
        if (defined($this->yystack[$this->yyidx + 0]->minor)) {
2333
            if ($this->security) {
2334
                $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler);
2335
            }
2336
            $this->_retvalue = $this->compiler->compilePrintExpression($this->yystack[$this->yyidx + 0]->minor);
2337
        } else {
2338
            $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + 0]->minor,array());
2339
        }
2340
    }
2341
// line 413 "src/Parser/TemplateParser.y"
2342
    public function yy_r26(){
2343
        if (defined($this->yystack[$this->yyidx + -2]->minor)) {
2344
            if ($this->security) {
2345
                $this->security->isTrustedConstant($this->yystack[$this->yyidx + -2]->minor, $this->compiler);
2346
            }
2347
            $this->_retvalue = $this->compiler->compilePrintExpression($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, $this->yystack[$this->yyidx + -1]->minor);
2348
        } else {
2349
            $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor,$this->yystack[$this->yyidx + 0]->minor, array('modifierlist'=>$this->yystack[$this->yyidx + -1]->minor));
2350
        }
2351
    }
2352
// line 425 "src/Parser/TemplateParser.y"
2353
    public function yy_r27(){
2354
    $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor,$this->yystack[$this->yyidx + 0]->minor,array('object_method'=>$this->yystack[$this->yyidx + -1]->minor));
2355
    }
2356
// line 430 "src/Parser/TemplateParser.y"
2357
    public function yy_r28(){
2358
    $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + 0]->minor,array('modifierlist'=>$this->yystack[$this->yyidx + -1]->minor, 'object_method'=>$this->yystack[$this->yyidx + -2]->minor));
2359
    }
2360
// line 435 "src/Parser/TemplateParser.y"
2361
    public function yy_r29(){
2362
    $tag = trim(substr($this->yystack[$this->yyidx + -1]->minor,$this->compiler->getLdelLength())); 
2363
    $this->_retvalue = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,array(),array('if condition'=>$this->yystack[$this->yyidx + 0]->minor));
2364
    }
2365
// line 440 "src/Parser/TemplateParser.y"
2366
    public function yy_r30(){
2367
    $tag = trim(substr($this->yystack[$this->yyidx + -2]->minor,$this->compiler->getLdelLength()));
2368
    $this->_retvalue = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,$this->yystack[$this->yyidx + 0]->minor,array('if condition'=>$this->yystack[$this->yyidx + -1]->minor));
2369
    }
2370
// line 445 "src/Parser/TemplateParser.y"
2371
    public function yy_r31(){
2372
    $tag = trim(substr($this->yystack[$this->yyidx + -1]->minor,$this->compiler->getLdelLength()));
2373
    $this->_retvalue = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,array(),array('if condition'=>$this->yystack[$this->yyidx + 0]->minor));
2374
    }
2375
// line 456 "src/Parser/TemplateParser.y"
2376
    public function yy_r33(){
2377
    $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('start'=>$this->yystack[$this->yyidx + -6]->minor),array('ifexp'=>$this->yystack[$this->yyidx + -4]->minor),array('var'=>$this->yystack[$this->yyidx + -2]->minor),array('step'=>$this->yystack[$this->yyidx + -1]->minor))),1);
2378
    }
2379
// line 460 "src/Parser/TemplateParser.y"
2380
    public function yy_r34(){
2381
    $this->_retvalue = '='.$this->yystack[$this->yyidx + 0]->minor;
2382
    }
2383
// line 468 "src/Parser/TemplateParser.y"
2384
    public function yy_r36(){
2385
    $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('start'=>$this->yystack[$this->yyidx + -3]->minor),array('to'=>$this->yystack[$this->yyidx + -1]->minor))),0);
2386
    }
2387
// line 472 "src/Parser/TemplateParser.y"
2388
    public function yy_r37(){
2389
    $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('start'=>$this->yystack[$this->yyidx + -5]->minor),array('to'=>$this->yystack[$this->yyidx + -3]->minor),array('step'=>$this->yystack[$this->yyidx + -1]->minor))),0);
2390
    }
2391
// line 477 "src/Parser/TemplateParser.y"
2392
    public function yy_r38(){
2393
    $this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('from'=>$this->yystack[$this->yyidx + -3]->minor),array('item'=>$this->yystack[$this->yyidx + -1]->minor))));
2394
    }
2395
// line 481 "src/Parser/TemplateParser.y"
2396
    public function yy_r39(){
2397
    $this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('from'=>$this->yystack[$this->yyidx + -5]->minor),array('item'=>$this->yystack[$this->yyidx + -1]->minor),array('key'=>$this->yystack[$this->yyidx + -3]->minor))));
2398
    }
2399
// line 484 "src/Parser/TemplateParser.y"
2400
    public function yy_r40(){
2401
    $this->_retvalue = $this->compiler->compileTag('foreach',$this->yystack[$this->yyidx + 0]->minor);
2402
    }
2403
// line 489 "src/Parser/TemplateParser.y"
2404
    public function yy_r41(){
2405
    $this->_retvalue = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array(array_merge(array($this->yystack[$this->yyidx + -1]->minor),$this->yystack[$this->yyidx + 0]->minor))));
2406
    }
2407
// line 493 "src/Parser/TemplateParser.y"
2408
    public function yy_r42(){
2409
    $this->_retvalue = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array_merge(array(array_merge(array($this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor)),$this->yystack[$this->yyidx + 0]->minor)));
2410
    }
2411
// line 499 "src/Parser/TemplateParser.y"
2412
    public function yy_r43(){
2413
    $tag = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' /');
2414
    if ($tag === 'strip') {
2415
        $this->strip = false;
2416
        $this->_retvalue = null;
2417
    } else {
2418
       $this->_retvalue = $this->compiler->compileTag($tag.'close',array());
2419
    }
2420
     }
2421
// line 508 "src/Parser/TemplateParser.y"
2422
    public function yy_r44(){
2423
    $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + 0]->minor.'close',array());
2424
    }
2425
// line 512 "src/Parser/TemplateParser.y"
2426
    public function yy_r45(){
2427
    $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor.'close',array(),array('modifier_list'=>$this->yystack[$this->yyidx + 0]->minor));
2428
    }
2429
// line 517 "src/Parser/TemplateParser.y"
2430
    public function yy_r46(){
2431
    $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor.'close',array(),array('object_method'=>$this->yystack[$this->yyidx + 0]->minor));
2432
    }
2433
// line 521 "src/Parser/TemplateParser.y"
2434
    public function yy_r47(){
2435
    $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor.'close',array(),array('object_method'=>$this->yystack[$this->yyidx + -1]->minor, 'modifier_list'=>$this->yystack[$this->yyidx + 0]->minor));
2436
    }
2437
// line 529 "src/Parser/TemplateParser.y"
2438
    public function yy_r48(){
2439
    $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
2440
    $this->_retvalue[] = $this->yystack[$this->yyidx + 0]->minor;
2441
    }
2442
// line 535 "src/Parser/TemplateParser.y"
2443
    public function yy_r49(){
2444
    $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor);
2445
    }
2446
// line 540 "src/Parser/TemplateParser.y"
2447
    public function yy_r50(){
2448
    $this->_retvalue = array();
2449
    }
2450
// line 545 "src/Parser/TemplateParser.y"
2451
    public function yy_r51(){
2452
    if (defined($this->yystack[$this->yyidx + 0]->minor)) {
2453
        if ($this->security) {
2454
            $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler);
2455
        }
2456
        $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor);
2457
    } else {
2458
        $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>'\''.$this->yystack[$this->yyidx + 0]->minor.'\'');
2459
    }
2460
    }
2461
// line 556 "src/Parser/TemplateParser.y"
2462
    public function yy_r52(){
2463
    $this->_retvalue = array(trim($this->yystack[$this->yyidx + -1]->minor," =\n\r\t")=>$this->yystack[$this->yyidx + 0]->minor);
2464
    }
2465
// line 564 "src/Parser/TemplateParser.y"
2466
    public function yy_r54(){
2467
    $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\'';
2468
    }
2469
// line 576 "src/Parser/TemplateParser.y"
2470
    public function yy_r57(){
2471
    $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor);
2472
    }
2473
// line 589 "src/Parser/TemplateParser.y"
2474
    public function yy_r59(){
2475
    $this->yystack[$this->yyidx + -2]->minor[]=$this->yystack[$this->yyidx + 0]->minor;
2476
    $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor;
2477
    }
2478
// line 594 "src/Parser/TemplateParser.y"
2479
    public function yy_r60(){
2480
    $this->_retvalue = array('var' => '\''.substr($this->yystack[$this->yyidx + -2]->minor,1).'\'', 'value'=>$this->yystack[$this->yyidx + 0]->minor);
2481
    }
2482
// line 601 "src/Parser/TemplateParser.y"
2483
    public function yy_r62(){
2484
    $this->_retvalue = array('var' => $this->yystack[$this->yyidx + -2]->minor, 'value'=>$this->yystack[$this->yyidx + 0]->minor);
2485
    }
2486
// line 605 "src/Parser/TemplateParser.y"
2487
    public function yy_r63(){
2488
    $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
2489
    }
2490
// line 630 "src/Parser/TemplateParser.y"
2491
    public function yy_r67(){
2492
	$this->_retvalue = '$_smarty_tpl->getVariable(\''. substr($this->yystack[$this->yyidx + 0]->minor,1) .'\')->preIncDec(\'' . $this->yystack[$this->yyidx + -1]->minor . '\')';
2493
    }
2494
// line 635 "src/Parser/TemplateParser.y"
2495
    public function yy_r68(){
2496
	$this->_retvalue = '$_smarty_tpl->getVariable(\''. substr($this->yystack[$this->yyidx + -1]->minor,1) .'\')->postIncDec(\'' . $this->yystack[$this->yyidx + 0]->minor . '\')';
2497
    }
2498
// line 640 "src/Parser/TemplateParser.y"
2499
    public function yy_r69(){
2500
    $this->_retvalue = '$_smarty_tpl->getStreamVariable(\''.substr($this->yystack[$this->yyidx + -2]->minor,1).'://' . $this->yystack[$this->yyidx + 0]->minor . '\')';
2501
    }
2502
// line 645 "src/Parser/TemplateParser.y"
2503
    public function yy_r70(){
2504
    $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . trim($this->yystack[$this->yyidx + -1]->minor) . $this->yystack[$this->yyidx + 0]->minor;
2505
    }
2506
// line 655 "src/Parser/TemplateParser.y"
2507
    public function yy_r72(){
2508
    $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor['pre']. $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor['op'].$this->yystack[$this->yyidx + 0]->minor .')';
2509
    }
2510
// line 659 "src/Parser/TemplateParser.y"
2511
    public function yy_r73(){
2512
    $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
2513
    }
2514
// line 663 "src/Parser/TemplateParser.y"
2515
    public function yy_r74(){
2516
    $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor . $this->yystack[$this->yyidx + -1]->minor . ')';
2517
    }
2518
// line 667 "src/Parser/TemplateParser.y"
2519
    public function yy_r75(){
2520
    static $isin = [
2521
        'isin' => 'in_array(',
2522
        'isnotin' => '!in_array(',
2523
    ];
2524
   $op = strtolower(str_replace(' ', '', $this->yystack[$this->yyidx + 0]->minor));
2525
   $this->_retvalue = $isin[$op];
2526
    }
2527
// line 676 "src/Parser/TemplateParser.y"
2528
    public function yy_r76(){
2529
    $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor . $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor.')';
2530
    }
2531
// line 680 "src/Parser/TemplateParser.y"
2532
    public function yy_r77(){
2533
    $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor . $this->yystack[$this->yyidx + -2]->minor.',(array)'.$this->yystack[$this->yyidx + 0]->minor.')';
2534
    }
2535
// line 685 "src/Parser/TemplateParser.y"
2536
    public function yy_r78(){
2537
    $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.' ?? '.$this->yystack[$this->yyidx + 0]->minor;
2538
    }
2539
// line 692 "src/Parser/TemplateParser.y"
2540
    public function yy_r79(){
2541
    $this->compiler->triggerTagNoCache(substr($this->yystack[$this->yyidx + -2]->minor,1));
2542
    $this->_retvalue = $this->yystack[$this->yyidx + -4]->minor.' ? $_smarty_tpl->getValue(\''.substr($this->yystack[$this->yyidx + -2]->minor,1).'\') : '.$this->yystack[$this->yyidx + 0]->minor;
2543
    }
2544
// line 697 "src/Parser/TemplateParser.y"
2545
    public function yy_r80(){
2546
    $this->_retvalue = $this->yystack[$this->yyidx + -4]->minor.' ? '.$this->yystack[$this->yyidx + -2]->minor.' : '.$this->yystack[$this->yyidx + 0]->minor;
2547
    }
2548
// line 706 "src/Parser/TemplateParser.y"
2549
    public function yy_r82(){
2550
    $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.' ?: '.$this->yystack[$this->yyidx + 0]->minor;
2551
    }
2552
// line 716 "src/Parser/TemplateParser.y"
2553
    public function yy_r84(){
2554
    $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
2555
    }
2556
// line 721 "src/Parser/TemplateParser.y"
2557
    public function yy_r85(){
2558
    $this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor;
2559
    }
2560
// line 742 "src/Parser/TemplateParser.y"
2561
    public function yy_r90(){
2562
    $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor;
2563
    }
2564
// line 746 "src/Parser/TemplateParser.y"
2565
    public function yy_r91(){
2566
    $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.';
2567
    }
2568
// line 750 "src/Parser/TemplateParser.y"
2569
    public function yy_r92(){
2570
    $this->_retvalue = '.'.$this->yystack[$this->yyidx + 0]->minor;
2571
    }
2572
// line 755 "src/Parser/TemplateParser.y"
2573
    public function yy_r93(){
2574
    if (defined($this->yystack[$this->yyidx + 0]->minor)) {
2575
        if ($this->security) {
2576
             $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler);
2577
        }
2578
        $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
2579
    } else {
2580
        $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\'';
2581
    }
2582
    }
2583
// line 772 "src/Parser/TemplateParser.y"
2584
    public function yy_r95(){
2585
    $this->_retvalue = '('. $this->yystack[$this->yyidx + -1]->minor .')';
2586
    }
2587
// line 776 "src/Parser/TemplateParser.y"
2588
    public function yy_r96(){
2589
      $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
2590
    }
2591
// line 794 "src/Parser/TemplateParser.y"
2592
    public function yy_r100(){
2593
    if ($this->security && $this->security->static_classes !== array()) {
2594
        $this->compiler->trigger_template_error('dynamic static class not allowed by security setting');
2595
    }
2596
    $prefixVar = $this->compiler->getNewPrefixVariable();
2597
    if ($this->yystack[$this->yyidx + -2]->minor['var'] === '\'smarty\'') {
2598
        $this->compiler->appendPrefixCode("<?php {$prefixVar} = ". (new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,$this->yystack[$this->yyidx + -2]->minor['smarty_internal_index']).';?>');
2599
     } else {
2600
        $this->compiler->triggerTagNoCache($this->yystack[$this->yyidx + -2]->minor['var']);
2601
        $this->compiler->appendPrefixCode("<?php  {$prefixVar} = \$_smarty_tpl->getValue(" . $this->yystack[$this->yyidx + -2]->minor['var'] . ')'.$this->yystack[$this->yyidx + -2]->minor['smarty_internal_index'].';?>');
2602
    }
2603
    $this->_retvalue = $prefixVar .'::'.$this->yystack[$this->yyidx + 0]->minor[0].$this->yystack[$this->yyidx + 0]->minor[1];
2604
    }
2605
// line 809 "src/Parser/TemplateParser.y"
2606
    public function yy_r101(){
2607
    $prefixVar = $this->compiler->getNewPrefixVariable();
2608
    $tmp = $this->compiler->appendCode('<?php ob_start();?>', (string) $this->yystack[$this->yyidx + 0]->minor);
2609
    $this->compiler->appendPrefixCode($this->compiler->appendCode($tmp, "<?php {$prefixVar} = ob_get_clean();?>"));
2610
    $this->_retvalue = $prefixVar;
2611
    }
2612
// line 816 "src/Parser/TemplateParser.y"
2613
    public function yy_r102(){
2614
    $this->_retvalue = $this->compiler->compileModifier($this->yystack[$this->yyidx + 0]->minor, $this->yystack[$this->yyidx + -1]->minor);
2615
    }
2616
// line 829 "src/Parser/TemplateParser.y"
2617
    public function yy_r105(){
2618
    if (!in_array(strtolower($this->yystack[$this->yyidx + -2]->minor), array('self', 'parent')) && (!$this->security || $this->security->isTrustedStaticClassAccess($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, $this->compiler))) {
2619
        if (isset($this->smarty->registered_classes[$this->yystack[$this->yyidx + -2]->minor])) {
2620
            $this->_retvalue = $this->smarty->registered_classes[$this->yystack[$this->yyidx + -2]->minor].'::'.$this->yystack[$this->yyidx + 0]->minor[0].$this->yystack[$this->yyidx + 0]->minor[1];
2621
        } else {
2622
            $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor[0].$this->yystack[$this->yyidx + 0]->minor[1];
2623
        } 
2624
    } else {
2625
        $this->compiler->trigger_template_error ('static class \''.$this->yystack[$this->yyidx + -2]->minor.'\' is undefined or not allowed by security setting');
2626
    }
2627
    }
2628
// line 848 "src/Parser/TemplateParser.y"
2629
    public function yy_r107(){
2630
    $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
2631
        }
2632
// line 856 "src/Parser/TemplateParser.y"
2633
    public function yy_r108(){
2634
    $this->_retvalue = array_merge($this->yystack[$this->yyidx + -2]->minor,array($this->yystack[$this->yyidx + 0]->minor));
2635
    }
2636
// line 883 "src/Parser/TemplateParser.y"
2637
    public function yy_r113(){
2638
   $this->compiler->triggerTagNoCache(substr($this->yystack[$this->yyidx + 0]->minor,1));
2639
   $this->_retvalue = array('$_smarty_tpl->hasVariable(\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\')','$_smarty_tpl->getValue(\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\')');
2640
    }
2641
// line 887 "src/Parser/TemplateParser.y"
2642
    public function yy_r114(){
2643
    if ($this->yystack[$this->yyidx + 0]->minor['var'] === '\'smarty\'') {
2644
        $smarty_var = (new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']);
2645
        $this->_retvalue = array('true', $smarty_var);
2646
    } else {
2647
        // used for array reset,next,prev,end,current 
2648
        $this->last_variable = $this->yystack[$this->yyidx + 0]->minor['var'];
2649
        $this->last_index = $this->yystack[$this->yyidx + 0]->minor['smarty_internal_index'];
2650
        $this->compiler->triggerTagNoCache($this->yystack[$this->yyidx + 0]->minor['var']);
2651
        $this->_retvalue = array('true', '$_smarty_tpl->getValue(' . $this->yystack[$this->yyidx + 0]->minor['var'] . ')'.$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']);
2652
    }
2653
    }
2654
// line 901 "src/Parser/TemplateParser.y"
2655
    public function yy_r115(){
2656
    $this->_retvalue = array('true', '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -2]->minor .')->'.$this->yystack[$this->yyidx + 0]->minor);
2657
    }
2658
// line 906 "src/Parser/TemplateParser.y"
2659
    public function yy_r116(){
2660
    $this->_retvalue = array('true', $this->yystack[$this->yyidx + 0]->minor);
2661
    }
2662
// line 911 "src/Parser/TemplateParser.y"
2663
    public function yy_r117(){
2664
    $this->_retvalue = $this->compiler->compileConfigVariable('\'' . $this->yystack[$this->yyidx + -1]->minor . '\'');
2665
    }
2666
// line 915 "src/Parser/TemplateParser.y"
2667
    public function yy_r118(){
2668
    $this->_retvalue = '(is_array($tmp = ' . $this->compiler->compileConfigVariable('\'' . $this->yystack[$this->yyidx + -2]->minor . '\'') . ') ? $tmp'.$this->yystack[$this->yyidx + 0]->minor.' :null)';
2669
    }
2670
// line 919 "src/Parser/TemplateParser.y"
2671
    public function yy_r119(){
2672
    $this->_retvalue = $this->compiler->compileConfigVariable($this->yystack[$this->yyidx + -1]->minor);
2673
    }
2674
// line 923 "src/Parser/TemplateParser.y"
2675
    public function yy_r120(){
2676
    $this->_retvalue = '(is_array($tmp = ' . $this->compiler->compileConfigVariable($this->yystack[$this->yyidx + -2]->minor) . ') ? $tmp'.$this->yystack[$this->yyidx + 0]->minor.' : null)';
2677
    }
2678
// line 927 "src/Parser/TemplateParser.y"
2679
    public function yy_r121(){
2680
    $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor[1];
2681
    }
2682
// line 935 "src/Parser/TemplateParser.y"
2683
    public function yy_r123(){
2684
    $this->_retvalue = array('var'=>'\''.substr($this->yystack[$this->yyidx + -1]->minor,1).'\'', 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor);
2685
    }
2686
// line 938 "src/Parser/TemplateParser.y"
2687
    public function yy_r124(){
2688
    $this->_retvalue = array('var'=>$this->yystack[$this->yyidx + -1]->minor, 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor);
2689
    }
2690
// line 951 "src/Parser/TemplateParser.y"
2691
    public function yy_r126(){
2692
    return;
2693
    }
2694
// line 957 "src/Parser/TemplateParser.y"
2695
    public function yy_r127(){
2696
    $this->compiler->triggerTagNoCache(substr($this->yystack[$this->yyidx + 0]->minor,1));
2697
    $this->_retvalue = '[$_smarty_tpl->getValue(\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\')]';
2698
    }
2699
// line 961 "src/Parser/TemplateParser.y"
2700
    public function yy_r128(){
2701
    $this->compiler->triggerTagNoCache($this->yystack[$this->yyidx + 0]->minor);
2702
    $this->_retvalue = '[$_smarty_tpl->getValue(' . $this->yystack[$this->yyidx + 0]->minor . ')]';
2703
    }
2704
// line 966 "src/Parser/TemplateParser.y"
2705
    public function yy_r129(){
2706
    $this->compiler->triggerTagNoCache($this->yystack[$this->yyidx + -2]->minor);
2707
    $this->_retvalue = '[$_smarty_tpl->getValue(' . $this->yystack[$this->yyidx + -2]->minor . ')->'.$this->yystack[$this->yyidx + 0]->minor.']';
2708
    }
2709
// line 971 "src/Parser/TemplateParser.y"
2710
    public function yy_r130(){
2711
    $this->_retvalue = '[\''. $this->yystack[$this->yyidx + 0]->minor .'\']';
2712
    }
2713
// line 975 "src/Parser/TemplateParser.y"
2714
    public function yy_r131(){
2715
    $this->_retvalue = '['. $this->yystack[$this->yyidx + 0]->minor .']';
2716
    }
2717
// line 980 "src/Parser/TemplateParser.y"
2718
    public function yy_r132(){
2719
    $this->_retvalue = '['. $this->yystack[$this->yyidx + -1]->minor .']';
2720
    }
2721
// line 985 "src/Parser/TemplateParser.y"
2722
    public function yy_r133(){
2723
    $this->_retvalue = '['.(new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,'[\'section\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\'][\'index\']').']';
0 ignored issues
show
Bug introduced by
'['section']['' . $this-...->minor . '']['index']' of type string is incompatible with the type array expected by parameter $parameter of Smarty\Compile\SpecialVariableCompiler::compile(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

2723
    $this->_retvalue = '['.(new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,/** @scrutinizer ignore-type */ '[\'section\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\'][\'index\']').']';
Loading history...
2724
    }
2725
// line 989 "src/Parser/TemplateParser.y"
2726
    public function yy_r134(){
2727
    $this->_retvalue = '['.(new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,'[\'section\'][\''.$this->yystack[$this->yyidx + -3]->minor.'\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\']').']';
0 ignored issues
show
Bug introduced by
'['section']['' . $this-...idx + -1]->minor . '']' of type string is incompatible with the type array expected by parameter $parameter of Smarty\Compile\SpecialVariableCompiler::compile(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

2727
    $this->_retvalue = '['.(new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,/** @scrutinizer ignore-type */ '[\'section\'][\''.$this->yystack[$this->yyidx + -3]->minor.'\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\']').']';
Loading history...
2728
    }
2729
// line 992 "src/Parser/TemplateParser.y"
2730
    public function yy_r135(){
2731
    $this->_retvalue = '['.$this->yystack[$this->yyidx + -1]->minor.']';
2732
    }
2733
// line 998 "src/Parser/TemplateParser.y"
2734
    public function yy_r137(){
2735
    $this->compiler->triggerTagNoCache(substr($this->yystack[$this->yyidx + -1]->minor,1));
2736
    $this->_retvalue = '[$_smarty_tpl->getValue(\''.substr($this->yystack[$this->yyidx + -1]->minor,1).'\')]';
2737
    }
2738
// line 1015 "src/Parser/TemplateParser.y"
2739
    public function yy_r141(){
2740
    $this->_retvalue = '[]';
2741
    }
2742
// line 1025 "src/Parser/TemplateParser.y"
2743
    public function yy_r142(){
2744
    $this->_retvalue = '\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\'';
2745
    }
2746
// line 1029 "src/Parser/TemplateParser.y"
2747
    public function yy_r143(){
2748
    $this->_retvalue = '\'\'';
2749
    }
2750
// line 1034 "src/Parser/TemplateParser.y"
2751
    public function yy_r144(){
2752
    $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor;
2753
    }
2754
// line 1042 "src/Parser/TemplateParser.y"
2755
    public function yy_r146(){
2756
    $var = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' $');
2757
    $this->compiler->triggerTagNoCache($var);
2758
    $this->_retvalue = '$_smarty_tpl->getValue(\''.$var.'\')';
2759
    }
2760
// line 1049 "src/Parser/TemplateParser.y"
2761
    public function yy_r147(){
2762
    $this->_retvalue = '('.$this->yystack[$this->yyidx + -1]->minor.')';
2763
    }
2764
// line 1056 "src/Parser/TemplateParser.y"
2765
    public function yy_r148(){
2766
    if ($this->yystack[$this->yyidx + -1]->minor['var'] === '\'smarty\'') {
2767
        $this->_retvalue = (new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index']).$this->yystack[$this->yyidx + 0]->minor;
2768
    } else {
2769
        $this->compiler->triggerTagNoCache($this->yystack[$this->yyidx + -1]->minor['var']);
2770
        $this->_retvalue = '$_smarty_tpl->getValue(' . $this->yystack[$this->yyidx + -1]->minor['var'] . ')'.$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index'].$this->yystack[$this->yyidx + 0]->minor;
2771
    }
2772
    }
2773
// line 1066 "src/Parser/TemplateParser.y"
2774
    public function yy_r149(){
2775
    $this->_retvalue  = $this->yystack[$this->yyidx + 0]->minor;
2776
    }
2777
// line 1071 "src/Parser/TemplateParser.y"
2778
    public function yy_r150(){
2779
    $this->_retvalue  = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
2780
    }
2781
// line 1076 "src/Parser/TemplateParser.y"
2782
    public function yy_r151(){
2783
    if ($this->security && substr($this->yystack[$this->yyidx + -1]->minor,0,1) === '_') {
2784
        $this->compiler->trigger_template_error (self::ERR1);
2785
    }
2786
    $this->_retvalue = '->'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
2787
    }
2788
// line 1083 "src/Parser/TemplateParser.y"
2789
    public function yy_r152(){
2790
    if ($this->security) {
2791
        $this->compiler->trigger_template_error (self::ERR2);
2792
    }
2793
    $this->compiler->triggerTagNoCache($this->yystack[$this->yyidx + -1]->minor);
2794
    $this->_retvalue = '->{$_smarty_tpl->getValue(' . $this->yystack[$this->yyidx + -1]->minor . ')'.$this->yystack[$this->yyidx + 0]->minor.'}';
2795
    }
2796
// line 1091 "src/Parser/TemplateParser.y"
2797
    public function yy_r153(){
2798
    if ($this->security) {
2799
        $this->compiler->trigger_template_error (self::ERR2);
2800
    }
2801
    $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}';
2802
    }
2803
// line 1098 "src/Parser/TemplateParser.y"
2804
    public function yy_r154(){
2805
    if ($this->security) {
2806
        $this->compiler->trigger_template_error (self::ERR2);
2807
    }
2808
    $this->_retvalue = '->{\''.$this->yystack[$this->yyidx + -4]->minor.'\'.'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}';
2809
    }
2810
// line 1106 "src/Parser/TemplateParser.y"
2811
    public function yy_r155(){
2812
    $this->_retvalue = '->'.$this->yystack[$this->yyidx + 0]->minor;
2813
    }
2814
// line 1114 "src/Parser/TemplateParser.y"
2815
    public function yy_r156(){
2816
2817
    if ($this->yystack[$this->yyidx + -3]->minor == 'isset') {
2818
        $this->_retvalue = '(true';
2819
        if (count($this->yystack[$this->yyidx + -1]->minor) == 0) {
2820
            throw new CompilerException("Invalid number of arguments for isset. isset expects at least one parameter.");
2821
        }
2822
        foreach ($this->yystack[$this->yyidx + -1]->minor as $value) {
2823
            if (is_array($value)) {
2824
                $this->_retvalue .= ' && (' . $value[0] . ' && null !== (' . $value[1] . ' ?? null))';
2825
            } else {
2826
                $this->_retvalue .= ' && (' . $value . ' !== null)';
2827
            }
2828
        }
2829
        $this->_retvalue .= ')';
2830
    } elseif ($this->yystack[$this->yyidx + -3]->minor == 'empty') {
2831
        if (count($this->yystack[$this->yyidx + -1]->minor) != 1) {
2832
            throw new CompilerException("Invalid number of arguments for empty. empty expects at exactly one parameter.");
2833
        }
2834
        if (is_array($this->yystack[$this->yyidx + -1]->minor[0])) {
2835
            $this->_retvalue .= '( !' . $this->yystack[$this->yyidx + -1]->minor[0][0] . ' || empty(' . $this->yystack[$this->yyidx + -1]->minor[0][1] . '))';
2836
        } else {
2837
            $this->_retvalue = 'false == ' . $this->yystack[$this->yyidx + -1]->minor[0];
2838
        }
2839
    } else {
2840
        $p = array();
2841
        foreach ($this->yystack[$this->yyidx + -1]->minor as $value) {
2842
            if (is_array($value)) {
2843
                $p[] = $value[1];
2844
            } else {
2845
                $p[] = $value;
2846
            }
2847
        }
2848
        $this->_retvalue = $this->compiler->compileModifierInExpression($this->yystack[$this->yyidx + -3]->minor, $p);
2849
    }
2850
    }
2851
// line 1155 "src/Parser/TemplateParser.y"
2852
    public function yy_r157(){
2853
    if ($this->security && substr($this->yystack[$this->yyidx + -3]->minor,0,1) === '_') {
2854
        $this->compiler->trigger_template_error (self::ERR1);
2855
    }
2856
    $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . '('. implode(',',$this->yystack[$this->yyidx + -1]->minor) .')';
2857
    }
2858
// line 1162 "src/Parser/TemplateParser.y"
2859
    public function yy_r158(){
2860
    if ($this->security) {
2861
        $this->compiler->trigger_template_error (self::ERR2);
2862
    }
2863
    $prefixVar = $this->compiler->getNewPrefixVariable();
2864
    $this->compiler->triggerTagNoCache(substr($this->yystack[$this->yyidx + -3]->minor,1));
2865
    $this->compiler->appendPrefixCode("<?php {$prefixVar} = \$_smarty_tpl->getValue('".substr($this->yystack[$this->yyidx + -3]->minor,1).'\')'.';?>');
2866
    $this->_retvalue = $prefixVar .'('. implode(',',$this->yystack[$this->yyidx + -1]->minor) .')';
2867
    }
2868
// line 1191 "src/Parser/TemplateParser.y"
2869
    public function yy_r162(){
2870
    $this->_retvalue = array_merge($this->yystack[$this->yyidx + -2]->minor,array(array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor)));
2871
    }
2872
// line 1195 "src/Parser/TemplateParser.y"
2873
    public function yy_r163(){
2874
    $this->_retvalue = array(array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor));
2875
    }
2876
// line 1203 "src/Parser/TemplateParser.y"
2877
    public function yy_r165(){
2878
    $this->_retvalue =  array($this->yystack[$this->yyidx + 0]->minor);
2879
    }
2880
// line 1211 "src/Parser/TemplateParser.y"
2881
    public function yy_r166(){
2882
    $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor);
2883
    }
2884
// line 1224 "src/Parser/TemplateParser.y"
2885
    public function yy_r169(){
2886
    $this->_retvalue = array(trim($this->yystack[$this->yyidx + -1]->minor).$this->yystack[$this->yyidx + 0]->minor);
2887
    }
2888
// line 1233 "src/Parser/TemplateParser.y"
2889
    public function yy_r171(){
2890
    $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, '', 'method');
2891
    }
2892
// line 1238 "src/Parser/TemplateParser.y"
2893
    public function yy_r172(){
2894
    $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor, 'method');
2895
    }
2896
// line 1243 "src/Parser/TemplateParser.y"
2897
    public function yy_r173(){
2898
    $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, '');
2899
    }
2900
// line 1248 "src/Parser/TemplateParser.y"
2901
    public function yy_r174(){
2902
    $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor, 'property');
2903
    }
2904
// line 1253 "src/Parser/TemplateParser.y"
2905
    public function yy_r175(){
2906
    $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor, 'property');
2907
    }
2908
// line 1259 "src/Parser/TemplateParser.y"
2909
    public function yy_r176(){
2910
    $this->_retvalue = ' '. trim($this->yystack[$this->yyidx + 0]->minor) . ' ';
2911
    }
2912
// line 1263 "src/Parser/TemplateParser.y"
2913
    public function yy_r177(){
2914
    static $lops = array(
2915
        'eq' => ' == ',
2916
        'ne' => ' != ',
2917
        'neq' => ' != ',
2918
        'gt' => ' > ',
2919
        'ge' => ' >= ',
2920
        'gte' => ' >= ',
2921
        'lt' =>  ' < ',
2922
        'le' =>  ' <= ',
2923
        'lte' => ' <= ',
2924
        'mod' =>  ' % ',
2925
        'and' => ' && ',
2926
        'or' => ' || ',
2927
        'xor' => ' xor ',
2928
         );
2929
    $op = strtolower(preg_replace('/\s*/', '', $this->yystack[$this->yyidx + 0]->minor));
2930
    $this->_retvalue = $lops[$op];
2931
    }
2932
// line 1282 "src/Parser/TemplateParser.y"
2933
    public function yy_r178(){
2934
     static $tlops = array(
2935
         'isdivby' => array('op' => ' % ', 'pre' => '!('),
2936
         'isnotdivby' => array('op' => ' % ', 'pre' => '('),
2937
         'isevenby' => array('op' => ' / ', 'pre' => '!(1 & '),
2938
         'isnotevenby' => array('op' => ' / ', 'pre' => '(1 & '),
2939
         'isoddby' => array('op' => ' / ', 'pre' => '(1 & '),
2940
         'isnotoddby' => array('op' => ' / ', 'pre' => '!(1 & '),
2941
         );
2942
     $op = strtolower(preg_replace('/\s*/', '', $this->yystack[$this->yyidx + 0]->minor));
2943
     $this->_retvalue = $tlops[$op];
2944
     }
2945
// line 1295 "src/Parser/TemplateParser.y"
2946
    public function yy_r179(){
2947
        static $scond = array (
2948
            'iseven' => '!(1 & ',
2949
            'isnoteven' => '(1 & ',
2950
            'isodd' => '(1 & ',
2951
            'isnotodd' => '!(1 & ',
2952
        );
2953
   $op = strtolower(str_replace(' ', '', $this->yystack[$this->yyidx + 0]->minor));
2954
   $this->_retvalue = $scond[$op];
2955
    }
2956
// line 1309 "src/Parser/TemplateParser.y"
2957
    public function yy_r180(){
2958
    $this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')';
2959
    }
2960
// line 1320 "src/Parser/TemplateParser.y"
2961
    public function yy_r183(){
2962
    $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor;
2963
    }
2964
// line 1328 "src/Parser/TemplateParser.y"
2965
    public function yy_r185(){
2966
    $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor;
2967
    }
2968
// line 1332 "src/Parser/TemplateParser.y"
2969
    public function yy_r186(){ 
2970
    $this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor;
2971
    }
2972
// line 1348 "src/Parser/TemplateParser.y"
2973
    public function yy_r189(){
2974
    $this->compiler->leaveDoubleQuote();
2975
    $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor->to_smarty_php($this);
2976
    }
2977
// line 1354 "src/Parser/TemplateParser.y"
2978
    public function yy_r190(){
2979
    $this->yystack[$this->yyidx + -1]->minor->append_subtree($this, $this->yystack[$this->yyidx + 0]->minor);
2980
    $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
2981
    }
2982
// line 1359 "src/Parser/TemplateParser.y"
2983
    public function yy_r191(){
2984
    $this->_retvalue = new Dq($this, $this->yystack[$this->yyidx + 0]->minor);
2985
    }
2986
// line 1363 "src/Parser/TemplateParser.y"
2987
    public function yy_r192(){
2988
    $this->_retvalue = new Code('(string)'.$this->yystack[$this->yyidx + -1]->minor);
2989
    }
2990
// line 1367 "src/Parser/TemplateParser.y"
2991
    public function yy_r193(){
2992
    $this->_retvalue = new Code('(string)('.$this->yystack[$this->yyidx + -1]->minor.')');
2993
    }
2994
// line 1371 "src/Parser/TemplateParser.y"
2995
    public function yy_r194(){
2996
    $this->_retvalue = new Code('(string)$_smarty_tpl->getValue(\''. substr($this->yystack[$this->yyidx + 0]->minor,1) .'\')');
2997
    }
2998
// line 1383 "src/Parser/TemplateParser.y"
2999
    public function yy_r197(){
3000
    $this->_retvalue = new Tag($this, $this->yystack[$this->yyidx + 0]->minor);
3001
    }
3002
// line 1387 "src/Parser/TemplateParser.y"
3003
    public function yy_r198(){
3004
    $this->_retvalue = new DqContent($this->yystack[$this->yyidx + 0]->minor);
3005
    }
3006
3007
    private $_retvalue;
3008
3009
    public function yy_reduce($yyruleno)
3010
    {
3011
        if ($this->yyTraceFILE && $yyruleno >= 0
3012
              && $yyruleno < count(self::$yyRuleName)) {
3013
            fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n",
3014
                $this->yyTracePrompt, $yyruleno,
3015
                self::$yyRuleName[$yyruleno]);
3016
        }
3017
3018
        $this->_retvalue = $yy_lefthand_side = null;
3019
        if (isset(self::$yyReduceMap[$yyruleno])) {
3020
            // call the action
3021
            $this->_retvalue = null;
3022
            $this->{'yy_r' . self::$yyReduceMap[$yyruleno]}();
3023
            $yy_lefthand_side = $this->_retvalue;
3024
        }
3025
        $yygoto = self::$yyRuleInfo[$yyruleno][0];
3026
        $yysize = self::$yyRuleInfo[$yyruleno][1];
3027
        $this->yyidx -= $yysize;
3028
        for ($i = $yysize; $i; $i--) {
3029
            // pop all of the right-hand side parameters
3030
            array_pop($this->yystack);
3031
        }
3032
        $yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto);
3033
        if ($yyact < self::YYNSTATE) {
3034
            if (!$this->yyTraceFILE && $yysize) {
3035
                $this->yyidx++;
3036
                $x = (object) ['stateno' => null, 'major' => null, 'minor' => null];
3037
                $x->stateno = $yyact;
3038
                $x->major = $yygoto;
3039
                $x->minor = $yy_lefthand_side;
3040
                $this->yystack[$this->yyidx] = $x;
3041
            } else {
3042
                $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
3043
            }
3044
        } elseif ($yyact === self::YYNSTATE + self::YYNRULE + 1) {
3045
            $this->yy_accept();
3046
        }
3047
    }
3048
3049
    public function yy_parse_failed()
3050
    {
3051
        if ($this->yyTraceFILE) {
3052
            fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt);
3053
        } while ($this->yyidx >= 0) {
3054
            $this->yy_pop_parser_stack();
3055
        }
3056
    }
3057
3058
    public function yy_syntax_error($yymajor, $TOKEN)
3059
    {
3060
// line 225 "src/Parser/TemplateParser.y"
3061
3062
    $this->internalError = true;
3063
    $this->yymajor = $yymajor;
3064
    $this->compiler->trigger_template_error();
3065
    }
3066
3067
    public function yy_accept()
3068
    {
3069
        if ($this->yyTraceFILE) {
3070
            fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt);
3071
        } while ($this->yyidx >= 0) {
3072
            $this->yy_pop_parser_stack();
3073
        }
3074
// line 218 "src/Parser/TemplateParser.y"
3075
3076
    $this->successful = !$this->internalError;
3077
    $this->internalError = false;
3078
    $this->retvalue = $this->_retvalue;
3079
    }
3080
3081
    public function doParse($yymajor, $yytokenvalue)
3082
    {
3083
        $yyerrorhit = 0;   /* True if yymajor has invoked an error */
3084
3085
        if ($this->yyidx === null || $this->yyidx < 0) {
3086
            $this->yyidx = 0;
3087
            $this->yyerrcnt = -1;
3088
            $x = (object) ['stateno' => null, 'major' => null, 'minor' => null];
3089
            $x->stateno = 0;
3090
            $x->major = 0;
3091
            $this->yystack = array();
3092
            $this->yystack[] = $x;
3093
        }
3094
        $yyendofinput = ($yymajor==0);
3095
3096
        if ($this->yyTraceFILE) {
3097
            fprintf($this->yyTraceFILE, "%sInput %s\n",
3098
                $this->yyTracePrompt, $this->yyTokenName[$yymajor]);
3099
        }
3100
3101
        do {
3102
            $yyact = $this->yy_find_shift_action($yymajor);
3103
            if ($yymajor < self::YYERRORSYMBOL &&
3104
                  !$this->yy_is_expected_token($yymajor)) {
3105
                // force a syntax error
3106
                $yyact = self::YY_ERROR_ACTION;
3107
            }
3108
            if ($yyact < self::YYNSTATE) {
3109
                $this->yy_shift($yyact, $yymajor, $yytokenvalue);
3110
                $this->yyerrcnt--;
3111
                if ($yyendofinput && $this->yyidx >= 0) {
3112
                    $yymajor = 0;
3113
                } else {
3114
                    $yymajor = self::YYNOCODE;
3115
                }
3116
            } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
3117
                $this->yy_reduce($yyact - self::YYNSTATE);
3118
            } elseif ($yyact === self::YY_ERROR_ACTION) {
3119
                if ($this->yyTraceFILE) {
3120
                    fprintf($this->yyTraceFILE, "%sSyntax Error!\n",
3121
                        $this->yyTracePrompt);
3122
                }
3123
                if (self::YYERRORSYMBOL) {
3124
                    if ($this->yyerrcnt < 0) {
3125
                        $this->yy_syntax_error($yymajor, $yytokenvalue);
3126
                    }
3127
                    $yymx = $this->yystack[$this->yyidx]->major;
3128
                    if ($yymx === self::YYERRORSYMBOL || $yyerrorhit) {
3129
                        if ($this->yyTraceFILE) {
3130
                            fprintf($this->yyTraceFILE, "%sDiscard input token %s\n",
3131
                                $this->yyTracePrompt, $this->yyTokenName[$yymajor]);
3132
                        }
3133
                        $this->yy_destructor($yymajor, $yytokenvalue);
3134
                        $yymajor = self::YYNOCODE;
3135
                    } else {
3136
                        while ($this->yyidx >= 0 &&
3137
                                 $yymx !== self::YYERRORSYMBOL &&
3138
        ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE
3139
                              ){
3140
                            $this->yy_pop_parser_stack();
3141
                        }
3142
                        if ($this->yyidx < 0 || $yymajor==0) {
3143
                            $this->yy_destructor($yymajor, $yytokenvalue);
3144
                            $this->yy_parse_failed();
3145
                            $yymajor = self::YYNOCODE;
3146
                        } elseif ($yymx !== self::YYERRORSYMBOL) {
3147
                            $u2 = 0;
3148
                            $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
3149
                        }
3150
                    }
3151
                    $this->yyerrcnt = 3;
3152
                    $yyerrorhit = 1;
3153
                } else {
3154
                    if ($this->yyerrcnt <= 0) {
3155
                        $this->yy_syntax_error($yymajor, $yytokenvalue);
3156
                    }
3157
                    $this->yyerrcnt = 3;
3158
                    $this->yy_destructor($yymajor, $yytokenvalue);
3159
                    if ($yyendofinput) {
3160
                        $this->yy_parse_failed();
3161
                    }
3162
                    $yymajor = self::YYNOCODE;
3163
                }
3164
            } else {
3165
                $this->yy_accept();
3166
                $yymajor = self::YYNOCODE;
3167
            }
3168
        } while ($yymajor !== self::YYNOCODE && $this->yyidx >= 0);
3169
    }
3170
}
3171
3172