1<?php
2
3class TP_yyStackEntry
4{
5    public $stateno;       /* The state-number */
6    public $major;         /* The major token value.  This is the code
7                            * number for the token at this stack level
8                            */
9    public $minor;          /* The user-supplied minor token value.  This
10                            * is the value of the token
11                            */
12}
13
14// line 11 "../smarty/lexer/smarty_internal_templateparser.y"
15
16/**
17 * Smarty Template Parser Class
18 *
19 * This is the template parser.
20 * It is generated from the smarty_internal_templateparser.y file
21 *
22 * @author Uwe Tews <uwe.tews@googlemail.com>
23 */
24class Smarty_Internal_Templateparser
25{
26    // line 23 "../smarty/lexer/smarty_internal_templateparser.y"
27    const ERR1                      = 'Security error: Call to private object member not allowed';
28    const ERR2                      = 'Security error: Call to dynamic object member not allowed';
29    const ERR3                      = 'PHP in template not allowed. Use SmartyBC to enable it';
30    const TP_VERT                   = 1;
31    const TP_COLON                  = 2;
32    const TP_UNIMATH                = 3;
33    const TP_PHP                    = 4;
34    const TP_TEXT                   = 5;
35    const TP_STRIPON                = 6;
36    const TP_STRIPOFF               = 7;
37    const TP_LITERALSTART           = 8;
38    const TP_LITERALEND             = 9;
39    const TP_LITERAL                = 10;
40    const TP_SIMPELOUTPUT           = 11;
41    const TP_SIMPLETAG              = 12;
42    const TP_SMARTYBLOCKCHILDPARENT = 13;
43    const TP_LDEL                   = 14;
44    const TP_RDEL                   = 15;
45    const TP_DOLLARID               = 16;
46    const TP_EQUAL                  = 17;
47    const TP_ID                     = 18;
48    const TP_PTR                    = 19;
49    const TP_LDELMAKENOCACHE        = 20;
50    const TP_LDELIF                 = 21;
51    const TP_LDELFOR                = 22;
52    const TP_SEMICOLON              = 23;
53    const TP_INCDEC                 = 24;
54    const TP_TO                     = 25;
55    const TP_STEP                   = 26;
56    const TP_LDELFOREACH            = 27;
57    const TP_SPACE                  = 28;
58    const TP_AS                     = 29;
59    const TP_APTR                   = 30;
60    const TP_LDELSETFILTER          = 31;
61    const TP_CLOSETAG               = 32;
62    const TP_LDELSLASH              = 33;
63    const TP_ATTR                   = 34;
64    const TP_INTEGER                = 35;
65    const TP_COMMA                  = 36;
66    const TP_OPENP                  = 37;
67    const TP_CLOSEP                 = 38;
68    const TP_MATH                   = 39;
69    const TP_ISIN                   = 40;
70    const TP_QMARK                  = 41;
71    const TP_NOT                    = 42;
72    const TP_TYPECAST               = 43;
73    const TP_HEX                    = 44;
74    const TP_DOT                    = 45;
75    const TP_INSTANCEOF             = 46;
76    const TP_SINGLEQUOTESTRING      = 47;
77    const TP_DOUBLECOLON            = 48;
78    const TP_NAMESPACE              = 49;
79    const TP_AT                     = 50;
80    const TP_HATCH                  = 51;
81    const TP_OPENB                  = 52;
82    const TP_CLOSEB                 = 53;
83    const TP_DOLLAR                 = 54;
84    const TP_LOGOP                  = 55;
85    const TP_SLOGOP                 = 56;
86    const TP_TLOGOP                 = 57;
87    const TP_SINGLECOND             = 58;
88    const TP_QUOTE                  = 59;
89    const TP_BACKTICK               = 60;
90    const YY_NO_ACTION              = 511;
91    const YY_ACCEPT_ACTION          = 510;
92    const YY_ERROR_ACTION           = 509;
93    const YY_SZ_ACTTAB              = 2076;
94    const YY_SHIFT_USE_DFLT         = -23;
95    const YY_SHIFT_MAX              = 227;
96    const YY_REDUCE_USE_DFLT        = -68;
97    const YY_REDUCE_MAX             = 176;
98    const YYNOCODE                  = 108;
99    const YYSTACKDEPTH              = 500;
100    const YYNSTATE                  = 323;
101    const YYNRULE                   = 186;
102    const YYERRORSYMBOL             = 61;
103    const YYERRSYMDT                = 'yy0';
104    const YYFALLBACK                = 0;
105
106    public static $yy_action        = array(
107        42, 266, 267, 379, 115, 202, 27, 204, 260, 235,
108        237, 1, 17, 125, 94, 182, 379, 215, 10, 79,
109        317, 168, 379, 12, 107, 425, 308, 318, 224, 298,
110        218, 129, 189, 292, 21, 203, 425, 27, 11, 39,
111        38, 299, 219, 17, 213, 385, 191, 245, 77, 3,
112        303, 315, 42, 385, 160, 385, 75, 29, 385, 95,
113        260, 235, 237, 1, 385, 126, 385, 193, 385, 215,
114        10, 79, 80, 290, 145, 226, 107, 148, 172, 150,
115        224, 298, 218, 85, 217, 315, 21, 280, 101, 280,
116        141, 39, 38, 299, 219, 20, 287, 183, 191, 232,
117        77, 3, 42, 315, 16, 176, 316, 172, 75, 275,
118        260, 235, 237, 1, 167, 128, 236, 193, 319, 215,
119        10, 79, 345, 40, 14, 257, 107, 319, 345, 5,
120        224, 298, 218, 89, 217, 315, 30, 292, 172, 203,
121        74, 39, 38, 299, 219, 132, 287, 205, 191, 74,
122        77, 3, 42, 315, 210, 194, 310, 99, 75, 345,
123        260, 235, 237, 1, 425, 126, 87, 179, 319, 215,
124        10, 79, 345, 95, 195, 425, 107, 272, 345, 176,
125        224, 298, 218, 315, 199, 115, 21, 128, 278, 209,
126        74, 39, 38, 299, 219, 94, 287, 226, 191, 129,
127        77, 3, 42, 315, 277, 309, 11, 308, 75, 13,
128        260, 235, 237, 1, 163, 127, 425, 193, 319, 215,
129        10, 79, 77, 254, 19, 315, 107, 425, 137, 34,
130        224, 298, 218, 196, 217, 33, 21, 220, 280, 159,
131        74, 39, 38, 299, 219, 196, 287, 8, 191, 162,
132        77, 3, 42, 315, 294, 222, 196, 438, 75, 378,
133        260, 235, 237, 1, 438, 126, 16, 193, 271, 215,
134        10, 79, 378, 172, 302, 315, 107, 175, 378, 267,
135        224, 298, 218, 27, 178, 252, 21, 164, 296, 17,
136        83, 39, 38, 299, 219, 196, 287, 205, 191, 170,
137        77, 3, 42, 315, 270, 18, 144, 99, 75, 346,
138        260, 235, 237, 1, 142, 126, 280, 177, 84, 215,
139        10, 79, 346, 172, 280, 4, 107, 95, 346, 321,
140        224, 298, 218, 438, 217, 131, 21, 321, 426, 24,
141        438, 39, 38, 299, 219, 196, 287, 205, 191, 426,
142        77, 3, 42, 315, 201, 9, 101, 99, 75, 381,
143        260, 235, 237, 1, 149, 124, 102, 193, 22, 215,
144        10, 79, 381, 315, 99, 231, 107, 311, 381, 425,
145        224, 298, 218, 23, 217, 319, 7, 207, 196, 17,
146        425, 39, 38, 299, 219, 307, 287, 36, 191, 154,
147        77, 3, 42, 315, 161, 296, 227, 74, 75, 280,
148        260, 235, 237, 1, 16, 91, 273, 76, 312, 215,
149        10, 79, 317, 208, 190, 12, 107, 176, 196, 318,
150        224, 298, 218, 135, 217, 321, 21, 196, 35, 95,
151        263, 39, 38, 299, 219, 157, 287, 111, 191, 88,
152        77, 3, 42, 315, 169, 280, 225, 15, 75, 285,
153        260, 235, 237, 1, 155, 126, 226, 184, 101, 215,
154        10, 79, 454, 172, 280, 454, 107, 246, 253, 454,
155        224, 298, 218, 152, 217, 111, 21, 161, 296, 265,
156        6, 39, 38, 299, 219, 269, 287, 203, 191, 119,
157        77, 3, 42, 315, 158, 262, 321, 274, 75, 97,
158        260, 235, 237, 1, 153, 128, 165, 193, 151, 215,
159        10, 79, 317, 43, 280, 12, 107, 320, 280, 318,
160        224, 298, 218, 8, 217, 171, 30, 306, 196, 36,
161        172, 39, 38, 299, 219, 264, 287, 256, 191, 128,
162        77, 288, 78, 315, 510, 90, 166, 296, 75, 41,
163        37, 223, 104, 228, 250, 251, 255, 122, 226, 289,
164        260, 235, 237, 1, 239, 233, 238, 240, 241, 215,
165        10, 79, 229, 305, 77, 304, 107, 315, 281, 300,
166        224, 298, 218, 261, 211, 203, 314, 28, 86, 108,
167        140, 181, 96, 61, 214, 247, 317, 454, 94, 12,
168        454, 297, 322, 318, 454, 29, 259, 192, 249, 248,
169        308, 313, 138, 27, 302, 143, 130, 82, 95, 17,
170        261, 211, 203, 314, 252, 86, 108, 286, 180, 96,
171        50, 136, 139, 100, 152, 94, 454, 81, 297, 322,
172        295, 321, 146, 259, 192, 249, 295, 308, 261, 295,
173        203, 295, 295, 110, 295, 295, 197, 105, 64, 295,
174        295, 295, 295, 94, 295, 295, 297, 322, 295, 295,
175        295, 259, 192, 249, 261, 308, 203, 276, 295, 110,
176        108, 295, 181, 96, 61, 187, 282, 295, 317, 94,
177        295, 12, 297, 322, 295, 318, 295, 259, 192, 249,
178        295, 308, 295, 291, 295, 295, 295, 295, 295, 260,
179        235, 237, 2, 295, 293, 295, 295, 295, 215, 10,
180        79, 295, 295, 295, 295, 107, 291, 206, 295, 224,
181        298, 218, 260, 235, 237, 2, 295, 293, 295, 295,
182        295, 215, 10, 79, 295, 295, 295, 295, 107, 295,
183        295, 295, 224, 298, 218, 295, 295, 295, 26, 261,
184        295, 203, 295, 295, 110, 295, 295, 197, 113, 60,
185        295, 295, 295, 295, 94, 156, 295, 297, 322, 167,
186        284, 26, 259, 192, 249, 280, 308, 295, 40, 14,
187        257, 295, 261, 200, 203, 295, 295, 110, 295, 295,
188        197, 105, 64, 172, 295, 295, 295, 94, 295, 295,
189        297, 322, 295, 295, 295, 259, 192, 249, 295, 308,
190        295, 295, 295, 295, 261, 295, 203, 295, 295, 98,
191        283, 295, 197, 113, 51, 295, 201, 295, 295, 94,
192        295, 295, 297, 322, 295, 295, 295, 259, 192, 249,
193        261, 308, 203, 295, 295, 110, 295, 295, 197, 113,
194        60, 295, 295, 295, 295, 94, 295, 295, 297, 322,
195        295, 295, 295, 259, 192, 249, 295, 308, 261, 295,
196        203, 295, 295, 110, 188, 295, 197, 113, 60, 196,
197        31, 43, 295, 94, 295, 295, 297, 322, 295, 295,
198        295, 259, 192, 249, 295, 308, 261, 295, 203, 295,
199        295, 98, 198, 295, 197, 113, 45, 295, 109, 295,
200        295, 94, 295, 295, 297, 322, 295, 41, 37, 259,
201        192, 249, 261, 308, 203, 295, 295, 110, 295, 295,
202        197, 113, 67, 233, 238, 240, 241, 94, 295, 295,
203        297, 322, 295, 295, 295, 259, 192, 249, 295, 308,
204        261, 295, 203, 295, 295, 110, 295, 295, 197, 113,
205        57, 196, 295, 43, 295, 94, 295, 295, 297, 322,
206        295, 295, 295, 259, 192, 249, 295, 308, 261, 295,
207        203, 295, 295, 110, 295, 295, 197, 113, 46, 295,
208        295, 295, 295, 94, 295, 295, 297, 322, 295, 41,
209        37, 259, 192, 249, 261, 308, 203, 295, 295, 110,
210        295, 295, 197, 113, 66, 233, 238, 240, 241, 94,
211        301, 295, 297, 322, 295, 295, 295, 259, 192, 249,
212        295, 308, 261, 295, 203, 295, 295, 110, 295, 295,
213        197, 113, 72, 196, 295, 43, 295, 94, 295, 295,
214        297, 322, 295, 295, 295, 259, 192, 249, 295, 308,
215        261, 295, 203, 295, 295, 110, 295, 295, 197, 113,
216        53, 295, 295, 295, 295, 94, 295, 295, 297, 322,
217        230, 41, 37, 259, 192, 249, 261, 308, 203, 295,
218        295, 110, 295, 295, 197, 113, 48, 233, 238, 240,
219        241, 94, 295, 295, 297, 322, 295, 295, 295, 259,
220        192, 249, 295, 308, 261, 295, 203, 295, 295, 110,
221        295, 295, 185, 103, 49, 196, 295, 43, 295, 94,
222        295, 295, 297, 322, 295, 295, 295, 259, 192, 249,
223        295, 308, 261, 295, 203, 295, 295, 110, 295, 295,
224        197, 113, 55, 134, 295, 295, 295, 94, 295, 295,
225        297, 322, 295, 41, 37, 259, 192, 249, 261, 308,
226        203, 295, 295, 110, 295, 295, 197, 113, 71, 233,
227        238, 240, 241, 94, 295, 295, 297, 322, 295, 295,
228        295, 259, 192, 249, 295, 308, 261, 295, 203, 295,
229        295, 110, 295, 295, 197, 113, 59, 196, 295, 43,
230        295, 94, 295, 295, 297, 322, 295, 295, 295, 259,
231        192, 249, 295, 308, 261, 295, 203, 295, 295, 110,
232        295, 295, 197, 113, 63, 295, 295, 295, 295, 94,
233        295, 295, 297, 322, 216, 41, 37, 259, 192, 249,
234        261, 308, 203, 295, 295, 110, 295, 295, 197, 113,
235        62, 233, 238, 240, 241, 94, 295, 295, 297, 322,
236        295, 295, 295, 259, 192, 249, 295, 308, 261, 295,
237        203, 295, 295, 110, 295, 295, 197, 92, 69, 196,
238        295, 43, 295, 94, 295, 295, 297, 322, 295, 295,
239        295, 259, 192, 249, 295, 308, 261, 295, 203, 295,
240        295, 110, 295, 295, 197, 113, 52, 295, 295, 295,
241        295, 94, 295, 295, 297, 322, 295, 41, 37, 259,
242        192, 249, 261, 308, 203, 295, 295, 110, 295, 295,
243        197, 113, 65, 233, 238, 240, 241, 94, 295, 295,
244        297, 322, 295, 196, 295, 259, 192, 249, 295, 308,
245        261, 295, 203, 295, 295, 110, 295, 349, 197, 113,
246        58, 221, 295, 295, 295, 94, 295, 295, 297, 322,
247        27, 295, 295, 259, 192, 249, 17, 308, 261, 425,
248        203, 295, 295, 110, 295, 295, 197, 113, 56, 295,
249        425, 295, 295, 94, 295, 295, 297, 322, 295, 295,
250        295, 259, 192, 249, 261, 308, 203, 295, 295, 110,
251        295, 295, 197, 113, 44, 295, 295, 295, 295, 94,
252        295, 295, 297, 322, 295, 295, 295, 259, 192, 249,
253        295, 308, 261, 295, 203, 295, 295, 110, 295, 295,
254        197, 93, 70, 295, 295, 295, 295, 94, 295, 295,
255        297, 322, 295, 295, 295, 259, 192, 249, 295, 308,
256        261, 295, 203, 295, 295, 110, 295, 295, 186, 113,
257        54, 295, 295, 295, 295, 94, 295, 295, 297, 322,
258        295, 295, 295, 259, 192, 249, 261, 308, 203, 295,
259        295, 110, 295, 295, 197, 113, 73, 295, 295, 295,
260        295, 94, 295, 295, 297, 322, 295, 295, 295, 259,
261        192, 249, 295, 308, 261, 295, 203, 295, 295, 110,
262        295, 295, 197, 113, 68, 295, 295, 295, 295, 94,
263        295, 295, 297, 322, 295, 295, 295, 259, 192, 249,
264        295, 308, 261, 295, 203, 295, 295, 110, 295, 295,
265        197, 93, 47, 295, 295, 295, 295, 94, 295, 295,
266        297, 322, 391, 391, 391, 259, 192, 249, 261, 308,
267        203, 295, 295, 110, 295, 295, 197, 113, 51, 295,
268        295, 295, 295, 94, 295, 295, 297, 322, 196, 295,
269        43, 259, 192, 249, 295, 308, 295, 295, 425, 295,
270        391, 391, 295, 295, 295, 261, 295, 203, 295, 425,
271        110, 295, 295, 197, 118, 27, 391, 391, 391, 391,
272        94, 17, 295, 295, 258, 295, 41, 37, 259, 192,
273        249, 261, 308, 203, 295, 196, 110, 43, 295, 197,
274        120, 295, 233, 238, 240, 241, 94, 295, 295, 295,
275        243, 295, 295, 295, 259, 192, 249, 295, 308, 295,
276        32, 295, 27, 212, 295, 295, 295, 295, 17, 295,
277        295, 295, 454, 41, 37, 454, 295, 295, 295, 454,
278        438, 295, 295, 295, 295, 295, 295, 295, 295, 233,
279        238, 240, 241, 295, 295, 261, 295, 203, 295, 295,
280        110, 295, 295, 197, 112, 295, 438, 295, 295, 438,
281        94, 454, 212, 438, 268, 295, 295, 295, 259, 192,
282        249, 454, 308, 212, 454, 295, 295, 34, 454, 438,
283        295, 295, 454, 295, 295, 454, 295, 133, 4, 454,
284        438, 167, 295, 295, 295, 295, 295, 280, 295, 295,
285        40, 14, 257, 295, 295, 438, 295, 295, 438, 261,
286        454, 203, 438, 295, 110, 172, 438, 197, 121, 438,
287        261, 454, 203, 438, 94, 110, 295, 295, 197, 117,
288        295, 295, 259, 192, 249, 94, 308, 295, 295, 295,
289        295, 295, 295, 259, 192, 249, 261, 308, 203, 295,
290        295, 110, 295, 295, 197, 116, 295, 261, 295, 203,
291        295, 94, 110, 295, 295, 197, 114, 295, 295, 259,
292        192, 249, 94, 308, 196, 295, 43, 295, 295, 295,
293        259, 192, 249, 261, 308, 203, 295, 196, 110, 43,
294        295, 197, 123, 295, 295, 295, 106, 295, 94, 295,
295        196, 174, 43, 295, 295, 295, 259, 192, 249, 196,
296        308, 43, 41, 37, 244, 295, 295, 295, 295, 295,
297        295, 295, 295, 234, 295, 41, 37, 295, 233, 238,
298        240, 241, 295, 295, 295, 295, 295, 295, 41, 37,
299        295, 233, 238, 240, 241, 295, 295, 41, 37, 295,
300        295, 295, 295, 295, 233, 238, 240, 241, 25, 196,
301        295, 43, 295, 233, 238, 240, 241, 454, 295, 295,
302        454, 295, 295, 279, 454, 438, 212, 295, 295, 295,
303        295, 295, 295, 295, 295, 454, 295, 295, 454, 295,
304        295, 295, 454, 438, 196, 295, 43, 41, 37, 295,
305        295, 438, 295, 196, 438, 43, 454, 295, 438, 295,
306        295, 295, 295, 233, 238, 240, 241, 173, 295, 438,
307        295, 295, 438, 295, 454, 295, 438, 454, 295, 295,
308        454, 295, 41, 37, 454, 438, 295, 295, 295, 295,
309        295, 41, 37, 295, 295, 295, 242, 295, 233, 238,
310        240, 241, 295, 295, 295, 295, 295, 233, 238, 240,
311        241, 438, 295, 295, 438, 295, 454, 147, 438, 295,
312        295, 167, 295, 295, 295, 295, 295, 280, 295, 295,
313        40, 14, 257, 295, 295, 295, 295, 295, 295, 295,
314        295, 295, 295, 295, 295, 172,
315    );
316
317    public static $yy_lookahead     = array(
318        3, 9, 10, 15, 71, 17, 28, 74, 11, 12,
319        13, 14, 34, 16, 81, 18, 28, 20, 21, 22,
320        11, 82, 34, 14, 27, 37, 93, 18, 31, 32,
321        33, 45, 35, 66, 37, 68, 48, 28, 52, 42,
322        43, 44, 45, 34, 47, 15, 49, 16, 51, 52,
323        53, 54, 3, 23, 77, 25, 59, 17, 28, 19,
324        11, 12, 13, 14, 34, 16, 36, 18, 38, 20,
325        21, 22, 105, 106, 94, 45, 27, 73, 101, 73,
326        31, 32, 33, 77, 35, 54, 37, 83, 48, 83,
327        94, 42, 43, 44, 45, 14, 47, 16, 49, 18,
328        51, 52, 3, 54, 36, 101, 38, 101, 59, 15,
329        11, 12, 13, 14, 77, 16, 35, 18, 24, 20,
330        21, 22, 28, 86, 87, 88, 27, 24, 34, 37,
331        31, 32, 33, 82, 35, 54, 37, 66, 101, 68,
332        46, 42, 43, 44, 45, 16, 47, 71, 49, 46,
333        51, 52, 3, 54, 78, 79, 53, 81, 59, 15,
334        11, 12, 13, 14, 37, 16, 37, 18, 24, 20,
335        21, 22, 28, 19, 65, 48, 27, 106, 34, 101,
336        31, 32, 33, 54, 35, 71, 37, 16, 74, 18,
337        46, 42, 43, 44, 45, 81, 47, 45, 49, 45,
338        51, 52, 3, 54, 90, 53, 52, 93, 59, 30,
339        11, 12, 13, 14, 82, 16, 37, 18, 24, 20,
340        21, 22, 51, 18, 14, 54, 27, 48, 73, 17,
341        31, 32, 33, 1, 35, 14, 37, 16, 83, 18,
342        46, 42, 43, 44, 45, 1, 47, 37, 49, 77,
343        51, 52, 3, 54, 60, 50, 1, 45, 59, 15,
344        11, 12, 13, 14, 52, 16, 36, 18, 38, 20,
345        21, 22, 28, 101, 102, 54, 27, 8, 34, 10,
346        31, 32, 33, 28, 35, 95, 37, 97, 98, 34,
347        94, 42, 43, 44, 45, 1, 47, 71, 49, 77,
348        51, 52, 3, 54, 78, 23, 73, 81, 59, 15,
349        11, 12, 13, 14, 73, 16, 83, 18, 36, 20,
350        21, 22, 28, 101, 83, 17, 27, 19, 34, 96,
351        31, 32, 33, 45, 35, 16, 37, 96, 37, 41,
352        52, 42, 43, 44, 45, 1, 47, 71, 49, 48,
353        51, 52, 3, 54, 78, 37, 48, 81, 59, 15,
354        11, 12, 13, 14, 71, 16, 48, 18, 17, 20,
355        21, 22, 28, 54, 81, 24, 27, 70, 34, 37,
356        31, 32, 33, 28, 35, 24, 37, 45, 1, 34,
357        48, 42, 43, 44, 45, 53, 47, 2, 49, 73,
358        51, 52, 3, 54, 97, 98, 19, 46, 59, 83,
359        11, 12, 13, 14, 36, 16, 38, 18, 98, 20,
360        21, 22, 11, 64, 65, 14, 27, 101, 1, 18,
361        31, 32, 33, 94, 35, 96, 37, 1, 17, 19,
362        92, 42, 43, 44, 45, 73, 47, 99, 49, 77,
363        51, 52, 3, 54, 16, 83, 18, 30, 59, 70,
364        11, 12, 13, 14, 73, 16, 45, 18, 48, 20,
365        21, 22, 11, 101, 83, 14, 27, 35, 92, 18,
366        31, 32, 33, 94, 35, 99, 37, 97, 98, 53,
367        36, 42, 43, 44, 45, 66, 47, 68, 49, 18,
368        51, 52, 3, 54, 94, 38, 96, 53, 59, 81,
369        11, 12, 13, 14, 73, 16, 77, 18, 73, 20,
370        21, 22, 11, 3, 83, 14, 27, 99, 83, 18,
371        31, 32, 33, 37, 35, 18, 37, 18, 1, 2,
372        101, 42, 43, 44, 45, 35, 47, 18, 49, 16,
373        51, 18, 18, 54, 62, 63, 97, 98, 59, 39,
374        40, 50, 18, 4, 5, 6, 7, 8, 45, 16,
375        11, 12, 13, 14, 18, 55, 56, 57, 58, 20,
376        21, 22, 49, 53, 51, 53, 27, 54, 18, 15,
377        31, 32, 33, 66, 67, 68, 69, 25, 71, 72,
378        51, 74, 75, 76, 18, 18, 11, 11, 81, 14,
379        14, 84, 85, 18, 18, 17, 89, 90, 91, 9,
380        93, 15, 51, 28, 102, 30, 81, 81, 19, 34,
381        66, 67, 68, 69, 95, 71, 72, 83, 74, 75,
382        76, 94, 94, 80, 94, 81, 50, 81, 84, 85,
383        107, 96, 94, 89, 90, 91, 107, 93, 66, 107,
384        68, 107, 107, 71, 107, 107, 74, 75, 76, 107,
385        107, 107, 107, 81, 107, 107, 84, 85, 107, 107,
386        107, 89, 90, 91, 66, 93, 68, 69, 107, 71,
387        72, 107, 74, 75, 76, 103, 104, 107, 11, 81,
388        107, 14, 84, 85, 107, 18, 107, 89, 90, 91,
389        107, 93, 107, 5, 107, 107, 107, 107, 107, 11,
390        12, 13, 14, 107, 16, 107, 107, 107, 20, 21,
391        22, 107, 107, 107, 107, 27, 5, 50, 107, 31,
392        32, 33, 11, 12, 13, 14, 107, 16, 107, 107,
393        107, 20, 21, 22, 107, 107, 107, 107, 27, 107,
394        107, 107, 31, 32, 33, 107, 107, 59, 60, 66,
395        107, 68, 107, 107, 71, 107, 107, 74, 75, 76,
396        107, 107, 107, 107, 81, 73, 107, 84, 85, 77,
397        59, 60, 89, 90, 91, 83, 93, 107, 86, 87,
398        88, 107, 66, 100, 68, 107, 107, 71, 107, 107,
399        74, 75, 76, 101, 107, 107, 107, 81, 107, 107,
400        84, 85, 107, 107, 107, 89, 90, 91, 107, 93,
401        107, 107, 107, 107, 66, 107, 68, 107, 107, 71,
402        104, 107, 74, 75, 76, 107, 78, 107, 107, 81,
403        107, 107, 84, 85, 107, 107, 107, 89, 90, 91,
404        66, 93, 68, 107, 107, 71, 107, 107, 74, 75,
405        76, 107, 107, 107, 107, 81, 107, 107, 84, 85,
406        107, 107, 107, 89, 90, 91, 107, 93, 66, 107,
407        68, 107, 107, 71, 100, 107, 74, 75, 76, 1,
408        2, 3, 107, 81, 107, 107, 84, 85, 107, 107,
409        107, 89, 90, 91, 107, 93, 66, 107, 68, 107,
410        107, 71, 100, 107, 74, 75, 76, 107, 78, 107,
411        107, 81, 107, 107, 84, 85, 107, 39, 40, 89,
412        90, 91, 66, 93, 68, 107, 107, 71, 107, 107,
413        74, 75, 76, 55, 56, 57, 58, 81, 107, 107,
414        84, 85, 107, 107, 107, 89, 90, 91, 107, 93,
415        66, 107, 68, 107, 107, 71, 107, 107, 74, 75,
416        76, 1, 107, 3, 107, 81, 107, 107, 84, 85,
417        107, 107, 107, 89, 90, 91, 107, 93, 66, 107,
418        68, 107, 107, 71, 107, 107, 74, 75, 76, 107,
419        107, 107, 107, 81, 107, 107, 84, 85, 107, 39,
420        40, 89, 90, 91, 66, 93, 68, 107, 107, 71,
421        107, 107, 74, 75, 76, 55, 56, 57, 58, 81,
422        60, 107, 84, 85, 107, 107, 107, 89, 90, 91,
423        107, 93, 66, 107, 68, 107, 107, 71, 107, 107,
424        74, 75, 76, 1, 107, 3, 107, 81, 107, 107,
425        84, 85, 107, 107, 107, 89, 90, 91, 107, 93,
426        66, 107, 68, 107, 107, 71, 107, 107, 74, 75,
427        76, 107, 107, 107, 107, 81, 107, 107, 84, 85,
428        38, 39, 40, 89, 90, 91, 66, 93, 68, 107,
429        107, 71, 107, 107, 74, 75, 76, 55, 56, 57,
430        58, 81, 107, 107, 84, 85, 107, 107, 107, 89,
431        90, 91, 107, 93, 66, 107, 68, 107, 107, 71,
432        107, 107, 74, 75, 76, 1, 107, 3, 107, 81,
433        107, 107, 84, 85, 107, 107, 107, 89, 90, 91,
434        107, 93, 66, 107, 68, 107, 107, 71, 107, 107,
435        74, 75, 76, 29, 107, 107, 107, 81, 107, 107,
436        84, 85, 107, 39, 40, 89, 90, 91, 66, 93,
437        68, 107, 107, 71, 107, 107, 74, 75, 76, 55,
438        56, 57, 58, 81, 107, 107, 84, 85, 107, 107,
439        107, 89, 90, 91, 107, 93, 66, 107, 68, 107,
440        107, 71, 107, 107, 74, 75, 76, 1, 107, 3,
441        107, 81, 107, 107, 84, 85, 107, 107, 107, 89,
442        90, 91, 107, 93, 66, 107, 68, 107, 107, 71,
443        107, 107, 74, 75, 76, 107, 107, 107, 107, 81,
444        107, 107, 84, 85, 38, 39, 40, 89, 90, 91,
445        66, 93, 68, 107, 107, 71, 107, 107, 74, 75,
446        76, 55, 56, 57, 58, 81, 107, 107, 84, 85,
447        107, 107, 107, 89, 90, 91, 107, 93, 66, 107,
448        68, 107, 107, 71, 107, 107, 74, 75, 76, 1,
449        107, 3, 107, 81, 107, 107, 84, 85, 107, 107,
450        107, 89, 90, 91, 107, 93, 66, 107, 68, 107,
451        107, 71, 107, 107, 74, 75, 76, 107, 107, 107,
452        107, 81, 107, 107, 84, 85, 107, 39, 40, 89,
453        90, 91, 66, 93, 68, 107, 107, 71, 107, 107,
454        74, 75, 76, 55, 56, 57, 58, 81, 107, 107,
455        84, 85, 107, 1, 107, 89, 90, 91, 107, 93,
456        66, 107, 68, 107, 107, 71, 107, 15, 74, 75,
457        76, 19, 107, 107, 107, 81, 107, 107, 84, 85,
458        28, 107, 107, 89, 90, 91, 34, 93, 66, 37,
459        68, 107, 107, 71, 107, 107, 74, 75, 76, 107,
460        48, 107, 107, 81, 107, 107, 84, 85, 107, 107,
461        107, 89, 90, 91, 66, 93, 68, 107, 107, 71,
462        107, 107, 74, 75, 76, 107, 107, 107, 107, 81,
463        107, 107, 84, 85, 107, 107, 107, 89, 90, 91,
464        107, 93, 66, 107, 68, 107, 107, 71, 107, 107,
465        74, 75, 76, 107, 107, 107, 107, 81, 107, 107,
466        84, 85, 107, 107, 107, 89, 90, 91, 107, 93,
467        66, 107, 68, 107, 107, 71, 107, 107, 74, 75,
468        76, 107, 107, 107, 107, 81, 107, 107, 84, 85,
469        107, 107, 107, 89, 90, 91, 66, 93, 68, 107,
470        107, 71, 107, 107, 74, 75, 76, 107, 107, 107,
471        107, 81, 107, 107, 84, 85, 107, 107, 107, 89,
472        90, 91, 107, 93, 66, 107, 68, 107, 107, 71,
473        107, 107, 74, 75, 76, 107, 107, 107, 107, 81,
474        107, 107, 84, 85, 107, 107, 107, 89, 90, 91,
475        107, 93, 66, 107, 68, 107, 107, 71, 107, 107,
476        74, 75, 76, 107, 107, 107, 107, 81, 107, 107,
477        84, 85, 1, 2, 3, 89, 90, 91, 66, 93,
478        68, 107, 107, 71, 107, 107, 74, 75, 76, 107,
479        107, 107, 107, 81, 107, 107, 84, 85, 1, 107,
480        3, 89, 90, 91, 107, 93, 107, 107, 37, 107,
481        39, 40, 107, 107, 107, 66, 107, 68, 107, 48,
482        71, 107, 107, 74, 75, 28, 55, 56, 57, 58,
483        81, 34, 107, 107, 85, 107, 39, 40, 89, 90,
484        91, 66, 93, 68, 107, 1, 71, 3, 107, 74,
485        75, 107, 55, 56, 57, 58, 81, 107, 107, 107,
486        85, 107, 107, 107, 89, 90, 91, 107, 93, 107,
487        26, 107, 28, 2, 107, 107, 107, 107, 34, 107,
488        107, 107, 11, 39, 40, 14, 107, 107, 107, 18,
489        19, 107, 107, 107, 107, 107, 107, 107, 107, 55,
490        56, 57, 58, 107, 107, 66, 107, 68, 107, 107,
491        71, 107, 107, 74, 75, 107, 45, 107, 107, 48,
492        81, 50, 2, 52, 53, 107, 107, 107, 89, 90,
493        91, 11, 93, 2, 14, 107, 107, 17, 18, 19,
494        107, 107, 11, 107, 107, 14, 107, 73, 17, 18,
495        19, 77, 107, 107, 107, 107, 107, 83, 107, 107,
496        86, 87, 88, 107, 107, 45, 107, 107, 48, 66,
497        50, 68, 52, 107, 71, 101, 45, 74, 75, 48,
498        66, 50, 68, 52, 81, 71, 107, 107, 74, 75,
499        107, 107, 89, 90, 91, 81, 93, 107, 107, 107,
500        107, 107, 107, 89, 90, 91, 66, 93, 68, 107,
501        107, 71, 107, 107, 74, 75, 107, 66, 107, 68,
502        107, 81, 71, 107, 107, 74, 75, 107, 107, 89,
503        90, 91, 81, 93, 1, 107, 3, 107, 107, 107,
504        89, 90, 91, 66, 93, 68, 107, 1, 71, 3,
505        107, 74, 75, 107, 107, 107, 23, 107, 81, 107,
506        1, 15, 3, 107, 107, 107, 89, 90, 91, 1,
507        93, 3, 39, 40, 15, 107, 107, 107, 107, 107,
508        107, 107, 107, 15, 107, 39, 40, 107, 55, 56,
509        57, 58, 107, 107, 107, 107, 107, 107, 39, 40,
510        107, 55, 56, 57, 58, 107, 107, 39, 40, 107,
511        107, 107, 107, 107, 55, 56, 57, 58, 2, 1,
512        107, 3, 107, 55, 56, 57, 58, 11, 107, 107,
513        14, 107, 107, 15, 18, 19, 2, 107, 107, 107,
514        107, 107, 107, 107, 107, 11, 107, 107, 14, 107,
515        107, 107, 18, 19, 1, 107, 3, 39, 40, 107,
516        107, 45, 107, 1, 48, 3, 50, 107, 52, 107,
517        107, 107, 107, 55, 56, 57, 58, 15, 107, 45,
518        107, 107, 48, 107, 50, 107, 52, 11, 107, 107,
519        14, 107, 39, 40, 18, 19, 107, 107, 107, 107,
520        107, 39, 40, 107, 107, 107, 53, 107, 55, 56,
521        57, 58, 107, 107, 107, 107, 107, 55, 56, 57,
522        58, 45, 107, 107, 48, 107, 50, 73, 52, 107,
523        107, 77, 107, 107, 107, 107, 107, 83, 107, 107,
524        86, 87, 88, 107, 107, 107, 107, 107, 107, 107,
525        107, 107, 107, 107, 107, 101,
526    );
527
528    public static $yy_shift_ofst    = array(
529        -23, 399, 399, 449, 49, 49, 449, 349, 49, 49,
530        349, -3, 49, 49, 49, 49, 49, 49, 49, 49,
531        49, 49, 49, 149, 199, 299, 49, 149, 49, 49,
532        49, 49, 49, 49, 249, 49, 99, 99, 499, 499,
533        499, 499, 499, 499, 1664, 1617, 1617, 1144, 1982, 1973,
534        1938, 1226, 1853, 1062, 980, 1879, 898, 1866, 1888, 1308,
535        1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
536        1308, 1308, 520, 520, 533, 731, 1372, 171, 255, 129,
537        708, 595, 9, 154, 129, 255, 308, 129, 255, 537,
538        559, 1751, 244, 344, 511, 221, 294, 411, 40, 411,
539        -22, 438, 438, 436, 387, 427, 319, 355, -22, -22,
540        420, 609, 232, 232, 232, 609, 232, 232, 232, 232,
541        -23, -23, -23, -23, 1740, 1691, 1954, 1936, 1996, 81,
542        687, 461, 212, -22, 31, -14, -14, -22, 288, -14,
543        288, -14, -22, 31, -22, -14, -14, -22, -22, 351,
544        -22, -22, -14, -22, -22, -22, -22, -22, -14, 210,
545        232, 609, 232, 395, 609, 232, 609, 232, 395, 92,
546        232, -23, -23, -23, -23, -23, -23, 1591, 30, -12,
547        94, 144, 342, 596, 179, 103, 194, 454, 230, 152,
548        269, 301, 318, 127, 282, -8, 205, 361, 378, 421,
549        68, 467, 556, 606, 571, 598, 587, 586, 610, 549,
550        572, 574, 570, 532, 530, 553, 298, 523, 544, 510,
551        92, 534, 529, 519, 517, 496, 442, 481,
552    );
553
554    public static $yy_reduce_ofst   = array(
555        492, 527, 564, 592, 618, 703, 736, 768, 794, 822,
556        850, 1068, 1096, 1122, 1150, 1286, 1204, 1232, 1260, 1040,
557        1314, 1532, 1478, 1506, 1342, 1450, 1424, 1396, 1368, 1178,
558        1014, 986, 932, 904, 876, 958, 1595, 1569, 1771, 1659,
559        1760, 1734, 1723, 1797, 712, 1694, 1974, 37, 37, 37,
560        37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
561        37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
562        37, 37, 37, 37, 114, -33, 372, -67, 6, 76,
563        71, 233, 241, 190, 226, 4, 307, 276, 326, 172,
564        429, 389, -23, -23, 339, 428, -23, 410, 390, 339,
565        391, 386, 348, -23, 222, -23, 293, 155, 441, 445,
566        390, 459, -23, -23, -23, 390, -23, -23, -23, 439,
567        -23, -23, 359, -23, 550, 550, 550, 550, 550, 545,
568        555, 550, 550, 554, 566, 539, 539, 554, 547, 539,
569        548, 539, 554, 546, 554, 539, 539, 554, 554, 563,
570        554, 554, 539, 554, 554, 554, 554, 554, 539, 558,
571        78, 320, 78, 522, 320, 78, 320, 78, 522, 196,
572        78, 51, -61, -20, -4, 109, 132,
573    );
574
575    public static $yyExpectedTokens = array(
576        array(),
577        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
578        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
579        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
580        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
581        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
582        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
583        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
584        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
585        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
586        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
587        array(
588            3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 53, 54, 59,
589        ),
590        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
591        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
592        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
593        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
594        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
595        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
596        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
597        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
598        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
599        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
600        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
601        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
602        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
603        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
604        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
605        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
606        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
607        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
608        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
609        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
610        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
611        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
612        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
613        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
614        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
615        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,),
616        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 54, 59,),
617        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 54, 59,),
618        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 54, 59,),
619        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 54, 59,),
620        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 54, 59,),
621        array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 54, 59,),
622        array(1, 3, 26, 28, 34, 39, 40, 55, 56, 57, 58,),
623        array(1, 3, 28, 34, 39, 40, 55, 56, 57, 58,),
624        array(1, 3, 28, 34, 39, 40, 55, 56, 57, 58,),
625        array(1, 3, 29, 39, 40, 55, 56, 57, 58,),
626        array(1, 3, 15, 39, 40, 55, 56, 57, 58,),
627        array(1, 3, 39, 40, 53, 55, 56, 57, 58,),
628        array(1, 3, 15, 39, 40, 55, 56, 57, 58,),
629        array(1, 3, 38, 39, 40, 55, 56, 57, 58,),
630        array(1, 3, 23, 39, 40, 55, 56, 57, 58,),
631        array(1, 3, 38, 39, 40, 55, 56, 57, 58,),
632        array(1, 3, 39, 40, 55, 56, 57, 58, 60,),
633        array(1, 3, 15, 39, 40, 55, 56, 57, 58,),
634        array(1, 2, 3, 39, 40, 55, 56, 57, 58,),
635        array(1, 3, 15, 39, 40, 55, 56, 57, 58,),
636        array(1, 3, 15, 39, 40, 55, 56, 57, 58,),
637        array(1, 3, 39, 40, 55, 56, 57, 58,),
638        array(1, 3, 39, 40, 55, 56, 57, 58,),
639        array(1, 3, 39, 40, 55, 56, 57, 58,),
640        array(1, 3, 39, 40, 55, 56, 57, 58,),
641        array(1, 3, 39, 40, 55, 56, 57, 58,),
642        array(1, 3, 39, 40, 55, 56, 57, 58,),
643        array(1, 3, 39, 40, 55, 56, 57, 58,),
644        array(1, 3, 39, 40, 55, 56, 57, 58,),
645        array(1, 3, 39, 40, 55, 56, 57, 58,),
646        array(1, 3, 39, 40, 55, 56, 57, 58,),
647        array(1, 3, 39, 40, 55, 56, 57, 58,),
648        array(1, 3, 39, 40, 55, 56, 57, 58,),
649        array(1, 3, 39, 40, 55, 56, 57, 58,),
650        array(3, 39, 40, 55, 56, 57, 58,),
651        array(3, 39, 40, 55, 56, 57, 58,),
652        array(16, 18, 49, 51, 54,),
653        array(5, 11, 12, 13, 14, 16, 20, 21, 22, 27, 31, 32, 33, 59, 60,),
654        array(1, 15, 19, 28, 34, 37, 48,),
655        array(16, 18, 51, 54,),
656        array(1, 28, 34,),
657        array(16, 37, 54,),
658        array(5, 11, 12, 13, 14, 16, 20, 21, 22, 27, 31, 32, 33, 59, 60,),
659        array(11, 14, 18, 28, 30, 34,),
660        array(11, 14, 18, 28, 34,),
661        array(19, 45, 52,),
662        array(16, 37, 54,),
663        array(1, 28, 34,),
664        array(17, 19, 48,),
665        array(16, 37, 54,),
666        array(1, 28, 34,),
667        array(1, 2,),
668        array(4, 5, 6, 7, 8, 11, 12, 13, 14, 20, 21, 22, 27, 31, 32, 33,),
669        array(2, 11, 14, 17, 18, 19, 45, 48, 50, 52,),
670        array(1, 15, 28, 34,),
671        array(1, 15, 28, 34,),
672        array(11, 14, 18, 50,),
673        array(14, 16, 18, 54,),
674        array(1, 15, 28, 34,),
675        array(11, 14, 18,),
676        array(17, 19, 48,),
677        array(11, 14, 18,),
678        array(28, 34,),
679        array(16, 18,),
680        array(16, 18,),
681        array(1, 53,),
682        array(1, 19,),
683        array(1, 30,),
684        array(16, 54,),
685        array(28, 34,),
686        array(28, 34,),
687        array(28, 34,),
688        array(19, 48,),
689        array(19,),
690        array(1,),
691        array(1,),
692        array(1,),
693        array(19,),
694        array(1,),
695        array(1,),
696        array(1,),
697        array(1,),
698        array(),
699        array(),
700        array(),
701        array(),
702        array(2, 11, 14, 17, 18, 19, 45, 48, 50, 52,),
703        array(2, 11, 14, 18, 19, 45, 48, 50, 52, 53,),
704        array(2, 11, 14, 18, 19, 45, 48, 50, 52,),
705        array(2, 11, 14, 18, 19, 45, 48, 50, 52,),
706        array(11, 14, 18, 19, 45, 48, 50, 52,),
707        array(14, 16, 18, 35, 54,),
708        array(11, 14, 18, 50,),
709        array(11, 14, 18,),
710        array(17, 45, 52,),
711        array(28, 34,),
712        array(16, 54,),
713        array(45, 52,),
714        array(45, 52,),
715        array(28, 34,),
716        array(45, 52,),
717        array(45, 52,),
718        array(45, 52,),
719        array(45, 52,),
720        array(28, 34,),
721        array(16, 54,),
722        array(28, 34,),
723        array(45, 52,),
724        array(45, 52,),
725        array(28, 34,),
726        array(28, 34,),
727        array(17, 24,),
728        array(28, 34,),
729        array(28, 34,),
730        array(45, 52,),
731        array(28, 34,),
732        array(28, 34,),
733        array(28, 34,),
734        array(28, 34,),
735        array(28, 34,),
736        array(45, 52,),
737        array(14, 37,),
738        array(1,),
739        array(19,),
740        array(1,),
741        array(2,),
742        array(19,),
743        array(1,),
744        array(19,),
745        array(1,),
746        array(2,),
747        array(37,),
748        array(1,),
749        array(),
750        array(),
751        array(),
752        array(),
753        array(),
754        array(),
755        array(1, 2, 3, 37, 39, 40, 48, 55, 56, 57, 58,),
756        array(15, 23, 25, 28, 34, 36, 38, 45,),
757        array(15, 17, 28, 34, 37, 48,),
758        array(15, 24, 28, 34, 46,),
759        array(15, 24, 28, 34, 46,),
760        array(37, 45, 48, 53,),
761        array(11, 14, 18, 50,),
762        array(30, 37, 48,),
763        array(24, 46, 53,),
764        array(24, 46, 60,),
765        array(36, 53,),
766        array(36, 38,),
767        array(45, 53,),
768        array(8, 10,),
769        array(37, 48,),
770        array(37, 48,),
771        array(37, 48,),
772        array(23, 36,),
773        array(9, 10,),
774        array(18, 50,),
775        array(24, 46,),
776        array(36, 38,),
777        array(17, 45,),
778        array(36, 38,),
779        array(38,),
780        array(18,),
781        array(15,),
782        array(51,),
783        array(17,),
784        array(18,),
785        array(18,),
786        array(9,),
787        array(51,),
788        array(25,),
789        array(15,),
790        array(18,),
791        array(53,),
792        array(53,),
793        array(16,),
794        array(41,),
795        array(45,),
796        array(18,),
797        array(35,),
798        array(37,),
799        array(18,),
800        array(18,),
801        array(18,),
802        array(18,),
803        array(37,),
804        array(35,),
805        array(18,),
806        array(),
807        array(),
808        array(),
809        array(),
810        array(),
811        array(),
812        array(),
813        array(),
814        array(),
815        array(),
816        array(),
817        array(),
818        array(),
819        array(),
820        array(),
821        array(),
822        array(),
823        array(),
824        array(),
825        array(),
826        array(),
827        array(),
828        array(),
829        array(),
830        array(),
831        array(),
832        array(),
833        array(),
834        array(),
835        array(),
836        array(),
837        array(),
838        array(),
839        array(),
840        array(),
841        array(),
842        array(),
843        array(),
844        array(),
845        array(),
846        array(),
847        array(),
848        array(),
849        array(),
850        array(),
851        array(),
852        array(),
853        array(),
854        array(),
855        array(),
856        array(),
857        array(),
858        array(),
859        array(),
860        array(),
861        array(),
862        array(),
863        array(),
864        array(),
865        array(),
866        array(),
867        array(),
868        array(),
869        array(),
870        array(),
871        array(),
872        array(),
873        array(),
874        array(),
875        array(),
876        array(),
877        array(),
878        array(),
879        array(),
880        array(),
881        array(),
882        array(),
883        array(),
884        array(),
885        array(),
886        array(),
887        array(),
888        array(),
889        array(),
890        array(),
891        array(),
892        array(),
893        array(),
894        array(),
895        array(),
896        array(),
897        array(),
898        array(),
899        array(),
900        array(),
901    );
902
903    public static $yy_default       = array(
904        334, 509, 509, 494, 509, 473, 509, 509, 473, 473,
905        509, 509, 509, 509, 509, 509, 509, 509, 509, 509,
906        509, 509, 509, 509, 509, 509, 509, 509, 509, 509,
907        509, 509, 509, 509, 509, 509, 509, 509, 509, 509,
908        509, 509, 509, 509, 375, 354, 375, 380, 509, 509,
909        347, 509, 509, 509, 509, 509, 509, 509, 509, 397,
910        472, 347, 471, 387, 497, 495, 382, 386, 359, 377,
911        380, 496, 402, 401, 509, 509, 413, 509, 375, 509,
912        509, 375, 375, 485, 509, 375, 428, 509, 375, 366,
913        323, 427, 389, 389, 438, 509, 389, 438, 428, 438,
914        375, 509, 509, 389, 369, 389, 509, 375, 375, 356,
915        428, 482, 405, 389, 406, 428, 396, 392, 400, 371,
916        480, 404, 332, 393, 427, 427, 427, 427, 427, 509,
917        440, 438, 454, 355, 509, 436, 434, 365, 433, 432,
918        431, 465, 364, 509, 363, 466, 463, 362, 352, 509,
919        351, 357, 435, 344, 350, 358, 361, 348, 464, 438,
920        422, 460, 367, 474, 486, 372, 483, 395, 475, 438,
921        370, 479, 479, 438, 438, 332, 479, 413, 409, 413,
922        403, 403, 413, 439, 413, 403, 403, 509, 509, 409,
923        330, 423, 509, 413, 509, 509, 509, 403, 509, 409,
924        509, 509, 509, 509, 509, 509, 509, 509, 509, 509,
925        383, 509, 509, 418, 509, 509, 415, 409, 509, 509,
926        454, 509, 509, 509, 509, 484, 411, 509, 324, 426,
927        415, 360, 442, 487, 444, 336, 443, 337, 488, 376,
928        489, 490, 452, 481, 459, 454, 410, 441, 328, 419,
929        325, 326, 437, 420, 477, 327, 476, 398, 399, 414,
930        335, 421, 388, 424, 412, 451, 329, 331, 449, 333,
931        384, 469, 500, 468, 491, 505, 343, 416, 417, 506,
932        374, 391, 492, 493, 498, 341, 373, 418, 425, 353,
933        501, 508, 507, 504, 502, 499, 461, 390, 368, 408,
934        338, 503, 478, 453, 447, 446, 429, 445, 430, 448,
935        450, 342, 462, 339, 340, 455, 470, 458, 457, 407,
936        467, 456, 394,
937    );
938
939    public static $yyFallback       = array();
940
941    public static $yyRuleName       = array(
942        'start ::= template',
943        'template ::= template PHP',
944        'template ::= template TEXT',
945        'template ::= template STRIPON',
946        'template ::= template STRIPOFF',
947        'template ::= template LITERALSTART literal_e2 LITERALEND',
948        'literal_e2 ::= literal_e1 LITERALSTART literal_e1 LITERALEND',
949        'literal_e2 ::= literal_e1',
950        'literal_e1 ::= literal_e1 LITERAL',
951        'literal_e1 ::=',
952        'template ::= template smartytag',
953        'template ::=',
954        'smartytag ::= SIMPELOUTPUT',
955        'smartytag ::= SIMPLETAG',
956        'smartytag ::= SMARTYBLOCKCHILDPARENT',
957        'smartytag ::= LDEL tagbody RDEL',
958        'smartytag ::= tag RDEL',
959        'tagbody ::= outattr',
960        'tagbody ::= DOLLARID eqoutattr',
961        'tagbody ::= varindexed eqoutattr',
962        'eqoutattr ::= EQUAL outattr',
963        'outattr ::= output attributes',
964        'output ::= variable',
965        'output ::= value',
966        'output ::= expr',
967        'tag ::= LDEL ID attributes',
968        'tag ::= LDEL ID',
969        'tag ::= LDEL ID modifierlist attributes',
970        'tag ::= LDEL ID PTR ID attributes',
971        'tag ::= LDEL ID PTR ID modifierlist attributes',
972        'tag ::= LDELMAKENOCACHE DOLLARID',
973        'tag ::= LDELIF expr',
974        'tag ::= LDELIF expr attributes',
975        'tag ::= LDELIF statement',
976        'tag ::= LDELIF statement attributes',
977        'tag ::= LDELFOR statements SEMICOLON expr SEMICOLON varindexed foraction attributes',
978        'foraction ::= EQUAL expr',
979        'foraction ::= INCDEC',
980        'tag ::= LDELFOR statement TO expr attributes',
981        'tag ::= LDELFOR statement TO expr STEP expr attributes',
982        'tag ::= LDELFOREACH SPACE expr AS varvar attributes',
983        'tag ::= LDELFOREACH SPACE expr AS varvar APTR varvar attributes',
984        'tag ::= LDELFOREACH attributes',
985        'tag ::= LDELSETFILTER ID modparameters',
986        'tag ::= LDELSETFILTER ID modparameters modifierlist',
987        'smartytag ::= CLOSETAG',
988        'tag ::= LDELSLASH ID',
989        'tag ::= LDELSLASH ID modifierlist',
990        'tag ::= LDELSLASH ID PTR ID',
991        'tag ::= LDELSLASH ID PTR ID modifierlist',
992        'attributes ::= attributes attribute',
993        'attributes ::= attribute',
994        'attributes ::=',
995        'attribute ::= SPACE ID EQUAL ID',
996        'attribute ::= ATTR expr',
997        'attribute ::= ATTR value',
998        'attribute ::= SPACE ID',
999        'attribute ::= SPACE expr',
1000        'attribute ::= SPACE value',
1001        'attribute ::= SPACE INTEGER EQUAL expr',
1002        'statements ::= statement',
1003        'statements ::= statements COMMA statement',
1004        'statement ::= DOLLARID EQUAL INTEGER',
1005        'statement ::= DOLLARID EQUAL expr',
1006        'statement ::= varindexed EQUAL expr',
1007        'statement ::= OPENP statement CLOSEP',
1008        'expr ::= value',
1009        'expr ::= ternary',
1010        'expr ::= DOLLARID COLON ID',
1011        'expr ::= expr MATH value',
1012        'expr ::= expr UNIMATH value',
1013        'expr ::= array',
1014        'expr ::= expr modifierlist',
1015        'expr ::= expr tlop value',
1016        'expr ::= expr lop expr',
1017        'expr ::= expr scond',
1018        'expr ::= expr ISIN array',
1019        'expr ::= expr ISIN value',
1020        'ternary ::= OPENP expr CLOSEP QMARK DOLLARID COLON expr',
1021        'ternary ::= OPENP expr CLOSEP QMARK expr COLON expr',
1022        'value ::= variable',
1023        'value ::= UNIMATH value',
1024        'value ::= NOT value',
1025        'value ::= TYPECAST value',
1026        'value ::= variable INCDEC',
1027        'value ::= HEX',
1028        'value ::= INTEGER',
1029        'value ::= INTEGER DOT INTEGER',
1030        'value ::= INTEGER DOT',
1031        'value ::= DOT INTEGER',
1032        'value ::= ID',
1033        'value ::= function',
1034        'value ::= OPENP expr CLOSEP',
1035        'value ::= variable INSTANCEOF ns1',
1036        'value ::= variable INSTANCEOF variable',
1037        'value ::= SINGLEQUOTESTRING',
1038        'value ::= doublequoted_with_quotes',
1039        'value ::= varindexed DOUBLECOLON static_class_access',
1040        'value ::= smartytag',
1041        'value ::= value modifierlist',
1042        'value ::= NAMESPACE',
1043        'value ::= ns1 DOUBLECOLON static_class_access',
1044        'ns1 ::= ID',
1045        'ns1 ::= NAMESPACE',
1046        'variable ::= DOLLARID',
1047        'variable ::= varindexed',
1048        'variable ::= varvar AT ID',
1049        'variable ::= object',
1050        'variable ::= HATCH ID HATCH',
1051        'variable ::= HATCH ID HATCH arrayindex',
1052        'variable ::= HATCH variable HATCH',
1053        'variable ::= HATCH variable HATCH arrayindex',
1054        'varindexed ::= DOLLARID arrayindex',
1055        'varindexed ::= varvar arrayindex',
1056        'arrayindex ::= arrayindex indexdef',
1057        'arrayindex ::=',
1058        'indexdef ::= DOT DOLLARID',
1059        'indexdef ::= DOT varvar',
1060        'indexdef ::= DOT varvar AT ID',
1061        'indexdef ::= DOT ID',
1062        'indexdef ::= DOT INTEGER',
1063        'indexdef ::= DOT LDEL expr RDEL',
1064        'indexdef ::= OPENB ID CLOSEB',
1065        'indexdef ::= OPENB ID DOT ID CLOSEB',
1066        'indexdef ::= OPENB SINGLEQUOTESTRING CLOSEB',
1067        'indexdef ::= OPENB INTEGER CLOSEB',
1068        'indexdef ::= OPENB DOLLARID CLOSEB',
1069        'indexdef ::= OPENB variable CLOSEB',
1070        'indexdef ::= OPENB value CLOSEB',
1071        'indexdef ::= OPENB expr CLOSEB',
1072        'indexdef ::= OPENB CLOSEB',
1073        'varvar ::= DOLLARID',
1074        'varvar ::= DOLLAR',
1075        'varvar ::= varvar varvarele',
1076        'varvarele ::= ID',
1077        'varvarele ::= SIMPELOUTPUT',
1078        'varvarele ::= LDEL expr RDEL',
1079        'object ::= varindexed objectchain',
1080        'objectchain ::= objectelement',
1081        'objectchain ::= objectchain objectelement',
1082        'objectelement ::= PTR ID arrayindex',
1083        'objectelement ::= PTR varvar arrayindex',
1084        'objectelement ::= PTR LDEL expr RDEL arrayindex',
1085        'objectelement ::= PTR ID LDEL expr RDEL arrayindex',
1086        'objectelement ::= PTR method',
1087        'function ::= ns1 OPENP params CLOSEP',
1088        'method ::= ID OPENP params CLOSEP',
1089        'method ::= DOLLARID OPENP params CLOSEP',
1090        'params ::= params COMMA expr',
1091        'params ::= expr',
1092        'params ::=',
1093        'modifierlist ::= modifierlist modifier modparameters',
1094        'modifierlist ::= modifier modparameters',
1095        'modifier ::= VERT AT ID',
1096        'modifier ::= VERT ID',
1097        'modparameters ::= modparameters modparameter',
1098        'modparameters ::=',
1099        'modparameter ::= COLON value',
1100        'modparameter ::= COLON array',
1101        'static_class_access ::= method',
1102        'static_class_access ::= method objectchain',
1103        'static_class_access ::= ID',
1104        'static_class_access ::= DOLLARID arrayindex',
1105        'static_class_access ::= DOLLARID arrayindex objectchain',
1106        'lop ::= LOGOP',
1107        'lop ::= SLOGOP',
1108        'tlop ::= TLOGOP',
1109        'scond ::= SINGLECOND',
1110        'array ::= OPENB arrayelements CLOSEB',
1111        'arrayelements ::= arrayelement',
1112        'arrayelements ::= arrayelements COMMA arrayelement',
1113        'arrayelements ::=',
1114        'arrayelement ::= value APTR expr',
1115        'arrayelement ::= ID APTR expr',
1116        'arrayelement ::= expr',
1117        'doublequoted_with_quotes ::= QUOTE QUOTE',
1118        'doublequoted_with_quotes ::= QUOTE doublequoted QUOTE',
1119        'doublequoted ::= doublequoted doublequotedcontent',
1120        'doublequoted ::= doublequotedcontent',
1121        'doublequotedcontent ::= BACKTICK variable BACKTICK',
1122        'doublequotedcontent ::= BACKTICK expr BACKTICK',
1123        'doublequotedcontent ::= DOLLARID',
1124        'doublequotedcontent ::= LDEL variable RDEL',
1125        'doublequotedcontent ::= LDEL expr RDEL',
1126        'doublequotedcontent ::= smartytag',
1127        'doublequotedcontent ::= TEXT',
1128    );
1129
1130    public static $yyRuleInfo       = array(
1131        array(0 => 62, 1 => 1),
1132        array(0 => 63, 1 => 2),
1133        array(0 => 63, 1 => 2),
1134        array(0 => 63, 1 => 2),
1135        array(0 => 63, 1 => 2),
1136        array(0 => 63, 1 => 4),
1137        array(0 => 64, 1 => 4),
1138        array(0 => 64, 1 => 1),
1139        array(0 => 65, 1 => 2),
1140        array(0 => 65, 1 => 0),
1141        array(0 => 63, 1 => 2),
1142        array(0 => 63, 1 => 0),
1143        array(0 => 66, 1 => 1),
1144        array(0 => 66, 1 => 1),
1145        array(0 => 66, 1 => 1),
1146        array(0 => 66, 1 => 3),
1147        array(0 => 66, 1 => 2),
1148        array(0 => 67, 1 => 1),
1149        array(0 => 67, 1 => 2),
1150        array(0 => 67, 1 => 2),
1151        array(0 => 70, 1 => 2),
1152        array(0 => 69, 1 => 2),
1153        array(0 => 72, 1 => 1),
1154        array(0 => 72, 1 => 1),
1155        array(0 => 72, 1 => 1),
1156        array(0 => 68, 1 => 3),
1157        array(0 => 68, 1 => 2),
1158        array(0 => 68, 1 => 4),
1159        array(0 => 68, 1 => 5),
1160        array(0 => 68, 1 => 6),
1161        array(0 => 68, 1 => 2),
1162        array(0 => 68, 1 => 2),
1163        array(0 => 68, 1 => 3),
1164        array(0 => 68, 1 => 2),
1165        array(0 => 68, 1 => 3),
1166        array(0 => 68, 1 => 8),
1167        array(0 => 80, 1 => 2),
1168        array(0 => 80, 1 => 1),
1169        array(0 => 68, 1 => 5),
1170        array(0 => 68, 1 => 7),
1171        array(0 => 68, 1 => 6),
1172        array(0 => 68, 1 => 8),
1173        array(0 => 68, 1 => 2),
1174        array(0 => 68, 1 => 3),
1175        array(0 => 68, 1 => 4),
1176        array(0 => 66, 1 => 1),
1177        array(0 => 68, 1 => 2),
1178        array(0 => 68, 1 => 3),
1179        array(0 => 68, 1 => 4),
1180        array(0 => 68, 1 => 5),
1181        array(0 => 73, 1 => 2),
1182        array(0 => 73, 1 => 1),
1183        array(0 => 73, 1 => 0),
1184        array(0 => 83, 1 => 4),
1185        array(0 => 83, 1 => 2),
1186        array(0 => 83, 1 => 2),
1187        array(0 => 83, 1 => 2),
1188        array(0 => 83, 1 => 2),
1189        array(0 => 83, 1 => 2),
1190        array(0 => 83, 1 => 4),
1191        array(0 => 79, 1 => 1),
1192        array(0 => 79, 1 => 3),
1193        array(0 => 78, 1 => 3),
1194        array(0 => 78, 1 => 3),
1195        array(0 => 78, 1 => 3),
1196        array(0 => 78, 1 => 3),
1197        array(0 => 76, 1 => 1),
1198        array(0 => 76, 1 => 1),
1199        array(0 => 76, 1 => 3),
1200        array(0 => 76, 1 => 3),
1201        array(0 => 76, 1 => 3),
1202        array(0 => 76, 1 => 1),
1203        array(0 => 76, 1 => 2),
1204        array(0 => 76, 1 => 3),
1205        array(0 => 76, 1 => 3),
1206        array(0 => 76, 1 => 2),
1207        array(0 => 76, 1 => 3),
1208        array(0 => 76, 1 => 3),
1209        array(0 => 84, 1 => 7),
1210        array(0 => 84, 1 => 7),
1211        array(0 => 75, 1 => 1),
1212        array(0 => 75, 1 => 2),
1213        array(0 => 75, 1 => 2),
1214        array(0 => 75, 1 => 2),
1215        array(0 => 75, 1 => 2),
1216        array(0 => 75, 1 => 1),
1217        array(0 => 75, 1 => 1),
1218        array(0 => 75, 1 => 3),
1219        array(0 => 75, 1 => 2),
1220        array(0 => 75, 1 => 2),
1221        array(0 => 75, 1 => 1),
1222        array(0 => 75, 1 => 1),
1223        array(0 => 75, 1 => 3),
1224        array(0 => 75, 1 => 3),
1225        array(0 => 75, 1 => 3),
1226        array(0 => 75, 1 => 1),
1227        array(0 => 75, 1 => 1),
1228        array(0 => 75, 1 => 3),
1229        array(0 => 75, 1 => 1),
1230        array(0 => 75, 1 => 2),
1231        array(0 => 75, 1 => 1),
1232        array(0 => 75, 1 => 3),
1233        array(0 => 90, 1 => 1),
1234        array(0 => 90, 1 => 1),
1235        array(0 => 74, 1 => 1),
1236        array(0 => 74, 1 => 1),
1237        array(0 => 74, 1 => 3),
1238        array(0 => 74, 1 => 1),
1239        array(0 => 74, 1 => 3),
1240        array(0 => 74, 1 => 4),
1241        array(0 => 74, 1 => 3),
1242        array(0 => 74, 1 => 4),
1243        array(0 => 71, 1 => 2),
1244        array(0 => 71, 1 => 2),
1245        array(0 => 94, 1 => 2),
1246        array(0 => 94, 1 => 0),
1247        array(0 => 95, 1 => 2),
1248        array(0 => 95, 1 => 2),
1249        array(0 => 95, 1 => 4),
1250        array(0 => 95, 1 => 2),
1251        array(0 => 95, 1 => 2),
1252        array(0 => 95, 1 => 4),
1253        array(0 => 95, 1 => 3),
1254        array(0 => 95, 1 => 5),
1255        array(0 => 95, 1 => 3),
1256        array(0 => 95, 1 => 3),
1257        array(0 => 95, 1 => 3),
1258        array(0 => 95, 1 => 3),
1259        array(0 => 95, 1 => 3),
1260        array(0 => 95, 1 => 3),
1261        array(0 => 95, 1 => 2),
1262        array(0 => 81, 1 => 1),
1263        array(0 => 81, 1 => 1),
1264        array(0 => 81, 1 => 2),
1265        array(0 => 96, 1 => 1),
1266        array(0 => 96, 1 => 1),
1267        array(0 => 96, 1 => 3),
1268        array(0 => 93, 1 => 2),
1269        array(0 => 97, 1 => 1),
1270        array(0 => 97, 1 => 2),
1271        array(0 => 98, 1 => 3),
1272        array(0 => 98, 1 => 3),
1273        array(0 => 98, 1 => 5),
1274        array(0 => 98, 1 => 6),
1275        array(0 => 98, 1 => 2),
1276        array(0 => 89, 1 => 4),
1277        array(0 => 99, 1 => 4),
1278        array(0 => 99, 1 => 4),
1279        array(0 => 100, 1 => 3),
1280        array(0 => 100, 1 => 1),
1281        array(0 => 100, 1 => 0),
1282        array(0 => 77, 1 => 3),
1283        array(0 => 77, 1 => 2),
1284        array(0 => 101, 1 => 3),
1285        array(0 => 101, 1 => 2),
1286        array(0 => 82, 1 => 2),
1287        array(0 => 82, 1 => 0),
1288        array(0 => 102, 1 => 2),
1289        array(0 => 102, 1 => 2),
1290        array(0 => 92, 1 => 1),
1291        array(0 => 92, 1 => 2),
1292        array(0 => 92, 1 => 1),
1293        array(0 => 92, 1 => 2),
1294        array(0 => 92, 1 => 3),
1295        array(0 => 87, 1 => 1),
1296        array(0 => 87, 1 => 1),
1297        array(0 => 86, 1 => 1),
1298        array(0 => 88, 1 => 1),
1299        array(0 => 85, 1 => 3),
1300        array(0 => 103, 1 => 1),
1301        array(0 => 103, 1 => 3),
1302        array(0 => 103, 1 => 0),
1303        array(0 => 104, 1 => 3),
1304        array(0 => 104, 1 => 3),
1305        array(0 => 104, 1 => 1),
1306        array(0 => 91, 1 => 2),
1307        array(0 => 91, 1 => 3),
1308        array(0 => 105, 1 => 2),
1309        array(0 => 105, 1 => 1),
1310        array(0 => 106, 1 => 3),
1311        array(0 => 106, 1 => 3),
1312        array(0 => 106, 1 => 1),
1313        array(0 => 106, 1 => 3),
1314        array(0 => 106, 1 => 3),
1315        array(0 => 106, 1 => 1),
1316        array(0 => 106, 1 => 1),
1317    );
1318
1319    public static $yyReduceMap      = array(
1320        0   => 0,
1321        1   => 1,
1322        2   => 2,
1323        3   => 3,
1324        4   => 4,
1325        5   => 5,
1326        6   => 6,
1327        7   => 7,
1328        22  => 7,
1329        23  => 7,
1330        24  => 7,
1331        37  => 7,
1332        57  => 7,
1333        58  => 7,
1334        66  => 7,
1335        67  => 7,
1336        71  => 7,
1337        80  => 7,
1338        85  => 7,
1339        86  => 7,
1340        91  => 7,
1341        95  => 7,
1342        96  => 7,
1343        100 => 7,
1344        102 => 7,
1345        107 => 7,
1346        169 => 7,
1347        174 => 7,
1348        8   => 8,
1349        9   => 9,
1350        10  => 10,
1351        12  => 12,
1352        13  => 13,
1353        14  => 14,
1354        15  => 15,
1355        16  => 16,
1356        17  => 17,
1357        18  => 18,
1358        19  => 19,
1359        20  => 20,
1360        21  => 21,
1361        25  => 25,
1362        26  => 26,
1363        27  => 27,
1364        28  => 28,
1365        29  => 29,
1366        30  => 30,
1367        31  => 31,
1368        32  => 32,
1369        34  => 32,
1370        33  => 33,
1371        35  => 35,
1372        36  => 36,
1373        38  => 38,
1374        39  => 39,
1375        40  => 40,
1376        41  => 41,
1377        42  => 42,
1378        43  => 43,
1379        44  => 44,
1380        45  => 45,
1381        46  => 46,
1382        47  => 47,
1383        48  => 48,
1384        49  => 49,
1385        50  => 50,
1386        51  => 51,
1387        60  => 51,
1388        149 => 51,
1389        153 => 51,
1390        157 => 51,
1391        158 => 51,
1392        52  => 52,
1393        150 => 52,
1394        156 => 52,
1395        53  => 53,
1396        54  => 54,
1397        55  => 54,
1398        56  => 56,
1399        134 => 56,
1400        59  => 59,
1401        61  => 61,
1402        62  => 62,
1403        63  => 62,
1404        64  => 64,
1405        65  => 65,
1406        68  => 68,
1407        69  => 69,
1408        70  => 69,
1409        72  => 72,
1410        99  => 72,
1411        73  => 73,
1412        74  => 74,
1413        75  => 75,
1414        76  => 76,
1415        77  => 77,
1416        78  => 78,
1417        79  => 79,
1418        81  => 81,
1419        83  => 81,
1420        84  => 81,
1421        114 => 81,
1422        82  => 82,
1423        87  => 87,
1424        88  => 88,
1425        89  => 89,
1426        90  => 90,
1427        92  => 92,
1428        93  => 93,
1429        94  => 93,
1430        97  => 97,
1431        98  => 98,
1432        101 => 101,
1433        103 => 103,
1434        104 => 104,
1435        105 => 105,
1436        106 => 106,
1437        108 => 108,
1438        109 => 109,
1439        110 => 110,
1440        111 => 111,
1441        112 => 112,
1442        113 => 113,
1443        115 => 115,
1444        171 => 115,
1445        116 => 116,
1446        117 => 117,
1447        118 => 118,
1448        119 => 119,
1449        120 => 120,
1450        121 => 121,
1451        129 => 121,
1452        122 => 122,
1453        123 => 123,
1454        124 => 124,
1455        125 => 124,
1456        127 => 124,
1457        128 => 124,
1458        126 => 126,
1459        130 => 130,
1460        131 => 131,
1461        132 => 132,
1462        175 => 132,
1463        133 => 133,
1464        135 => 135,
1465        136 => 136,
1466        137 => 137,
1467        138 => 138,
1468        139 => 139,
1469        140 => 140,
1470        141 => 141,
1471        142 => 142,
1472        143 => 143,
1473        144 => 144,
1474        145 => 145,
1475        146 => 146,
1476        147 => 147,
1477        148 => 148,
1478        151 => 151,
1479        152 => 152,
1480        154 => 154,
1481        155 => 155,
1482        159 => 159,
1483        160 => 160,
1484        161 => 161,
1485        162 => 162,
1486        163 => 163,
1487        164 => 164,
1488        165 => 165,
1489        166 => 166,
1490        167 => 167,
1491        168 => 168,
1492        170 => 170,
1493        172 => 172,
1494        173 => 173,
1495        176 => 176,
1496        177 => 177,
1497        178 => 178,
1498        179 => 179,
1499        182 => 179,
1500        180 => 180,
1501        183 => 180,
1502        181 => 181,
1503        184 => 184,
1504        185 => 185,
1505    );
1506
1507    /**
1508     * result status
1509     *
1510     * @var bool
1511     */
1512    public $successful = true;
1513
1514    /**
1515     * return value
1516     *
1517     * @var mixed
1518     */
1519    public $retvalue = 0;
1520
1521    /**
1522     * @var
1523     */
1524    public $yymajor;
1525
1526    /**
1527     * last index of array variable
1528     *
1529     * @var mixed
1530     */
1531    public $last_index;
1532
1533    /**
1534     * last variable name
1535     *
1536     * @var string
1537     */
1538    public $last_variable;
1539
1540    /**
1541     * root parse tree buffer
1542     *
1543     * @var Smarty_Internal_ParseTree_Template
1544     */
1545    public $root_buffer;
1546
1547    /**
1548     * current parse tree object
1549     *
1550     * @var Smarty_Internal_ParseTree
1551     */
1552    public $current_buffer;
1553
1554    /**
1555     * lexer object
1556     *
1557     * @var Smarty_Internal_Templatelexer
1558     */
1559    public $lex;
1560
1561    /**
1562     * {strip} status
1563     *
1564     * @var bool
1565     */
1566    public $strip = false;
1567
1568    /**
1569     * compiler object
1570     *
1571     * @var Smarty_Internal_TemplateCompilerBase
1572     */
1573    public $compiler = null;
1574
1575    /**
1576     * smarty object
1577     *
1578     * @var Smarty
1579     */
1580    public $smarty = null;
1581
1582    /**
1583     * template object
1584     *
1585     * @var Smarty_Internal_Template
1586     */
1587    public $template = null;
1588
1589    /**
1590     * block nesting level
1591     *
1592     * @var int
1593     */
1594    public $block_nesting_level = 0;
1595
1596    /**
1597     * security object
1598     *
1599     * @var Smarty_Security
1600     */
1601    public $security = null;
1602
1603    /**
1604     * template prefix array
1605     *
1606     * @var \Smarty_Internal_ParseTree[]
1607     */
1608    public $template_prefix = array();
1609
1610    /**
1611     * template prefix array
1612     *
1613     * @var \Smarty_Internal_ParseTree[]
1614     */
1615    public $template_postfix = array();
1616
1617    public $yyTraceFILE;
1618
1619    public $yyTracePrompt;
1620
1621    public $yyidx;
1622
1623    public $yyerrcnt;
1624
1625    public $yystack          = array();
1626
1627    public $yyTokenName      = array(
1628        '$', 'VERT', 'COLON', 'UNIMATH',
1629        'PHP', 'TEXT', 'STRIPON', 'STRIPOFF',
1630        'LITERALSTART', 'LITERALEND', 'LITERAL', 'SIMPELOUTPUT',
1631        'SIMPLETAG', 'SMARTYBLOCKCHILDPARENT', 'LDEL', 'RDEL',
1632        'DOLLARID', 'EQUAL', 'ID', 'PTR',
1633        'LDELMAKENOCACHE', 'LDELIF', 'LDELFOR', 'SEMICOLON',
1634        'INCDEC', 'TO', 'STEP', 'LDELFOREACH',
1635        'SPACE', 'AS', 'APTR', 'LDELSETFILTER',
1636        'CLOSETAG', 'LDELSLASH', 'ATTR', 'INTEGER',
1637        'COMMA', 'OPENP', 'CLOSEP', 'MATH',
1638        'ISIN', 'QMARK', 'NOT', 'TYPECAST',
1639        'HEX', 'DOT', 'INSTANCEOF', 'SINGLEQUOTESTRING',
1640        'DOUBLECOLON', 'NAMESPACE', 'AT', 'HATCH',
1641        'OPENB', 'CLOSEB', 'DOLLAR', 'LOGOP',
1642        'SLOGOP', 'TLOGOP', 'SINGLECOND', 'QUOTE',
1643        'BACKTICK', 'error', 'start', 'template',
1644        'literal_e2', 'literal_e1', 'smartytag', 'tagbody',
1645        'tag', 'outattr', 'eqoutattr', 'varindexed',
1646        'output', 'attributes', 'variable', 'value',
1647        'expr', 'modifierlist', 'statement', 'statements',
1648        'foraction', 'varvar', 'modparameters', 'attribute',
1649        'ternary', 'array', 'tlop', 'lop',
1650        'scond', 'function', 'ns1', 'doublequoted_with_quotes',
1651        'static_class_access', 'object', 'arrayindex', 'indexdef',
1652        'varvarele', 'objectchain', 'objectelement', 'method',
1653        'params', 'modifier', 'modparameter', 'arrayelements',
1654        'arrayelement', 'doublequoted', 'doublequotedcontent',
1655    );
1656
1657    /**
1658     * internal error flag
1659     *
1660     * @var bool
1661     */
1662    private $internalError = false;                    /* Index of top element in stack */
1663    private $_retvalue;                 /* Shifts left before out of the error */
1664    /**
1665     * constructor
1666     *
1667     * @param Smarty_Internal_Templatelexer        $lex
1668     * @param Smarty_Internal_TemplateCompilerBase $compiler
1669     */
1670    public function __construct(Smarty_Internal_Templatelexer $lex, Smarty_Internal_TemplateCompilerBase $compiler)
1671    {
1672        $this->lex = $lex;
1673        $this->compiler = $compiler;
1674        $this->template = $this->compiler->template;
1675        $this->smarty = $this->template->smarty;
1676        $this->security = isset($this->smarty->security_policy) ? $this->smarty->security_policy : false;
1677        $this->current_buffer = $this->root_buffer = new Smarty_Internal_ParseTree_Template();
1678    }  /* The parser's stack */
1679    public static function yy_destructor($yymajor, $yypminor)
1680    {
1681        switch ($yymajor) {
1682            default:
1683                break;   /* If no destructor action specified: do nothing */
1684        }
1685    }
1686
1687    /**
1688     * insert PHP code in current buffer
1689     *
1690     * @param string $code
1691     */
1692    public function insertPhpCode($code)
1693    {
1694        $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Tag($this, $code));
1695    }
1696
1697    /**
1698     * error rundown
1699     *
1700     */
1701    public function errorRunDown()
1702    {
1703        while ($this->yystack !== array()) {
1704            $this->yy_pop_parser_stack();
1705        }
1706        if (is_resource($this->yyTraceFILE)) {
1707            fclose($this->yyTraceFILE);
1708        }
1709    }
1710
1711    /**
1712     *  merge PHP code with prefix code and return parse tree tag object
1713     *
1714     * @param string $code
1715     *
1716     * @return Smarty_Internal_ParseTree_Tag
1717     */
1718    public function mergePrefixCode($code)
1719    {
1720        $tmp = '';
1721        foreach ($this->compiler->prefix_code as $preCode) {
1722            $tmp .= $preCode;
1723        }
1724        $this->compiler->prefix_code = array();
1725        $tmp .= $code;
1726        return new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp, true));
1727    }
1728
1729    public function Trace($TraceFILE, $zTracePrompt)
1730    {
1731        if (!$TraceFILE) {
1732            $zTracePrompt = 0;
1733        } elseif (!$zTracePrompt) {
1734            $TraceFILE = 0;
1735        }
1736        $this->yyTraceFILE = $TraceFILE;
1737        $this->yyTracePrompt = $zTracePrompt;
1738    }
1739
1740    public function PrintTrace()
1741    {
1742        $this->yyTraceFILE = fopen('php://output', 'w');
1743        $this->yyTracePrompt = '<br>';
1744    }
1745
1746    public function tokenName($tokenType)
1747    {
1748        if ($tokenType === 0) {
1749            return 'End of Input';
1750        }
1751        if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
1752            return $this->yyTokenName[ $tokenType ];
1753        } else {
1754            return 'Unknown';
1755        }
1756    }
1757
1758    public function yy_pop_parser_stack()
1759    {
1760        if (empty($this->yystack)) {
1761            return;
1762        }
1763        $yytos = array_pop($this->yystack);
1764        if ($this->yyTraceFILE && $this->yyidx >= 0) {
1765            fwrite(
1766                $this->yyTraceFILE,
1767                $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[ $yytos->major ] .
1768                "\n"
1769            );
1770        }
1771        $yymajor = $yytos->major;
1772        self::yy_destructor($yymajor, $yytos->minor);
1773        $this->yyidx--;
1774        return $yymajor;
1775    }
1776
1777    public function __destruct()
1778    {
1779        while ($this->yystack !== array()) {
1780            $this->yy_pop_parser_stack();
1781        }
1782        if (is_resource($this->yyTraceFILE)) {
1783            fclose($this->yyTraceFILE);
1784        }
1785    }
1786
1787    public function yy_get_expected_tokens($token)
1788    {
1789        static $res3 = array();
1790        static $res4 = array();
1791        $state = $this->yystack[ $this->yyidx ]->stateno;
1792        $expected = self::$yyExpectedTokens[ $state ];
1793        if (isset($res3[ $state ][ $token ])) {
1794            if ($res3[ $state ][ $token ]) {
1795                return $expected;
1796            }
1797        } else {
1798            if ($res3[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
1799                return $expected;
1800            }
1801        }
1802        $stack = $this->yystack;
1803        $yyidx = $this->yyidx;
1804        do {
1805            $yyact = $this->yy_find_shift_action($token);
1806            if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
1807                // reduce action
1808                $done = 0;
1809                do {
1810                    if ($done++ === 100) {
1811                        $this->yyidx = $yyidx;
1812                        $this->yystack = $stack;
1813                        // too much recursion prevents proper detection
1814                        // so give up
1815                        return array_unique($expected);
1816                    }
1817                    $yyruleno = $yyact - self::YYNSTATE;
1818                    $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
1819                    $nextstate = $this->yy_find_reduce_action(
1820                        $this->yystack[ $this->yyidx ]->stateno,
1821                        self::$yyRuleInfo[ $yyruleno ][ 0 ]
1822                    );
1823                    if (isset(self::$yyExpectedTokens[ $nextstate ])) {
1824                        $expected = array_merge($expected, self::$yyExpectedTokens[ $nextstate ]);
1825                        if (isset($res4[ $nextstate ][ $token ])) {
1826                            if ($res4[ $nextstate ][ $token ]) {
1827                                $this->yyidx = $yyidx;
1828                                $this->yystack = $stack;
1829                                return array_unique($expected);
1830                            }
1831                        } else {
1832                            if ($res4[ $nextstate ][ $token ] =
1833                                in_array($token, self::$yyExpectedTokens[ $nextstate ], true)) {
1834                                $this->yyidx = $yyidx;
1835                                $this->yystack = $stack;
1836                                return array_unique($expected);
1837                            }
1838                        }
1839                    }
1840                    if ($nextstate < self::YYNSTATE) {
1841                        // we need to shift a non-terminal
1842                        $this->yyidx++;
1843                        $x = new TP_yyStackEntry;
1844                        $x->stateno = $nextstate;
1845                        $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
1846                        $this->yystack[ $this->yyidx ] = $x;
1847                        continue 2;
1848                    } elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) {
1849                        $this->yyidx = $yyidx;
1850                        $this->yystack = $stack;
1851                        // the last token was just ignored, we can't accept
1852                        // by ignoring input, this is in essence ignoring a
1853                        // syntax error!
1854                        return array_unique($expected);
1855                    } elseif ($nextstate === self::YY_NO_ACTION) {
1856                        $this->yyidx = $yyidx;
1857                        $this->yystack = $stack;
1858                        // input accepted, but not shifted (I guess)
1859                        return $expected;
1860                    } else {
1861                        $yyact = $nextstate;
1862                    }
1863                } while (true);
1864            }
1865            break;
1866        } while (true);
1867        $this->yyidx = $yyidx;
1868        $this->yystack = $stack;
1869        return array_unique($expected);
1870    }
1871
1872    public function yy_is_expected_token($token)
1873    {
1874        static $res = array();
1875        static $res2 = array();
1876        if ($token === 0) {
1877            return true; // 0 is not part of this
1878        }
1879        $state = $this->yystack[ $this->yyidx ]->stateno;
1880        if (isset($res[ $state ][ $token ])) {
1881            if ($res[ $state ][ $token ]) {
1882                return true;
1883            }
1884        } else {
1885            if ($res[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
1886                return true;
1887            }
1888        }
1889        $stack = $this->yystack;
1890        $yyidx = $this->yyidx;
1891        do {
1892            $yyact = $this->yy_find_shift_action($token);
1893            if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
1894                // reduce action
1895                $done = 0;
1896                do {
1897                    if ($done++ === 100) {
1898                        $this->yyidx = $yyidx;
1899                        $this->yystack = $stack;
1900                        // too much recursion prevents proper detection
1901                        // so give up
1902                        return true;
1903                    }
1904                    $yyruleno = $yyact - self::YYNSTATE;
1905                    $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
1906                    $nextstate = $this->yy_find_reduce_action(
1907                        $this->yystack[ $this->yyidx ]->stateno,
1908                        self::$yyRuleInfo[ $yyruleno ][ 0 ]
1909                    );
1910                    if (isset($res2[ $nextstate ][ $token ])) {
1911                        if ($res2[ $nextstate ][ $token ]) {
1912                            $this->yyidx = $yyidx;
1913                            $this->yystack = $stack;
1914                            return true;
1915                        }
1916                    } else {
1917                        if ($res2[ $nextstate ][ $token ] =
1918                            (isset(self::$yyExpectedTokens[ $nextstate ]) &&
1919                             in_array($token, self::$yyExpectedTokens[ $nextstate ], true))) {
1920                            $this->yyidx = $yyidx;
1921                            $this->yystack = $stack;
1922                            return true;
1923                        }
1924                    }
1925                    if ($nextstate < self::YYNSTATE) {
1926                        // we need to shift a non-terminal
1927                        $this->yyidx++;
1928                        $x = new TP_yyStackEntry;
1929                        $x->stateno = $nextstate;
1930                        $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
1931                        $this->yystack[ $this->yyidx ] = $x;
1932                        continue 2;
1933                    } elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) {
1934                        $this->yyidx = $yyidx;
1935                        $this->yystack = $stack;
1936                        if (!$token) {
1937                            // end of input: this is valid
1938                            return true;
1939                        }
1940                        // the last token was just ignored, we can't accept
1941                        // by ignoring input, this is in essence ignoring a
1942                        // syntax error!
1943                        return false;
1944                    } elseif ($nextstate === self::YY_NO_ACTION) {
1945                        $this->yyidx = $yyidx;
1946                        $this->yystack = $stack;
1947                        // input accepted, but not shifted (I guess)
1948                        return true;
1949                    } else {
1950                        $yyact = $nextstate;
1951                    }
1952                } while (true);
1953            }
1954            break;
1955        } while (true);
1956        $this->yyidx = $yyidx;
1957        $this->yystack = $stack;
1958        return true;
1959    }
1960
1961    public function yy_find_shift_action($iLookAhead)
1962    {
1963        $stateno = $this->yystack[ $this->yyidx ]->stateno;
1964        /* if ($this->yyidx < 0) return self::YY_NO_ACTION;  */
1965        if (!isset(self::$yy_shift_ofst[ $stateno ])) {
1966            // no shift actions
1967            return self::$yy_default[ $stateno ];
1968        }
1969        $i = self::$yy_shift_ofst[ $stateno ];
1970        if ($i === self::YY_SHIFT_USE_DFLT) {
1971            return self::$yy_default[ $stateno ];
1972        }
1973        if ($iLookAhead === self::YYNOCODE) {
1974            return self::YY_NO_ACTION;
1975        }
1976        $i += $iLookAhead;
1977        if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
1978            self::$yy_lookahead[ $i ] != $iLookAhead) {
1979            if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback)
1980                && ($iFallback = self::$yyFallback[ $iLookAhead ]) != 0) {
1981                if ($this->yyTraceFILE) {
1982                    fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'FALLBACK ' .
1983                                               $this->yyTokenName[ $iLookAhead ] . ' => ' .
1984                                               $this->yyTokenName[ $iFallback ] . "\n");
1985                }
1986                return $this->yy_find_shift_action($iFallback);
1987            }
1988            return self::$yy_default[ $stateno ];
1989        } else {
1990            return self::$yy_action[ $i ];
1991        }
1992    }
1993
1994    public function yy_find_reduce_action($stateno, $iLookAhead)
1995    {
1996        /* $stateno = $this->yystack[$this->yyidx]->stateno; */
1997        if (!isset(self::$yy_reduce_ofst[ $stateno ])) {
1998            return self::$yy_default[ $stateno ];
1999        }
2000        $i = self::$yy_reduce_ofst[ $stateno ];
2001        if ($i === self::YY_REDUCE_USE_DFLT) {
2002            return self::$yy_default[ $stateno ];
2003        }
2004        if ($iLookAhead === self::YYNOCODE) {
2005            return self::YY_NO_ACTION;
2006        }
2007        $i += $iLookAhead;
2008        if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
2009            self::$yy_lookahead[ $i ] != $iLookAhead) {
2010            return self::$yy_default[ $stateno ];
2011        } else {
2012            return self::$yy_action[ $i ];
2013        }
2014    }
2015
2016    // line 234 "../smarty/lexer/smarty_internal_templateparser.y"
2017    public function yy_shift($yyNewState, $yyMajor, $yypMinor)
2018    {
2019        $this->yyidx++;
2020        if ($this->yyidx >= self::YYSTACKDEPTH) {
2021            $this->yyidx--;
2022            if ($this->yyTraceFILE) {
2023                fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt);
2024            }
2025            while ($this->yyidx >= 0) {
2026                $this->yy_pop_parser_stack();
2027            }
2028            // line 221 "../smarty/lexer/smarty_internal_templateparser.y"
2029            $this->internalError = true;
2030            $this->compiler->trigger_template_error('Stack overflow in template parser');
2031            return;
2032        }
2033        $yytos = new TP_yyStackEntry;
2034        $yytos->stateno = $yyNewState;
2035        $yytos->major = $yyMajor;
2036        $yytos->minor = $yypMinor;
2037        $this->yystack[] = $yytos;
2038        if ($this->yyTraceFILE && $this->yyidx > 0) {
2039            fprintf(
2040                $this->yyTraceFILE,
2041                "%sShift %d\n",
2042                $this->yyTracePrompt,
2043                $yyNewState
2044            );
2045            fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
2046            for ($i = 1; $i <= $this->yyidx; $i++) {
2047                fprintf(
2048                    $this->yyTraceFILE,
2049                    " %s",
2050                    $this->yyTokenName[ $this->yystack[ $i ]->major ]
2051                );
2052            }
2053            fwrite($this->yyTraceFILE, "\n");
2054        }
2055    }
2056
2057    // line 242 "../smarty/lexer/smarty_internal_templateparser.y"
2058    public function yy_r0()
2059    {
2060        $this->root_buffer->prepend_array($this, $this->template_prefix);
2061        $this->root_buffer->append_array($this, $this->template_postfix);
2062        $this->_retvalue = $this->root_buffer->to_smarty_php($this);
2063    }
2064
2065    // line 251 "../smarty/lexer/smarty_internal_templateparser.y"
2066    public function yy_r1()
2067    {
2068        $code =
2069            $this->compiler->compileTag('private_php',
2070                array(array('code' => $this->yystack[ $this->yyidx + 0 ]->minor), array('type' => $this->lex->phpType)),
2071                array());
2072        if ($this->compiler->has_code && !empty($code)) {
2073            $tmp = '';
2074            foreach ($this->compiler->prefix_code as $code) {
2075                $tmp .= $code;
2076            }
2077            $this->compiler->prefix_code = array();
2078            $this->current_buffer->append_subtree($this,
2079                new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp . $code, true)));
2080        }
2081    }
2082
2083    // line 255 "../smarty/lexer/smarty_internal_templateparser.y"
2084    public function yy_r2()
2085    {
2086        $this->current_buffer->append_subtree($this,
2087            $this->compiler->processText($this->yystack[ $this->yyidx + 0 ]->minor));
2088    }
2089
2090    // line 259 "../smarty/lexer/smarty_internal_templateparser.y"
2091    public function yy_r3()
2092    {
2093        $this->strip = true;
2094    }
2095
2096    // line 264 "../smarty/lexer/smarty_internal_templateparser.y"
2097    public function yy_r4()
2098    {
2099        $this->strip = false;
2100    }
2101
2102    // line 269 "../smarty/lexer/smarty_internal_templateparser.y"
2103    public function yy_r5()
2104    {
2105        $this->current_buffer->append_subtree($this,
2106            new Smarty_Internal_ParseTree_Text($this->yystack[ $this->yyidx + -1 ]->minor));
2107    }
2108
2109    // line 272 "../smarty/lexer/smarty_internal_templateparser.y"
2110    public function yy_r6()
2111    {
2112        $this->_retvalue = $this->yystack[ $this->yyidx + -3 ]->minor . $this->yystack[ $this->yyidx + -1 ]->minor;
2113    }
2114
2115    // line 276 "../smarty/lexer/smarty_internal_templateparser.y"
2116    public function yy_r7()
2117    {
2118        $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
2119    }
2120
2121    // line 281 "../smarty/lexer/smarty_internal_templateparser.y"
2122    public function yy_r8()
2123    {
2124        $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
2125    }
2126
2127    // line 285 "../smarty/lexer/smarty_internal_templateparser.y"
2128    public function yy_r9()
2129    {
2130        $this->_retvalue = '';
2131    }
2132
2133    // line 297 "../smarty/lexer/smarty_internal_templateparser.y"
2134    public function yy_r10()
2135    {
2136        if ($this->compiler->has_code) {
2137            $this->current_buffer->append_subtree($this,
2138                $this->mergePrefixCode($this->yystack[ $this->yyidx + 0 ]->minor));
2139        }
2140        $this->compiler->has_variable_string = false;
2141        $this->block_nesting_level = count($this->compiler->_tag_stack);
2142    }
2143
2144    // line 307 "../smarty/lexer/smarty_internal_templateparser.y"
2145    public function yy_r12()
2146    {
2147        $var =
2148            trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler->getLdelLength(),
2149                -$this->compiler->getRdelLength()), ' $');
2150        if (preg_match('/^(.*)(\s+nocache)$/', $var, $match)) {
2151            $this->_retvalue =
2152                $this->compiler->compileTag('private_print_expression', array('nocache'),
2153                    array('value' => $this->compiler->compileVariable('\'' . $match[ 1 ] . '\'')));
2154        } else {
2155            $this->_retvalue =
2156                $this->compiler->compileTag('private_print_expression', array(),
2157                    array('value' => $this->compiler->compileVariable('\'' . $var . '\'')));
2158        }
2159    }
2160
2161    // line 328 "../smarty/lexer/smarty_internal_templateparser.y"
2162    public function yy_r13()
2163    {
2164        $tag =
2165            trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler->getLdelLength(),
2166                -$this->compiler->getRdelLength()));
2167        if ($tag == 'strip') {
2168            $this->strip = true;
2169            $this->_retvalue = null;;
2170        } else {
2171            if (defined($tag)) {
2172                if ($this->security) {
2173                    $this->security->isTrustedConstant($tag, $this->compiler);
2174                }
2175                $this->_retvalue =
2176                    $this->compiler->compileTag('private_print_expression', array(), array('value' => $tag));
2177            } else {
2178                if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) {
2179                    $this->_retvalue = $this->compiler->compileTag($match[ 1 ], array('\'nocache\''));
2180                } else {
2181                    $this->_retvalue = $this->compiler->compileTag($tag, array());
2182                }
2183            }
2184        }
2185    }
2186
2187    // line 339 "../smarty/lexer/smarty_internal_templateparser.y"
2188    public function yy_r14()
2189    {
2190        $j = strrpos($this->yystack[ $this->yyidx + 0 ]->minor, '.');
2191        if ($this->yystack[ $this->yyidx + 0 ]->minor[ $j + 1 ] == 'c') {
2192            // {$smarty.block.child}
2193            $this->_retvalue =
2194                $this->compiler->compileTag('child', array(), array($this->yystack[ $this->yyidx + 0 ]->minor));
2195        } else {
2196            // {$smarty.block.parent}
2197            $this->_retvalue =
2198                $this->compiler->compileTag('parent', array(), array($this->yystack[ $this->yyidx + 0 ]->minor));
2199        }
2200    }
2201
2202    // line 343 "../smarty/lexer/smarty_internal_templateparser.y"
2203    public function yy_r15()
2204    {
2205        $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor;
2206    }
2207
2208    // line 347 "../smarty/lexer/smarty_internal_templateparser.y"
2209    public function yy_r16()
2210    {
2211        $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor;
2212    }
2213
2214    // line 356 "../smarty/lexer/smarty_internal_templateparser.y"
2215    public function yy_r17()
2216    {
2217        $this->_retvalue =
2218            $this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ],
2219                array('value' => $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ]));
2220    }
2221
2222    // line 360 "../smarty/lexer/smarty_internal_templateparser.y"
2223    public function yy_r18()
2224    {
2225        $this->_retvalue =
2226            $this->compiler->compileTag('assign', array_merge(array(
2227                array('value' => $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ]),
2228                array('var' => '\'' . substr($this->yystack[ $this->yyidx + -1 ]->minor, 1) . '\'')
2229            ), $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ]));
2230    }
2231
2232    // line 364 "../smarty/lexer/smarty_internal_templateparser.y"
2233    public function yy_r19()
2234    {
2235        $this->_retvalue =
2236            $this->compiler->compileTag('assign', array_merge(array(
2237                array('value' => $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ]),
2238                array('var' => $this->yystack[ $this->yyidx + -1 ]->minor[ 'var' ])
2239            ), $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ]), array(
2240                'smarty_internal_index' => $this->yystack[ $this->yyidx +
2241                                                           -1 ]->minor[ 'smarty_internal_index' ]
2242            ));
2243    }
2244
2245    // line 368 "../smarty/lexer/smarty_internal_templateparser.y"
2246    public function yy_r20()
2247    {
2248        $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
2249    }
2250
2251    // line 383 "../smarty/lexer/smarty_internal_templateparser.y"
2252    public function yy_r21()
2253    {
2254        $this->_retvalue = array($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor);
2255    }
2256
2257    // line 393 "../smarty/lexer/smarty_internal_templateparser.y"
2258    public function yy_r25()
2259    {
2260        if (defined($this->yystack[ $this->yyidx + -1 ]->minor)) {
2261            if ($this->security) {
2262                $this->security->isTrustedConstant($this->yystack[ $this->yyidx + -1 ]->minor, $this->compiler);
2263            }
2264            $this->_retvalue =
2265                $this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor,
2266                    array('value' => $this->yystack[ $this->yyidx + -1 ]->minor));
2267        } else {
2268            $this->_retvalue =
2269                $this->compiler->compileTag($this->yystack[ $this->yyidx + -1 ]->minor,
2270                    $this->yystack[ $this->yyidx + 0 ]->minor);
2271        }
2272    }
2273
2274    // line 406 "../smarty/lexer/smarty_internal_templateparser.y"
2275    public function yy_r26()
2276    {
2277        if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
2278            if ($this->security) {
2279                $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
2280            }
2281            $this->_retvalue =
2282                $this->compiler->compileTag('private_print_expression', array(),
2283                    array('value' => $this->yystack[ $this->yyidx + 0 ]->minor));
2284        } else {
2285            $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + 0 ]->minor, array());
2286        }
2287    }
2288
2289    // line 418 "../smarty/lexer/smarty_internal_templateparser.y"
2290    public function yy_r27()
2291    {
2292        if (defined($this->yystack[ $this->yyidx + -2 ]->minor)) {
2293            if ($this->security) {
2294                $this->security->isTrustedConstant($this->yystack[ $this->yyidx + -2 ]->minor, $this->compiler);
2295            }
2296            $this->_retvalue =
2297                $this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor,
2298                    array(
2299                        'value'        => $this->yystack[ $this->yyidx + -2 ]->minor,
2300                        'modifierlist' => $this->yystack[ $this->yyidx + -1 ]->minor
2301                    ));
2302        } else {
2303            $this->_retvalue =
2304                $this->compiler->compileTag($this->yystack[ $this->yyidx + -2 ]->minor,
2305                    $this->yystack[ $this->yyidx + 0 ]->minor,
2306                    array('modifierlist' => $this->yystack[ $this->yyidx + -1 ]->minor));
2307        }
2308    }
2309
2310    // line 423 "../smarty/lexer/smarty_internal_templateparser.y"
2311    public function yy_r28()
2312    {
2313        $this->_retvalue =
2314            $this->compiler->compileTag($this->yystack[ $this->yyidx + -3 ]->minor,
2315                $this->yystack[ $this->yyidx + 0 ]->minor,
2316                array('object_method' => $this->yystack[ $this->yyidx + -1 ]->minor));
2317    }
2318
2319    // line 428 "../smarty/lexer/smarty_internal_templateparser.y"
2320    public function yy_r29()
2321    {
2322        $this->_retvalue =
2323            $this->compiler->compileTag($this->yystack[ $this->yyidx + -4 ]->minor,
2324                $this->yystack[ $this->yyidx + 0 ]->minor, array(
2325                    'modifierlist'  => $this->yystack[ $this->yyidx + -1 ]->minor,
2326                    'object_method' => $this->yystack[ $this->yyidx + -2 ]->minor
2327                ));
2328    }
2329
2330    // line 433 "../smarty/lexer/smarty_internal_templateparser.y"
2331    public function yy_r30()
2332    {
2333        $this->_retvalue =
2334            $this->compiler->compileTag('make_nocache',
2335                array(array('var' => '\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'')));
2336    }
2337
2338    // line 438 "../smarty/lexer/smarty_internal_templateparser.y"
2339    public function yy_r31()
2340    {
2341        $tag = trim(substr($this->yystack[ $this->yyidx + -1 ]->minor, $this->compiler->getLdelLength()));
2342        $this->_retvalue =
2343            $this->compiler->compileTag(($tag === 'else if') ? 'elseif' : $tag, array(),
2344                array('if condition' => $this->yystack[ $this->yyidx + 0 ]->minor));
2345    }
2346
2347    // line 443 "../smarty/lexer/smarty_internal_templateparser.y"
2348    public function yy_r32()
2349    {
2350        $tag = trim(substr($this->yystack[ $this->yyidx + -2 ]->minor, $this->compiler->getLdelLength()));
2351        $this->_retvalue =
2352            $this->compiler->compileTag(($tag === 'else if') ? 'elseif' : $tag,
2353                $this->yystack[ $this->yyidx + 0 ]->minor,
2354                array('if condition' => $this->yystack[ $this->yyidx + -1 ]->minor));
2355    }
2356
2357    // line 454 "../smarty/lexer/smarty_internal_templateparser.y"
2358    public function yy_r33()
2359    {
2360        $tag = trim(substr($this->yystack[ $this->yyidx + -1 ]->minor, $this->compiler->getLdelLength()));
2361        $this->_retvalue =
2362            $this->compiler->compileTag(($tag === 'else if') ? 'elseif' : $tag, array(),
2363                array('if condition' => $this->yystack[ $this->yyidx + 0 ]->minor));
2364    }
2365
2366    // line 458 "../smarty/lexer/smarty_internal_templateparser.y"
2367    public function yy_r35()
2368    {
2369        $this->_retvalue =
2370            $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor, array(
2371                array('start' => $this->yystack[ $this->yyidx + -6 ]->minor),
2372                array('ifexp' => $this->yystack[ $this->yyidx + -4 ]->minor),
2373                array('var' => $this->yystack[ $this->yyidx + -2 ]->minor),
2374                array('step' => $this->yystack[ $this->yyidx + -1 ]->minor)
2375            )), 1);
2376    }
2377
2378    // line 466 "../smarty/lexer/smarty_internal_templateparser.y"
2379    public function yy_r36()
2380    {
2381        $this->_retvalue = '=' . $this->yystack[ $this->yyidx + 0 ]->minor;
2382    }
2383
2384    // line 470 "../smarty/lexer/smarty_internal_templateparser.y"
2385    public function yy_r38()
2386    {
2387        $this->_retvalue =
2388            $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor, array(
2389                array('start' => $this->yystack[ $this->yyidx + -3 ]->minor),
2390                array('to' => $this->yystack[ $this->yyidx + -1 ]->minor)
2391            )), 0);
2392    }
2393
2394    // line 475 "../smarty/lexer/smarty_internal_templateparser.y"
2395    public function yy_r39()
2396    {
2397        $this->_retvalue =
2398            $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor, array(
2399                array('start' => $this->yystack[ $this->yyidx + -5 ]->minor),
2400                array('to' => $this->yystack[ $this->yyidx + -3 ]->minor),
2401                array('step' => $this->yystack[ $this->yyidx + -1 ]->minor)
2402            )), 0);
2403    }
2404
2405    // line 479 "../smarty/lexer/smarty_internal_templateparser.y"
2406    public function yy_r40()
2407    {
2408        $this->_retvalue =
2409            $this->compiler->compileTag('foreach', array_merge($this->yystack[ $this->yyidx + 0 ]->minor, array(
2410                array('from' => $this->yystack[ $this->yyidx + -3 ]->minor),
2411                array('item' => $this->yystack[ $this->yyidx + -1 ]->minor)
2412            )));
2413    }
2414
2415    // line 482 "../smarty/lexer/smarty_internal_templateparser.y"
2416    public function yy_r41()
2417    {
2418        $this->_retvalue =
2419            $this->compiler->compileTag('foreach', array_merge($this->yystack[ $this->yyidx + 0 ]->minor, array(
2420                array('from' => $this->yystack[ $this->yyidx + -5 ]->minor),
2421                array('item' => $this->yystack[ $this->yyidx + -1 ]->minor),
2422                array('key' => $this->yystack[ $this->yyidx + -3 ]->minor)
2423            )));
2424    }
2425
2426    // line 487 "../smarty/lexer/smarty_internal_templateparser.y"
2427    public function yy_r42()
2428    {
2429        $this->_retvalue = $this->compiler->compileTag('foreach', $this->yystack[ $this->yyidx + 0 ]->minor);
2430    }
2431
2432    // line 491 "../smarty/lexer/smarty_internal_templateparser.y"
2433    public function yy_r43()
2434    {
2435        $this->_retvalue =
2436            $this->compiler->compileTag('setfilter', array(), array(
2437                'modifier_list' => array(
2438                    array_merge(array($this->yystack[ $this->yyidx + -1 ]->minor),
2439                        $this->yystack[ $this->yyidx + 0 ]->minor)
2440                )
2441            ));
2442    }
2443
2444    // line 497 "../smarty/lexer/smarty_internal_templateparser.y"
2445    public function yy_r44()
2446    {
2447        $this->_retvalue =
2448            $this->compiler->compileTag('setfilter', array(), array(
2449                'modifier_list' => array_merge(array(
2450                    array_merge(array(
2451                        $this->yystack[ $this->yyidx +
2452                                        -2 ]->minor
2453                    ), $this->yystack[ $this->yyidx + -1 ]->minor)
2454                ), $this->yystack[ $this->yyidx + 0 ]->minor)
2455            ));
2456    }
2457
2458    // line 506 "../smarty/lexer/smarty_internal_templateparser.y"
2459    public function yy_r45()
2460    {
2461        $tag =
2462            trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler->getLdelLength(),
2463                -$this->compiler->getRdelLength()), ' /');
2464        if ($tag === 'strip') {
2465            $this->strip = false;
2466            $this->_retvalue = null;
2467        } else {
2468            $this->_retvalue = $this->compiler->compileTag($tag . 'close', array());
2469        }
2470    }
2471
2472    // line 510 "../smarty/lexer/smarty_internal_templateparser.y"
2473    public function yy_r46()
2474    {
2475        $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + 0 ]->minor . 'close', array());
2476    }
2477
2478    // line 515 "../smarty/lexer/smarty_internal_templateparser.y"
2479    public function yy_r47()
2480    {
2481        $this->_retvalue =
2482            $this->compiler->compileTag($this->yystack[ $this->yyidx + -1 ]->minor . 'close', array(),
2483                array('modifier_list' => $this->yystack[ $this->yyidx + 0 ]->minor));
2484    }
2485
2486    // line 519 "../smarty/lexer/smarty_internal_templateparser.y"
2487    public function yy_r48()
2488    {
2489        $this->_retvalue =
2490            $this->compiler->compileTag($this->yystack[ $this->yyidx + -2 ]->minor . 'close', array(),
2491                array('object_method' => $this->yystack[ $this->yyidx + 0 ]->minor));
2492    }
2493
2494    // line 527 "../smarty/lexer/smarty_internal_templateparser.y"
2495    public function yy_r49()
2496    {
2497        $this->_retvalue =
2498            $this->compiler->compileTag($this->yystack[ $this->yyidx + -3 ]->minor . 'close', array(), array(
2499                'object_method' => $this->yystack[ $this->yyidx + -1 ]->minor,
2500                'modifier_list' => $this->yystack[ $this->yyidx + 0 ]->minor
2501            ));
2502    }
2503
2504    // line 533 "../smarty/lexer/smarty_internal_templateparser.y"
2505    public function yy_r50()
2506    {
2507        $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor;
2508        $this->_retvalue[] = $this->yystack[ $this->yyidx + 0 ]->minor;
2509    }
2510
2511    // line 538 "../smarty/lexer/smarty_internal_templateparser.y"
2512    public function yy_r51()
2513    {
2514        $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor);
2515    }
2516
2517    // line 543 "../smarty/lexer/smarty_internal_templateparser.y"
2518    public function yy_r52()
2519    {
2520        $this->_retvalue = array();
2521    }
2522
2523    // line 554 "../smarty/lexer/smarty_internal_templateparser.y"
2524    public function yy_r53()
2525    {
2526        if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
2527            if ($this->security) {
2528                $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
2529            }
2530            $this->_retvalue =
2531                array($this->yystack[ $this->yyidx + -2 ]->minor => $this->yystack[ $this->yyidx + 0 ]->minor);
2532        } else {
2533            $this->_retvalue =
2534                array(
2535                    $this->yystack[ $this->yyidx + -2 ]->minor => '\'' .
2536                                                                  $this->yystack[ $this->yyidx + 0 ]->minor .
2537                                                                  '\''
2538                );
2539        }
2540    }
2541
2542    // line 562 "../smarty/lexer/smarty_internal_templateparser.y"
2543    public function yy_r54()
2544    {
2545        $this->_retvalue =
2546            array(
2547                trim($this->yystack[ $this->yyidx + -1 ]->minor, " =\n\r\t") => $this->yystack[ $this->yyidx +
2548                                                                                                0 ]->minor
2549            );
2550    }
2551
2552    // line 574 "../smarty/lexer/smarty_internal_templateparser.y"
2553    public function yy_r56()
2554    {
2555        $this->_retvalue = '\'' . $this->yystack[ $this->yyidx + 0 ]->minor . '\'';
2556    }
2557
2558    // line 587 "../smarty/lexer/smarty_internal_templateparser.y"
2559    public function yy_r59()
2560    {
2561        $this->_retvalue =
2562            array($this->yystack[ $this->yyidx + -2 ]->minor => $this->yystack[ $this->yyidx + 0 ]->minor);
2563    }
2564
2565    // line 592 "../smarty/lexer/smarty_internal_templateparser.y"
2566    public function yy_r61()
2567    {
2568        $this->yystack[ $this->yyidx + -2 ]->minor[] = $this->yystack[ $this->yyidx + 0 ]->minor;
2569        $this->_retvalue = $this->yystack[ $this->yyidx + -2 ]->minor;
2570    }
2571
2572    // line 599 "../smarty/lexer/smarty_internal_templateparser.y"
2573    public function yy_r62()
2574    {
2575        $this->_retvalue =
2576            array(
2577                'var'   => '\'' . substr($this->yystack[ $this->yyidx + -2 ]->minor, 1) . '\'',
2578                'value' => $this->yystack[ $this->yyidx + 0 ]->minor
2579            );
2580    }
2581
2582    // line 603 "../smarty/lexer/smarty_internal_templateparser.y"
2583    public function yy_r64()
2584    {
2585        $this->_retvalue =
2586            array(
2587                'var'   => $this->yystack[ $this->yyidx + -2 ]->minor,
2588                'value' => $this->yystack[ $this->yyidx + 0 ]->minor
2589            );
2590    }
2591
2592    // line 623 "../smarty/lexer/smarty_internal_templateparser.y"
2593    public function yy_r65()
2594    {
2595        $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor;
2596    }
2597
2598    // line 628 "../smarty/lexer/smarty_internal_templateparser.y"
2599    public function yy_r68()
2600    {
2601        $this->_retvalue =
2602            '$_smarty_tpl->getStreamVariable(\'' .
2603            substr($this->yystack[ $this->yyidx + -2 ]->minor, 1) .
2604            '://' .
2605            $this->yystack[ $this->yyidx + 0 ]->minor .
2606            '\')';
2607    }
2608
2609    // line 642 "../smarty/lexer/smarty_internal_templateparser.y"
2610    public function yy_r69()
2611    {
2612        $this->_retvalue =
2613            $this->yystack[ $this->yyidx + -2 ]->minor .
2614            trim($this->yystack[ $this->yyidx + -1 ]->minor) .
2615            $this->yystack[ $this->yyidx + 0 ]->minor;
2616    }
2617
2618    // line 648 "../smarty/lexer/smarty_internal_templateparser.y"
2619    public function yy_r72()
2620    {
2621        $this->_retvalue =
2622            $this->compiler->compileTag('private_modifier', array(), array(
2623                'value'        => $this->yystack[ $this->yyidx + -1 ]->minor,
2624                'modifierlist' => $this->yystack[ $this->yyidx + 0 ]->minor
2625            ));
2626    }
2627
2628    // line 652 "../smarty/lexer/smarty_internal_templateparser.y"
2629    public function yy_r73()
2630    {
2631        $this->_retvalue =
2632            $this->yystack[ $this->yyidx + -1 ]->minor[ 'pre' ] .
2633            $this->yystack[ $this->yyidx + -2 ]->minor .
2634            $this->yystack[ $this->yyidx + -1 ]->minor[ 'op' ] .
2635            $this->yystack[ $this->yyidx + 0 ]->minor .
2636            ')';
2637    }
2638
2639    // line 656 "../smarty/lexer/smarty_internal_templateparser.y"
2640    public function yy_r74()
2641    {
2642        $this->_retvalue =
2643            $this->yystack[ $this->yyidx + -2 ]->minor .
2644            $this->yystack[ $this->yyidx + -1 ]->minor .
2645            $this->yystack[ $this->yyidx + 0 ]->minor;
2646    }
2647
2648    // line 660 "../smarty/lexer/smarty_internal_templateparser.y"
2649    public function yy_r75()
2650    {
2651        $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor . $this->yystack[ $this->yyidx + -1 ]->minor . ')';
2652    }
2653
2654    // line 664 "../smarty/lexer/smarty_internal_templateparser.y"
2655    public function yy_r76()
2656    {
2657        $this->_retvalue =
2658            'in_array(' .
2659            $this->yystack[ $this->yyidx + -2 ]->minor .
2660            ',' .
2661            $this->yystack[ $this->yyidx + 0 ]->minor .
2662            ')';
2663    }
2664
2665    // line 672 "../smarty/lexer/smarty_internal_templateparser.y"
2666    public function yy_r77()
2667    {
2668        $this->_retvalue =
2669            'in_array(' .
2670            $this->yystack[ $this->yyidx + -2 ]->minor .
2671            ',(array)' .
2672            $this->yystack[ $this->yyidx + 0 ]->minor .
2673            ')';
2674    }
2675
2676    // line 676 "../smarty/lexer/smarty_internal_templateparser.y"
2677    public function yy_r78()
2678    {
2679        $this->_retvalue =
2680            $this->yystack[ $this->yyidx + -5 ]->minor .
2681            ' ? ' .
2682            $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + -2 ]->minor, 1) . '\'') .
2683            ' : ' .
2684            $this->yystack[ $this->yyidx + 0 ]->minor;
2685    }
2686
2687    // line 686 "../smarty/lexer/smarty_internal_templateparser.y"
2688    public function yy_r79()
2689    {
2690        $this->_retvalue =
2691            $this->yystack[ $this->yyidx + -5 ]->minor .
2692            ' ? ' .
2693            $this->yystack[ $this->yyidx + -2 ]->minor .
2694            ' : ' .
2695            $this->yystack[ $this->yyidx + 0 ]->minor;
2696    }
2697
2698    // line 691 "../smarty/lexer/smarty_internal_templateparser.y"
2699    public function yy_r81()
2700    {
2701        $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
2702    }
2703
2704    // line 712 "../smarty/lexer/smarty_internal_templateparser.y"
2705    public function yy_r82()
2706    {
2707        $this->_retvalue = '!' . $this->yystack[ $this->yyidx + 0 ]->minor;
2708    }
2709
2710    // line 716 "../smarty/lexer/smarty_internal_templateparser.y"
2711    public function yy_r87()
2712    {
2713        $this->_retvalue = $this->yystack[ $this->yyidx + -2 ]->minor . '.' . $this->yystack[ $this->yyidx + 0 ]->minor;
2714    }
2715
2716    // line 720 "../smarty/lexer/smarty_internal_templateparser.y"
2717    public function yy_r88()
2718    {
2719        $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor . '.';
2720    }
2721
2722    // line 725 "../smarty/lexer/smarty_internal_templateparser.y"
2723    public function yy_r89()
2724    {
2725        $this->_retvalue = '.' . $this->yystack[ $this->yyidx + 0 ]->minor;
2726    }
2727
2728    // line 742 "../smarty/lexer/smarty_internal_templateparser.y"
2729    public function yy_r90()
2730    {
2731        if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
2732            if ($this->security) {
2733                $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
2734            }
2735            $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
2736        } else {
2737            $this->_retvalue = '\'' . $this->yystack[ $this->yyidx + 0 ]->minor . '\'';
2738        }
2739    }
2740
2741    // line 746 "../smarty/lexer/smarty_internal_templateparser.y"
2742    public function yy_r92()
2743    {
2744        $this->_retvalue = '(' . $this->yystack[ $this->yyidx + -1 ]->minor . ')';
2745    }
2746
2747    // line 764 "../smarty/lexer/smarty_internal_templateparser.y"
2748    public function yy_r93()
2749    {
2750        $this->_retvalue =
2751            $this->yystack[ $this->yyidx + -2 ]->minor .
2752            $this->yystack[ $this->yyidx + -1 ]->minor .
2753            $this->yystack[ $this->yyidx + 0 ]->minor;
2754    }
2755
2756    // line 775 "../smarty/lexer/smarty_internal_templateparser.y"
2757    public function yy_r97()
2758    {
2759        $prefixVar = $this->compiler->getNewPrefixVariable();
2760        if ($this->yystack[ $this->yyidx + -2 ]->minor[ 'var' ] === '\'smarty\'') {
2761            $this->compiler->appendPrefixCode("<?php {$prefixVar} = " .
2762                                              $this->compiler->compileTag('private_special_variable', array(),
2763                                                  $this->yystack[ $this->yyidx +
2764                                                                  -2 ]->minor[ 'smarty_internal_index' ]) .
2765                                              ';?>');
2766        } else {
2767            $this->compiler->appendPrefixCode("<?php  {$prefixVar} = " .
2768                                              $this->compiler->compileVariable($this->yystack[ $this->yyidx +
2769                                                                                               -2 ]->minor[ 'var' ]) .
2770                                              $this->yystack[ $this->yyidx + -2 ]->minor[ 'smarty_internal_index' ] .
2771                                              ';?>');
2772        }
2773        $this->_retvalue =
2774            $prefixVar .
2775            '::' .
2776            $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] .
2777            $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ];
2778    }
2779
2780    // line 792 "../smarty/lexer/smarty_internal_templateparser.y"
2781    public function yy_r98()
2782    {
2783        $prefixVar = $this->compiler->getNewPrefixVariable();
2784        $tmp = $this->compiler->appendCode('<?php ob_start();?>', $this->yystack[ $this->yyidx + 0 ]->minor);
2785        $this->compiler->appendPrefixCode($this->compiler->appendCode($tmp, "<?php {$prefixVar} = ob_get_clean();?>"));
2786        $this->_retvalue = $prefixVar;
2787    }
2788
2789    // line 811 "../smarty/lexer/smarty_internal_templateparser.y"
2790    public function yy_r101()
2791    {
2792        if (!in_array(strtolower($this->yystack[ $this->yyidx + -2 ]->minor), array('self', 'parent')) &&
2793            (!$this->security ||
2794             $this->security->isTrustedStaticClassAccess($this->yystack[ $this->yyidx + -2 ]->minor,
2795                 $this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler))) {
2796            if (isset($this->smarty->registered_classes[ $this->yystack[ $this->yyidx + -2 ]->minor ])) {
2797                $this->_retvalue =
2798                    $this->smarty->registered_classes[ $this->yystack[ $this->yyidx + -2 ]->minor ] .
2799                    '::' .
2800                    $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] .
2801                    $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ];
2802            } else {
2803                $this->_retvalue =
2804                    $this->yystack[ $this->yyidx + -2 ]->minor .
2805                    '::' .
2806                    $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] .
2807                    $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ];
2808            }
2809        } else {
2810            $this->compiler->trigger_template_error('static class \'' .
2811                                                    $this->yystack[ $this->yyidx + -2 ]->minor .
2812                                                    '\' is undefined or not allowed by security setting');
2813        }
2814    }
2815
2816    // line 822 "../smarty/lexer/smarty_internal_templateparser.y"
2817    public function yy_r103()
2818    {
2819        $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
2820    }
2821
2822    // line 825 "../smarty/lexer/smarty_internal_templateparser.y"
2823    public function yy_r104()
2824    {
2825        $this->_retvalue =
2826            $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'');
2827    }
2828
2829    // line 838 "../smarty/lexer/smarty_internal_templateparser.y"
2830    public function yy_r105()
2831    {
2832        if ($this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ] === '\'smarty\'') {
2833            $smarty_var =
2834                $this->compiler->compileTag('private_special_variable', array(),
2835                    $this->yystack[ $this->yyidx + 0 ]->minor[ 'smarty_internal_index' ]);
2836            $this->_retvalue = $smarty_var;
2837        } else {
2838            // used for array reset,next,prev,end,current
2839            $this->last_variable = $this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ];
2840            $this->last_index = $this->yystack[ $this->yyidx + 0 ]->minor[ 'smarty_internal_index' ];
2841            $this->_retvalue =
2842                $this->compiler->compileVariable($this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ]) .
2843                $this->yystack[ $this->yyidx + 0 ]->minor[ 'smarty_internal_index' ];
2844        }
2845    }
2846
2847    // line 848 "../smarty/lexer/smarty_internal_templateparser.y"
2848    public function yy_r106()
2849    {
2850        $this->_retvalue =
2851            '$_smarty_tpl->tpl_vars[' .
2852            $this->yystack[ $this->yyidx + -2 ]->minor .
2853            ']->' .
2854            $this->yystack[ $this->yyidx + 0 ]->minor;
2855    }
2856
2857    // line 852 "../smarty/lexer/smarty_internal_templateparser.y"
2858    public function yy_r108()
2859    {
2860        $this->_retvalue =
2861            $this->compiler->compileConfigVariable('\'' . $this->yystack[ $this->yyidx + -1 ]->minor . '\'');
2862    }
2863
2864    // line 856 "../smarty/lexer/smarty_internal_templateparser.y"
2865    public function yy_r109()
2866    {
2867        $this->_retvalue =
2868            '(is_array($tmp = ' .
2869            $this->compiler->compileConfigVariable('\'' . $this->yystack[ $this->yyidx + -2 ]->minor . '\'') .
2870            ') ? $tmp' .
2871            $this->yystack[ $this->yyidx + 0 ]->minor .
2872            ' :null)';
2873    }
2874
2875    // line 860 "../smarty/lexer/smarty_internal_templateparser.y"
2876    public function yy_r110()
2877    {
2878        $this->_retvalue = $this->compiler->compileConfigVariable($this->yystack[ $this->yyidx + -1 ]->minor);
2879    }
2880
2881    // line 864 "../smarty/lexer/smarty_internal_templateparser.y"
2882    public function yy_r111()
2883    {
2884        $this->_retvalue =
2885            '(is_array($tmp = ' .
2886            $this->compiler->compileConfigVariable($this->yystack[ $this->yyidx + -2 ]->minor) .
2887            ') ? $tmp' .
2888            $this->yystack[ $this->yyidx + 0 ]->minor .
2889            ' : null)';
2890    }
2891
2892    // line 867 "../smarty/lexer/smarty_internal_templateparser.y"
2893    public function yy_r112()
2894    {
2895        $this->_retvalue =
2896            array(
2897                'var'                   => '\'' . substr($this->yystack[ $this->yyidx + -1 ]->minor, 1) . '\'',
2898                'smarty_internal_index' => $this->yystack[ $this->yyidx + 0 ]->minor
2899            );
2900    }
2901
2902    // line 880 "../smarty/lexer/smarty_internal_templateparser.y"
2903    public function yy_r113()
2904    {
2905        $this->_retvalue =
2906            array(
2907                'var'                   => $this->yystack[ $this->yyidx + -1 ]->minor,
2908                'smarty_internal_index' => $this->yystack[ $this->yyidx + 0 ]->minor
2909            );
2910    }
2911
2912    // line 886 "../smarty/lexer/smarty_internal_templateparser.y"
2913    public function yy_r115()
2914    {
2915        return;
2916    }
2917
2918    // line 889 "../smarty/lexer/smarty_internal_templateparser.y"
2919    public function yy_r116()
2920    {
2921        $this->_retvalue =
2922            '[' .
2923            $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'') .
2924            ']';
2925    }
2926
2927    // line 893 "../smarty/lexer/smarty_internal_templateparser.y"
2928    public function yy_r117()
2929    {
2930        $this->_retvalue = '[' . $this->compiler->compileVariable($this->yystack[ $this->yyidx + 0 ]->minor) . ']';
2931    }
2932
2933    // line 897 "../smarty/lexer/smarty_internal_templateparser.y"
2934    public function yy_r118()
2935    {
2936        $this->_retvalue =
2937            '[' .
2938            $this->compiler->compileVariable($this->yystack[ $this->yyidx + -2 ]->minor) .
2939            '->' .
2940            $this->yystack[ $this->yyidx + 0 ]->minor .
2941            ']';
2942    }
2943
2944    // line 901 "../smarty/lexer/smarty_internal_templateparser.y"
2945    public function yy_r119()
2946    {
2947        $this->_retvalue = '[\'' . $this->yystack[ $this->yyidx + 0 ]->minor . '\']';
2948    }
2949
2950    // line 906 "../smarty/lexer/smarty_internal_templateparser.y"
2951    public function yy_r120()
2952    {
2953        $this->_retvalue = '[' . $this->yystack[ $this->yyidx + 0 ]->minor . ']';
2954    }
2955
2956    // line 911 "../smarty/lexer/smarty_internal_templateparser.y"
2957    public function yy_r121()
2958    {
2959        $this->_retvalue = '[' . $this->yystack[ $this->yyidx + -1 ]->minor . ']';
2960    }
2961
2962    // line 915 "../smarty/lexer/smarty_internal_templateparser.y"
2963    public function yy_r122()
2964    {
2965        $this->_retvalue =
2966            '[' .
2967            $this->compiler->compileTag('private_special_variable', array(),
2968                '[\'section\'][\'' . $this->yystack[ $this->yyidx + -1 ]->minor . '\'][\'index\']') .
2969            ']';
2970    }
2971
2972    // line 918 "../smarty/lexer/smarty_internal_templateparser.y"
2973    public function yy_r123()
2974    {
2975        $this->_retvalue =
2976            '[' .
2977            $this->compiler->compileTag('private_special_variable', array(), '[\'section\'][\'' .
2978                                                                             $this->yystack[ $this->yyidx +
2979                                                                                             -3 ]->minor .
2980                                                                             '\'][\'' .
2981                                                                             $this->yystack[ $this->yyidx +
2982                                                                                             -1 ]->minor .
2983                                                                             '\']') .
2984            ']';
2985    }
2986
2987    // line 924 "../smarty/lexer/smarty_internal_templateparser.y"
2988    public function yy_r124()
2989    {
2990        $this->_retvalue = '[' . $this->yystack[ $this->yyidx + -1 ]->minor . ']';
2991    }
2992
2993    // line 940 "../smarty/lexer/smarty_internal_templateparser.y"
2994    public function yy_r126()
2995    {
2996        $this->_retvalue =
2997            '[' .
2998            $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + -1 ]->minor, 1) . '\'') .
2999            ']';
3000    }
3001
3002    // line 950 "../smarty/lexer/smarty_internal_templateparser.y"
3003    public function yy_r130()
3004    {
3005        $this->_retvalue = '[]';
3006    }
3007
3008    // line 954 "../smarty/lexer/smarty_internal_templateparser.y"
3009    public function yy_r131()
3010    {
3011        $this->_retvalue = '\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'';
3012    }
3013
3014    // line 959 "../smarty/lexer/smarty_internal_templateparser.y"
3015    public function yy_r132()
3016    {
3017        $this->_retvalue = '\'\'';
3018    }
3019
3020    // line 967 "../smarty/lexer/smarty_internal_templateparser.y"
3021    public function yy_r133()
3022    {
3023        $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor . '.' . $this->yystack[ $this->yyidx + 0 ]->minor;
3024    }
3025
3026    // line 973 "../smarty/lexer/smarty_internal_templateparser.y"
3027    public function yy_r135()
3028    {
3029        $var =
3030            trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler->getLdelLength(),
3031                -$this->compiler->getRdelLength()), ' $');
3032        $this->_retvalue = $this->compiler->compileVariable('\'' . $var . '\'');
3033    }
3034
3035    // line 980 "../smarty/lexer/smarty_internal_templateparser.y"
3036    public function yy_r136()
3037    {
3038        $this->_retvalue = '(' . $this->yystack[ $this->yyidx + -1 ]->minor . ')';
3039    }
3040
3041    // line 989 "../smarty/lexer/smarty_internal_templateparser.y"
3042    public function yy_r137()
3043    {
3044        if ($this->yystack[ $this->yyidx + -1 ]->minor[ 'var' ] === '\'smarty\'') {
3045            $this->_retvalue =
3046                $this->compiler->compileTag('private_special_variable', array(),
3047                    $this->yystack[ $this->yyidx + -1 ]->minor[ 'smarty_internal_index' ]) .
3048                $this->yystack[ $this->yyidx + 0 ]->minor;
3049        } else {
3050            $this->_retvalue =
3051                $this->compiler->compileVariable($this->yystack[ $this->yyidx + -1 ]->minor[ 'var' ]) .
3052                $this->yystack[ $this->yyidx + -1 ]->minor[ 'smarty_internal_index' ] .
3053                $this->yystack[ $this->yyidx + 0 ]->minor;
3054        }
3055    }
3056
3057    // line 994 "../smarty/lexer/smarty_internal_templateparser.y"
3058    public function yy_r138()
3059    {
3060        $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
3061    }
3062
3063    // line 999 "../smarty/lexer/smarty_internal_templateparser.y"
3064    public function yy_r139()
3065    {
3066        $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
3067    }
3068
3069    // line 1006 "../smarty/lexer/smarty_internal_templateparser.y"
3070    public function yy_r140()
3071    {
3072        if ($this->security && substr($this->yystack[ $this->yyidx + -1 ]->minor, 0, 1) === '_') {
3073            $this->compiler->trigger_template_error(self::ERR1);
3074        }
3075        $this->_retvalue =
3076            '->' . $this->yystack[ $this->yyidx + -1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
3077    }
3078
3079    // line 1013 "../smarty/lexer/smarty_internal_templateparser.y"
3080    public function yy_r141()
3081    {
3082        if ($this->security) {
3083            $this->compiler->trigger_template_error(self::ERR2);
3084        }
3085        $this->_retvalue =
3086            '->{' .
3087            $this->compiler->compileVariable($this->yystack[ $this->yyidx + -1 ]->minor) .
3088            $this->yystack[ $this->yyidx + 0 ]->minor .
3089            '}';
3090    }
3091
3092    // line 1020 "../smarty/lexer/smarty_internal_templateparser.y"
3093    public function yy_r142()
3094    {
3095        if ($this->security) {
3096            $this->compiler->trigger_template_error(self::ERR2);
3097        }
3098        $this->_retvalue =
3099            '->{' . $this->yystack[ $this->yyidx + -2 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor . '}';
3100    }
3101
3102    // line 1028 "../smarty/lexer/smarty_internal_templateparser.y"
3103    public function yy_r143()
3104    {
3105        if ($this->security) {
3106            $this->compiler->trigger_template_error(self::ERR2);
3107        }
3108        $this->_retvalue =
3109            '->{\'' .
3110            $this->yystack[ $this->yyidx + -4 ]->minor .
3111            '\'.' .
3112            $this->yystack[ $this->yyidx + -2 ]->minor .
3113            $this->yystack[ $this->yyidx + 0 ]->minor .
3114            '}';
3115    }
3116
3117    // line 1036 "../smarty/lexer/smarty_internal_templateparser.y"
3118    public function yy_r144()
3119    {
3120        $this->_retvalue = '->' . $this->yystack[ $this->yyidx + 0 ]->minor;
3121    }
3122
3123    // line 1044 "../smarty/lexer/smarty_internal_templateparser.y"
3124    public function yy_r145()
3125    {
3126        $this->_retvalue =
3127            $this->compiler->compilePHPFunctionCall($this->yystack[ $this->yyidx + -3 ]->minor,
3128                $this->yystack[ $this->yyidx + -1 ]->minor);
3129    }
3130
3131    // line 1051 "../smarty/lexer/smarty_internal_templateparser.y"
3132    public function yy_r146()
3133    {
3134        if ($this->security && substr($this->yystack[ $this->yyidx + -3 ]->minor, 0, 1) === '_') {
3135            $this->compiler->trigger_template_error(self::ERR1);
3136        }
3137        $this->_retvalue =
3138            $this->yystack[ $this->yyidx + -3 ]->minor .
3139            '(' .
3140            implode(',', $this->yystack[ $this->yyidx + -1 ]->minor) .
3141            ')';
3142    }
3143
3144    // line 1062 "../smarty/lexer/smarty_internal_templateparser.y"
3145    public function yy_r147()
3146    {
3147        if ($this->security) {
3148            $this->compiler->trigger_template_error(self::ERR2);
3149        }
3150        $prefixVar = $this->compiler->getNewPrefixVariable();
3151        $this->compiler->appendPrefixCode("<?php {$prefixVar} = " .
3152                                          $this->compiler->compileVariable('\'' .
3153                                                                           substr($this->yystack[ $this->yyidx +
3154                                                                                                  -3 ]->minor, 1) .
3155                                                                           '\'') .
3156                                          ';?>');
3157        $this->_retvalue = $prefixVar . '(' . implode(',', $this->yystack[ $this->yyidx + -1 ]->minor) . ')';
3158    }
3159
3160    // line 1079 "../smarty/lexer/smarty_internal_templateparser.y"
3161    public function yy_r148()
3162    {
3163        $this->_retvalue =
3164            array_merge($this->yystack[ $this->yyidx + -2 ]->minor, array($this->yystack[ $this->yyidx + 0 ]->minor));
3165    }
3166
3167    // line 1083 "../smarty/lexer/smarty_internal_templateparser.y"
3168    public function yy_r151()
3169    {
3170        $this->_retvalue =
3171            array_merge($this->yystack[ $this->yyidx + -2 ]->minor, array(
3172                array_merge($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor)
3173            ));
3174    }
3175
3176    // line 1091 "../smarty/lexer/smarty_internal_templateparser.y"
3177    public function yy_r152()
3178    {
3179        $this->_retvalue =
3180            array(array_merge($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor));
3181    }
3182
3183    // line 1099 "../smarty/lexer/smarty_internal_templateparser.y"
3184    public function yy_r154()
3185    {
3186        $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor);
3187    }
3188
3189    // line 1118 "../smarty/lexer/smarty_internal_templateparser.y"
3190    public function yy_r155()
3191    {
3192        $this->_retvalue =
3193            array_merge($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor);
3194    }
3195
3196    // line 1123 "../smarty/lexer/smarty_internal_templateparser.y"
3197    public function yy_r159()
3198    {
3199        $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor, '', 'method');
3200    }
3201
3202    // line 1128 "../smarty/lexer/smarty_internal_templateparser.y"
3203    public function yy_r160()
3204    {
3205        $this->_retvalue =
3206            array($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor, 'method');
3207    }
3208
3209    // line 1133 "../smarty/lexer/smarty_internal_templateparser.y"
3210    public function yy_r161()
3211    {
3212        $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor, '');
3213    }
3214
3215    // line 1138 "../smarty/lexer/smarty_internal_templateparser.y"
3216    public function yy_r162()
3217    {
3218        $this->_retvalue =
3219            array($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor, 'property');
3220    }
3221
3222    // line 1144 "../smarty/lexer/smarty_internal_templateparser.y"
3223    public function yy_r163()
3224    {
3225        $this->_retvalue =
3226            array(
3227                $this->yystack[ $this->yyidx + -2 ]->minor,
3228                $this->yystack[ $this->yyidx + -1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor, 'property'
3229            );
3230    }
3231
3232    // line 1148 "../smarty/lexer/smarty_internal_templateparser.y"
3233    public function yy_r164()
3234    {
3235        $this->_retvalue = ' ' . trim($this->yystack[ $this->yyidx + 0 ]->minor) . ' ';
3236    }
3237
3238    // line 1167 "../smarty/lexer/smarty_internal_templateparser.y"
3239    public function yy_r165()
3240    {
3241        static $lops = array(
3242            'eq'  => ' == ',
3243            'ne'  => ' != ',
3244            'neq' => ' != ',
3245            'gt'  => ' > ',
3246            'ge'  => ' >= ',
3247            'gte' => ' >= ',
3248            'lt'  => ' < ',
3249            'le'  => ' <= ',
3250            'lte' => ' <= ',
3251            'mod' => ' % ',
3252            'and' => ' && ',
3253            'or'  => ' || ',
3254            'xor' => ' xor ',
3255        );
3256        $op = strtolower(preg_replace('/\s*/', '', $this->yystack[ $this->yyidx + 0 ]->minor));
3257        $this->_retvalue = $lops[ $op ];
3258    }
3259
3260    // line 1180 "../smarty/lexer/smarty_internal_templateparser.y"
3261    public function yy_r166()
3262    {
3263        static $tlops = array(
3264            'isdivby'     => array('op' => ' % ', 'pre' => '!('),
3265            'isnotdivby'  => array('op' => ' % ', 'pre' => '('),
3266            'isevenby'    => array('op' => ' / ', 'pre' => '!(1 & '),
3267            'isnotevenby' => array('op' => ' / ', 'pre' => '(1 & '),
3268            'isoddby'     => array('op' => ' / ', 'pre' => '(1 & '),
3269            'isnotoddby'  => array('op' => ' / ', 'pre' => '!(1 & '),
3270        );
3271        $op = strtolower(preg_replace('/\s*/', '', $this->yystack[ $this->yyidx + 0 ]->minor));
3272        $this->_retvalue = $tlops[ $op ];
3273    }
3274
3275    // line 1194 "../smarty/lexer/smarty_internal_templateparser.y"
3276    public function yy_r167()
3277    {
3278        static $scond = array(
3279            'iseven'    => '!(1 & ',
3280            'isnoteven' => '(1 & ',
3281            'isodd'     => '(1 & ',
3282            'isnotodd'  => '!(1 & ',
3283        );
3284        $op = strtolower(str_replace(' ', '', $this->yystack[ $this->yyidx + 0 ]->minor));
3285        $this->_retvalue = $scond[ $op ];
3286    }
3287
3288    // line 1202 "../smarty/lexer/smarty_internal_templateparser.y"
3289    public function yy_r168()
3290    {
3291        $this->_retvalue = 'array(' . $this->yystack[ $this->yyidx + -1 ]->minor . ')';
3292    }
3293
3294    // line 1210 "../smarty/lexer/smarty_internal_templateparser.y"
3295    public function yy_r170()
3296    {
3297        $this->_retvalue = $this->yystack[ $this->yyidx + -2 ]->minor . ',' . $this->yystack[ $this->yyidx + 0 ]->minor;
3298    }
3299
3300    // line 1214 "../smarty/lexer/smarty_internal_templateparser.y"
3301    public function yy_r172()
3302    {
3303        $this->_retvalue =
3304            $this->yystack[ $this->yyidx + -2 ]->minor . '=>' . $this->yystack[ $this->yyidx + 0 ]->minor;
3305    }
3306
3307    // line 1230 "../smarty/lexer/smarty_internal_templateparser.y"
3308    public function yy_r173()
3309    {
3310        $this->_retvalue =
3311            '\'' . $this->yystack[ $this->yyidx + -2 ]->minor . '\'=>' . $this->yystack[ $this->yyidx + 0 ]->minor;
3312    }
3313
3314    // line 1236 "../smarty/lexer/smarty_internal_templateparser.y"
3315    public function yy_r176()
3316    {
3317        $this->compiler->leaveDoubleQuote();
3318        $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor->to_smarty_php($this);
3319    }
3320
3321    // line 1241 "../smarty/lexer/smarty_internal_templateparser.y"
3322    public function yy_r177()
3323    {
3324        $this->yystack[ $this->yyidx + -1 ]->minor->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor);
3325        $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor;
3326    }
3327
3328    // line 1245 "../smarty/lexer/smarty_internal_templateparser.y"
3329    public function yy_r178()
3330    {
3331        $this->_retvalue = new Smarty_Internal_ParseTree_Dq($this, $this->yystack[ $this->yyidx + 0 ]->minor);
3332    }
3333
3334    // line 1249 "../smarty/lexer/smarty_internal_templateparser.y"
3335    public function yy_r179()
3336    {
3337        $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)' . $this->yystack[ $this->yyidx + -1 ]->minor);
3338    }
3339
3340    // line 1253 "../smarty/lexer/smarty_internal_templateparser.y"
3341    public function yy_r180()
3342    {
3343        $this->_retvalue =
3344            new Smarty_Internal_ParseTree_Code('(string)(' . $this->yystack[ $this->yyidx + -1 ]->minor . ')');
3345    }
3346
3347    // line 1265 "../smarty/lexer/smarty_internal_templateparser.y"
3348    public function yy_r181()
3349    {
3350        $this->_retvalue =
3351            new Smarty_Internal_ParseTree_Code('(string)$_smarty_tpl->tpl_vars[\'' .
3352                                               substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) .
3353                                               '\']->value');
3354    }
3355
3356    // line 1269 "../smarty/lexer/smarty_internal_templateparser.y"
3357    public function yy_r184()
3358    {
3359        $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->yystack[ $this->yyidx + 0 ]->minor);
3360    }
3361
3362    public function yy_r185()
3363    {
3364        $this->_retvalue = new Smarty_Internal_ParseTree_DqContent($this->yystack[ $this->yyidx + 0 ]->minor);
3365    }
3366
3367    public function yy_reduce($yyruleno)
3368    {
3369        if ($this->yyTraceFILE && $yyruleno >= 0
3370            && $yyruleno < count(self::$yyRuleName)) {
3371            fprintf(
3372                $this->yyTraceFILE,
3373                "%sReduce (%d) [%s].\n",
3374                $this->yyTracePrompt,
3375                $yyruleno,
3376                self::$yyRuleName[ $yyruleno ]
3377            );
3378        }
3379        $this->_retvalue = $yy_lefthand_side = null;
3380        if (isset(self::$yyReduceMap[ $yyruleno ])) {
3381            // call the action
3382            $this->_retvalue = null;
3383            $this->{'yy_r' . self::$yyReduceMap[ $yyruleno ]}();
3384            $yy_lefthand_side = $this->_retvalue;
3385        }
3386        $yygoto = self::$yyRuleInfo[ $yyruleno ][ 0 ];
3387        $yysize = self::$yyRuleInfo[ $yyruleno ][ 1 ];
3388        $this->yyidx -= $yysize;
3389        for ($i = $yysize; $i; $i--) {
3390            // pop all of the right-hand side parameters
3391            array_pop($this->yystack);
3392        }
3393        $yyact = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno, $yygoto);
3394        if ($yyact < self::YYNSTATE) {
3395            if (!$this->yyTraceFILE && $yysize) {
3396                $this->yyidx++;
3397                $x = new TP_yyStackEntry;
3398                $x->stateno = $yyact;
3399                $x->major = $yygoto;
3400                $x->minor = $yy_lefthand_side;
3401                $this->yystack[ $this->yyidx ] = $x;
3402            } else {
3403                $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
3404            }
3405        } elseif ($yyact === self::YYNSTATE + self::YYNRULE + 1) {
3406            $this->yy_accept();
3407        }
3408    }
3409
3410    public function yy_parse_failed()
3411    {
3412        if ($this->yyTraceFILE) {
3413            fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt);
3414        }
3415        while ($this->yyidx >= 0) {
3416            $this->yy_pop_parser_stack();
3417        }
3418    }
3419
3420    public function yy_syntax_error($yymajor, $TOKEN)
3421    {
3422        // line 214 "../smarty/lexer/smarty_internal_templateparser.y"
3423        $this->internalError = true;
3424        $this->yymajor = $yymajor;
3425        $this->compiler->trigger_template_error();
3426    }
3427
3428    public function yy_accept()
3429    {
3430        if ($this->yyTraceFILE) {
3431            fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt);
3432        }
3433        while ($this->yyidx >= 0) {
3434            $this->yy_pop_parser_stack();
3435        }
3436        // line 207 "../smarty/lexer/smarty_internal_templateparser.y"
3437        $this->successful = !$this->internalError;
3438        $this->internalError = false;
3439        $this->retvalue = $this->_retvalue;
3440    }
3441
3442    public function doParse($yymajor, $yytokenvalue)
3443    {
3444        $yyerrorhit = 0;   /* True if yymajor has invoked an error */
3445        if ($this->yyidx === null || $this->yyidx < 0) {
3446            $this->yyidx = 0;
3447            $this->yyerrcnt = -1;
3448            $x = new TP_yyStackEntry;
3449            $x->stateno = 0;
3450            $x->major = 0;
3451            $this->yystack = array();
3452            $this->yystack[] = $x;
3453        }
3454        $yyendofinput = ($yymajor == 0);
3455        if ($this->yyTraceFILE) {
3456            fprintf(
3457                $this->yyTraceFILE,
3458                "%sInput %s\n",
3459                $this->yyTracePrompt,
3460                $this->yyTokenName[ $yymajor ]
3461            );
3462        }
3463        do {
3464            $yyact = $this->yy_find_shift_action($yymajor);
3465            if ($yymajor < self::YYERRORSYMBOL &&
3466                !$this->yy_is_expected_token($yymajor)) {
3467                // force a syntax error
3468                $yyact = self::YY_ERROR_ACTION;
3469            }
3470            if ($yyact < self::YYNSTATE) {
3471                $this->yy_shift($yyact, $yymajor, $yytokenvalue);
3472                $this->yyerrcnt--;
3473                if ($yyendofinput && $this->yyidx >= 0) {
3474                    $yymajor = 0;
3475                } else {
3476                    $yymajor = self::YYNOCODE;
3477                }
3478            } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
3479                $this->yy_reduce($yyact - self::YYNSTATE);
3480            } elseif ($yyact === self::YY_ERROR_ACTION) {
3481                if ($this->yyTraceFILE) {
3482                    fprintf(
3483                        $this->yyTraceFILE,
3484                        "%sSyntax Error!\n",
3485                        $this->yyTracePrompt
3486                    );
3487                }
3488                if (self::YYERRORSYMBOL) {
3489                    if ($this->yyerrcnt < 0) {
3490                        $this->yy_syntax_error($yymajor, $yytokenvalue);
3491                    }
3492                    $yymx = $this->yystack[ $this->yyidx ]->major;
3493                    if ($yymx === self::YYERRORSYMBOL || $yyerrorhit) {
3494                        if ($this->yyTraceFILE) {
3495                            fprintf(
3496                                $this->yyTraceFILE,
3497                                "%sDiscard input token %s\n",
3498                                $this->yyTracePrompt,
3499                                $this->yyTokenName[ $yymajor ]
3500                            );
3501                        }
3502                        $this->yy_destructor($yymajor, $yytokenvalue);
3503                        $yymajor = self::YYNOCODE;
3504                    } else {
3505                        while ($this->yyidx >= 0 &&
3506                               $yymx !== self::YYERRORSYMBOL &&
3507                               ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE
3508                        ) {
3509                            $this->yy_pop_parser_stack();
3510                        }
3511                        if ($this->yyidx < 0 || $yymajor == 0) {
3512                            $this->yy_destructor($yymajor, $yytokenvalue);
3513                            $this->yy_parse_failed();
3514                            $yymajor = self::YYNOCODE;
3515                        } elseif ($yymx !== self::YYERRORSYMBOL) {
3516                            $u2 = 0;
3517                            $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
3518                        }
3519                    }
3520                    $this->yyerrcnt = 3;
3521                    $yyerrorhit = 1;
3522                } else {
3523                    if ($this->yyerrcnt <= 0) {
3524                        $this->yy_syntax_error($yymajor, $yytokenvalue);
3525                    }
3526                    $this->yyerrcnt = 3;
3527                    $this->yy_destructor($yymajor, $yytokenvalue);
3528                    if ($yyendofinput) {
3529                        $this->yy_parse_failed();
3530                    }
3531                    $yymajor = self::YYNOCODE;
3532                }
3533            } else {
3534                $this->yy_accept();
3535                $yymajor = self::YYNOCODE;
3536            }
3537        } while ($yymajor !== self::YYNOCODE && $this->yyidx >= 0);
3538    }
3539}
3540