1// Generated by Snowball 2.1.0 - https://snowballstem.org/
2
3/**@constructor*/
4SpanishStemmer = function() {
5    var base = new BaseStemmer();
6    /** @const */ var a_0 = [
7        ["", -1, 6],
8        ["\u00E1", 0, 1],
9        ["\u00E9", 0, 2],
10        ["\u00ED", 0, 3],
11        ["\u00F3", 0, 4],
12        ["\u00FA", 0, 5]
13    ];
14
15    /** @const */ var a_1 = [
16        ["la", -1, -1],
17        ["sela", 0, -1],
18        ["le", -1, -1],
19        ["me", -1, -1],
20        ["se", -1, -1],
21        ["lo", -1, -1],
22        ["selo", 5, -1],
23        ["las", -1, -1],
24        ["selas", 7, -1],
25        ["les", -1, -1],
26        ["los", -1, -1],
27        ["selos", 10, -1],
28        ["nos", -1, -1]
29    ];
30
31    /** @const */ var a_2 = [
32        ["ando", -1, 6],
33        ["iendo", -1, 6],
34        ["yendo", -1, 7],
35        ["\u00E1ndo", -1, 2],
36        ["i\u00E9ndo", -1, 1],
37        ["ar", -1, 6],
38        ["er", -1, 6],
39        ["ir", -1, 6],
40        ["\u00E1r", -1, 3],
41        ["\u00E9r", -1, 4],
42        ["\u00EDr", -1, 5]
43    ];
44
45    /** @const */ var a_3 = [
46        ["ic", -1, -1],
47        ["ad", -1, -1],
48        ["os", -1, -1],
49        ["iv", -1, 1]
50    ];
51
52    /** @const */ var a_4 = [
53        ["able", -1, 1],
54        ["ible", -1, 1],
55        ["ante", -1, 1]
56    ];
57
58    /** @const */ var a_5 = [
59        ["ic", -1, 1],
60        ["abil", -1, 1],
61        ["iv", -1, 1]
62    ];
63
64    /** @const */ var a_6 = [
65        ["ica", -1, 1],
66        ["ancia", -1, 2],
67        ["encia", -1, 5],
68        ["adora", -1, 2],
69        ["osa", -1, 1],
70        ["ista", -1, 1],
71        ["iva", -1, 9],
72        ["anza", -1, 1],
73        ["log\u00EDa", -1, 3],
74        ["idad", -1, 8],
75        ["able", -1, 1],
76        ["ible", -1, 1],
77        ["ante", -1, 2],
78        ["mente", -1, 7],
79        ["amente", 13, 6],
80        ["aci\u00F3n", -1, 2],
81        ["uci\u00F3n", -1, 4],
82        ["ico", -1, 1],
83        ["ismo", -1, 1],
84        ["oso", -1, 1],
85        ["amiento", -1, 1],
86        ["imiento", -1, 1],
87        ["ivo", -1, 9],
88        ["ador", -1, 2],
89        ["icas", -1, 1],
90        ["ancias", -1, 2],
91        ["encias", -1, 5],
92        ["adoras", -1, 2],
93        ["osas", -1, 1],
94        ["istas", -1, 1],
95        ["ivas", -1, 9],
96        ["anzas", -1, 1],
97        ["log\u00EDas", -1, 3],
98        ["idades", -1, 8],
99        ["ables", -1, 1],
100        ["ibles", -1, 1],
101        ["aciones", -1, 2],
102        ["uciones", -1, 4],
103        ["adores", -1, 2],
104        ["antes", -1, 2],
105        ["icos", -1, 1],
106        ["ismos", -1, 1],
107        ["osos", -1, 1],
108        ["amientos", -1, 1],
109        ["imientos", -1, 1],
110        ["ivos", -1, 9]
111    ];
112
113    /** @const */ var a_7 = [
114        ["ya", -1, 1],
115        ["ye", -1, 1],
116        ["yan", -1, 1],
117        ["yen", -1, 1],
118        ["yeron", -1, 1],
119        ["yendo", -1, 1],
120        ["yo", -1, 1],
121        ["yas", -1, 1],
122        ["yes", -1, 1],
123        ["yais", -1, 1],
124        ["yamos", -1, 1],
125        ["y\u00F3", -1, 1]
126    ];
127
128    /** @const */ var a_8 = [
129        ["aba", -1, 2],
130        ["ada", -1, 2],
131        ["ida", -1, 2],
132        ["ara", -1, 2],
133        ["iera", -1, 2],
134        ["\u00EDa", -1, 2],
135        ["ar\u00EDa", 5, 2],
136        ["er\u00EDa", 5, 2],
137        ["ir\u00EDa", 5, 2],
138        ["ad", -1, 2],
139        ["ed", -1, 2],
140        ["id", -1, 2],
141        ["ase", -1, 2],
142        ["iese", -1, 2],
143        ["aste", -1, 2],
144        ["iste", -1, 2],
145        ["an", -1, 2],
146        ["aban", 16, 2],
147        ["aran", 16, 2],
148        ["ieran", 16, 2],
149        ["\u00EDan", 16, 2],
150        ["ar\u00EDan", 20, 2],
151        ["er\u00EDan", 20, 2],
152        ["ir\u00EDan", 20, 2],
153        ["en", -1, 1],
154        ["asen", 24, 2],
155        ["iesen", 24, 2],
156        ["aron", -1, 2],
157        ["ieron", -1, 2],
158        ["ar\u00E1n", -1, 2],
159        ["er\u00E1n", -1, 2],
160        ["ir\u00E1n", -1, 2],
161        ["ado", -1, 2],
162        ["ido", -1, 2],
163        ["ando", -1, 2],
164        ["iendo", -1, 2],
165        ["ar", -1, 2],
166        ["er", -1, 2],
167        ["ir", -1, 2],
168        ["as", -1, 2],
169        ["abas", 39, 2],
170        ["adas", 39, 2],
171        ["idas", 39, 2],
172        ["aras", 39, 2],
173        ["ieras", 39, 2],
174        ["\u00EDas", 39, 2],
175        ["ar\u00EDas", 45, 2],
176        ["er\u00EDas", 45, 2],
177        ["ir\u00EDas", 45, 2],
178        ["es", -1, 1],
179        ["ases", 49, 2],
180        ["ieses", 49, 2],
181        ["abais", -1, 2],
182        ["arais", -1, 2],
183        ["ierais", -1, 2],
184        ["\u00EDais", -1, 2],
185        ["ar\u00EDais", 55, 2],
186        ["er\u00EDais", 55, 2],
187        ["ir\u00EDais", 55, 2],
188        ["aseis", -1, 2],
189        ["ieseis", -1, 2],
190        ["asteis", -1, 2],
191        ["isteis", -1, 2],
192        ["\u00E1is", -1, 2],
193        ["\u00E9is", -1, 1],
194        ["ar\u00E9is", 64, 2],
195        ["er\u00E9is", 64, 2],
196        ["ir\u00E9is", 64, 2],
197        ["ados", -1, 2],
198        ["idos", -1, 2],
199        ["amos", -1, 2],
200        ["\u00E1bamos", 70, 2],
201        ["\u00E1ramos", 70, 2],
202        ["i\u00E9ramos", 70, 2],
203        ["\u00EDamos", 70, 2],
204        ["ar\u00EDamos", 74, 2],
205        ["er\u00EDamos", 74, 2],
206        ["ir\u00EDamos", 74, 2],
207        ["emos", -1, 1],
208        ["aremos", 78, 2],
209        ["eremos", 78, 2],
210        ["iremos", 78, 2],
211        ["\u00E1semos", 78, 2],
212        ["i\u00E9semos", 78, 2],
213        ["imos", -1, 2],
214        ["ar\u00E1s", -1, 2],
215        ["er\u00E1s", -1, 2],
216        ["ir\u00E1s", -1, 2],
217        ["\u00EDs", -1, 2],
218        ["ar\u00E1", -1, 2],
219        ["er\u00E1", -1, 2],
220        ["ir\u00E1", -1, 2],
221        ["ar\u00E9", -1, 2],
222        ["er\u00E9", -1, 2],
223        ["ir\u00E9", -1, 2],
224        ["i\u00F3", -1, 2]
225    ];
226
227    /** @const */ var a_9 = [
228        ["a", -1, 1],
229        ["e", -1, 2],
230        ["o", -1, 1],
231        ["os", -1, 1],
232        ["\u00E1", -1, 1],
233        ["\u00E9", -1, 2],
234        ["\u00ED", -1, 1],
235        ["\u00F3", -1, 1]
236    ];
237
238    /** @const */ var /** Array<int> */ g_v = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 10];
239
240    var /** number */ I_p2 = 0;
241    var /** number */ I_p1 = 0;
242    var /** number */ I_pV = 0;
243
244
245    /** @return {boolean} */
246    function r_mark_regions() {
247        I_pV = base.limit;
248        I_p1 = base.limit;
249        I_p2 = base.limit;
250        var /** number */ v_1 = base.cursor;
251        lab0: {
252            lab1: {
253                var /** number */ v_2 = base.cursor;
254                lab2: {
255                    if (!(base.in_grouping(g_v, 97, 252)))
256                    {
257                        break lab2;
258                    }
259                    lab3: {
260                        var /** number */ v_3 = base.cursor;
261                        lab4: {
262                            if (!(base.out_grouping(g_v, 97, 252)))
263                            {
264                                break lab4;
265                            }
266                            golab5: while(true)
267                            {
268                                lab6: {
269                                    if (!(base.in_grouping(g_v, 97, 252)))
270                                    {
271                                        break lab6;
272                                    }
273                                    break golab5;
274                                }
275                                if (base.cursor >= base.limit)
276                                {
277                                    break lab4;
278                                }
279                                base.cursor++;
280                            }
281                            break lab3;
282                        }
283                        base.cursor = v_3;
284                        if (!(base.in_grouping(g_v, 97, 252)))
285                        {
286                            break lab2;
287                        }
288                        golab7: while(true)
289                        {
290                            lab8: {
291                                if (!(base.out_grouping(g_v, 97, 252)))
292                                {
293                                    break lab8;
294                                }
295                                break golab7;
296                            }
297                            if (base.cursor >= base.limit)
298                            {
299                                break lab2;
300                            }
301                            base.cursor++;
302                        }
303                    }
304                    break lab1;
305                }
306                base.cursor = v_2;
307                if (!(base.out_grouping(g_v, 97, 252)))
308                {
309                    break lab0;
310                }
311                lab9: {
312                    var /** number */ v_6 = base.cursor;
313                    lab10: {
314                        if (!(base.out_grouping(g_v, 97, 252)))
315                        {
316                            break lab10;
317                        }
318                        golab11: while(true)
319                        {
320                            lab12: {
321                                if (!(base.in_grouping(g_v, 97, 252)))
322                                {
323                                    break lab12;
324                                }
325                                break golab11;
326                            }
327                            if (base.cursor >= base.limit)
328                            {
329                                break lab10;
330                            }
331                            base.cursor++;
332                        }
333                        break lab9;
334                    }
335                    base.cursor = v_6;
336                    if (!(base.in_grouping(g_v, 97, 252)))
337                    {
338                        break lab0;
339                    }
340                    if (base.cursor >= base.limit)
341                    {
342                        break lab0;
343                    }
344                    base.cursor++;
345                }
346            }
347            I_pV = base.cursor;
348        }
349        base.cursor = v_1;
350        var /** number */ v_8 = base.cursor;
351        lab13: {
352            golab14: while(true)
353            {
354                lab15: {
355                    if (!(base.in_grouping(g_v, 97, 252)))
356                    {
357                        break lab15;
358                    }
359                    break golab14;
360                }
361                if (base.cursor >= base.limit)
362                {
363                    break lab13;
364                }
365                base.cursor++;
366            }
367            golab16: while(true)
368            {
369                lab17: {
370                    if (!(base.out_grouping(g_v, 97, 252)))
371                    {
372                        break lab17;
373                    }
374                    break golab16;
375                }
376                if (base.cursor >= base.limit)
377                {
378                    break lab13;
379                }
380                base.cursor++;
381            }
382            I_p1 = base.cursor;
383            golab18: while(true)
384            {
385                lab19: {
386                    if (!(base.in_grouping(g_v, 97, 252)))
387                    {
388                        break lab19;
389                    }
390                    break golab18;
391                }
392                if (base.cursor >= base.limit)
393                {
394                    break lab13;
395                }
396                base.cursor++;
397            }
398            golab20: while(true)
399            {
400                lab21: {
401                    if (!(base.out_grouping(g_v, 97, 252)))
402                    {
403                        break lab21;
404                    }
405                    break golab20;
406                }
407                if (base.cursor >= base.limit)
408                {
409                    break lab13;
410                }
411                base.cursor++;
412            }
413            I_p2 = base.cursor;
414        }
415        base.cursor = v_8;
416        return true;
417    };
418
419    /** @return {boolean} */
420    function r_postlude() {
421        var /** number */ among_var;
422        while(true)
423        {
424            var /** number */ v_1 = base.cursor;
425            lab0: {
426                base.bra = base.cursor;
427                among_var = base.find_among(a_0);
428                if (among_var == 0)
429                {
430                    break lab0;
431                }
432                base.ket = base.cursor;
433                switch (among_var) {
434                    case 1:
435                        if (!base.slice_from("a"))
436                        {
437                            return false;
438                        }
439                        break;
440                    case 2:
441                        if (!base.slice_from("e"))
442                        {
443                            return false;
444                        }
445                        break;
446                    case 3:
447                        if (!base.slice_from("i"))
448                        {
449                            return false;
450                        }
451                        break;
452                    case 4:
453                        if (!base.slice_from("o"))
454                        {
455                            return false;
456                        }
457                        break;
458                    case 5:
459                        if (!base.slice_from("u"))
460                        {
461                            return false;
462                        }
463                        break;
464                    case 6:
465                        if (base.cursor >= base.limit)
466                        {
467                            break lab0;
468                        }
469                        base.cursor++;
470                        break;
471                }
472                continue;
473            }
474            base.cursor = v_1;
475            break;
476        }
477        return true;
478    };
479
480    /** @return {boolean} */
481    function r_RV() {
482        if (!(I_pV <= base.cursor))
483        {
484            return false;
485        }
486        return true;
487    };
488
489    /** @return {boolean} */
490    function r_R1() {
491        if (!(I_p1 <= base.cursor))
492        {
493            return false;
494        }
495        return true;
496    };
497
498    /** @return {boolean} */
499    function r_R2() {
500        if (!(I_p2 <= base.cursor))
501        {
502            return false;
503        }
504        return true;
505    };
506
507    /** @return {boolean} */
508    function r_attached_pronoun() {
509        var /** number */ among_var;
510        base.ket = base.cursor;
511        if (base.find_among_b(a_1) == 0)
512        {
513            return false;
514        }
515        base.bra = base.cursor;
516        among_var = base.find_among_b(a_2);
517        if (among_var == 0)
518        {
519            return false;
520        }
521        if (!r_RV())
522        {
523            return false;
524        }
525        switch (among_var) {
526            case 1:
527                base.bra = base.cursor;
528                if (!base.slice_from("iendo"))
529                {
530                    return false;
531                }
532                break;
533            case 2:
534                base.bra = base.cursor;
535                if (!base.slice_from("ando"))
536                {
537                    return false;
538                }
539                break;
540            case 3:
541                base.bra = base.cursor;
542                if (!base.slice_from("ar"))
543                {
544                    return false;
545                }
546                break;
547            case 4:
548                base.bra = base.cursor;
549                if (!base.slice_from("er"))
550                {
551                    return false;
552                }
553                break;
554            case 5:
555                base.bra = base.cursor;
556                if (!base.slice_from("ir"))
557                {
558                    return false;
559                }
560                break;
561            case 6:
562                if (!base.slice_del())
563                {
564                    return false;
565                }
566                break;
567            case 7:
568                if (!(base.eq_s_b("u")))
569                {
570                    return false;
571                }
572                if (!base.slice_del())
573                {
574                    return false;
575                }
576                break;
577        }
578        return true;
579    };
580
581    /** @return {boolean} */
582    function r_standard_suffix() {
583        var /** number */ among_var;
584        base.ket = base.cursor;
585        among_var = base.find_among_b(a_6);
586        if (among_var == 0)
587        {
588            return false;
589        }
590        base.bra = base.cursor;
591        switch (among_var) {
592            case 1:
593                if (!r_R2())
594                {
595                    return false;
596                }
597                if (!base.slice_del())
598                {
599                    return false;
600                }
601                break;
602            case 2:
603                if (!r_R2())
604                {
605                    return false;
606                }
607                if (!base.slice_del())
608                {
609                    return false;
610                }
611                var /** number */ v_1 = base.limit - base.cursor;
612                lab0: {
613                    base.ket = base.cursor;
614                    if (!(base.eq_s_b("ic")))
615                    {
616                        base.cursor = base.limit - v_1;
617                        break lab0;
618                    }
619                    base.bra = base.cursor;
620                    if (!r_R2())
621                    {
622                        base.cursor = base.limit - v_1;
623                        break lab0;
624                    }
625                    if (!base.slice_del())
626                    {
627                        return false;
628                    }
629                }
630                break;
631            case 3:
632                if (!r_R2())
633                {
634                    return false;
635                }
636                if (!base.slice_from("log"))
637                {
638                    return false;
639                }
640                break;
641            case 4:
642                if (!r_R2())
643                {
644                    return false;
645                }
646                if (!base.slice_from("u"))
647                {
648                    return false;
649                }
650                break;
651            case 5:
652                if (!r_R2())
653                {
654                    return false;
655                }
656                if (!base.slice_from("ente"))
657                {
658                    return false;
659                }
660                break;
661            case 6:
662                if (!r_R1())
663                {
664                    return false;
665                }
666                if (!base.slice_del())
667                {
668                    return false;
669                }
670                var /** number */ v_2 = base.limit - base.cursor;
671                lab1: {
672                    base.ket = base.cursor;
673                    among_var = base.find_among_b(a_3);
674                    if (among_var == 0)
675                    {
676                        base.cursor = base.limit - v_2;
677                        break lab1;
678                    }
679                    base.bra = base.cursor;
680                    if (!r_R2())
681                    {
682                        base.cursor = base.limit - v_2;
683                        break lab1;
684                    }
685                    if (!base.slice_del())
686                    {
687                        return false;
688                    }
689                    switch (among_var) {
690                        case 1:
691                            base.ket = base.cursor;
692                            if (!(base.eq_s_b("at")))
693                            {
694                                base.cursor = base.limit - v_2;
695                                break lab1;
696                            }
697                            base.bra = base.cursor;
698                            if (!r_R2())
699                            {
700                                base.cursor = base.limit - v_2;
701                                break lab1;
702                            }
703                            if (!base.slice_del())
704                            {
705                                return false;
706                            }
707                            break;
708                    }
709                }
710                break;
711            case 7:
712                if (!r_R2())
713                {
714                    return false;
715                }
716                if (!base.slice_del())
717                {
718                    return false;
719                }
720                var /** number */ v_3 = base.limit - base.cursor;
721                lab2: {
722                    base.ket = base.cursor;
723                    if (base.find_among_b(a_4) == 0)
724                    {
725                        base.cursor = base.limit - v_3;
726                        break lab2;
727                    }
728                    base.bra = base.cursor;
729                    if (!r_R2())
730                    {
731                        base.cursor = base.limit - v_3;
732                        break lab2;
733                    }
734                    if (!base.slice_del())
735                    {
736                        return false;
737                    }
738                }
739                break;
740            case 8:
741                if (!r_R2())
742                {
743                    return false;
744                }
745                if (!base.slice_del())
746                {
747                    return false;
748                }
749                var /** number */ v_4 = base.limit - base.cursor;
750                lab3: {
751                    base.ket = base.cursor;
752                    if (base.find_among_b(a_5) == 0)
753                    {
754                        base.cursor = base.limit - v_4;
755                        break lab3;
756                    }
757                    base.bra = base.cursor;
758                    if (!r_R2())
759                    {
760                        base.cursor = base.limit - v_4;
761                        break lab3;
762                    }
763                    if (!base.slice_del())
764                    {
765                        return false;
766                    }
767                }
768                break;
769            case 9:
770                if (!r_R2())
771                {
772                    return false;
773                }
774                if (!base.slice_del())
775                {
776                    return false;
777                }
778                var /** number */ v_5 = base.limit - base.cursor;
779                lab4: {
780                    base.ket = base.cursor;
781                    if (!(base.eq_s_b("at")))
782                    {
783                        base.cursor = base.limit - v_5;
784                        break lab4;
785                    }
786                    base.bra = base.cursor;
787                    if (!r_R2())
788                    {
789                        base.cursor = base.limit - v_5;
790                        break lab4;
791                    }
792                    if (!base.slice_del())
793                    {
794                        return false;
795                    }
796                }
797                break;
798        }
799        return true;
800    };
801
802    /** @return {boolean} */
803    function r_y_verb_suffix() {
804        if (base.cursor < I_pV)
805        {
806            return false;
807        }
808        var /** number */ v_2 = base.limit_backward;
809        base.limit_backward = I_pV;
810        base.ket = base.cursor;
811        if (base.find_among_b(a_7) == 0)
812        {
813            base.limit_backward = v_2;
814            return false;
815        }
816        base.bra = base.cursor;
817        base.limit_backward = v_2;
818        if (!(base.eq_s_b("u")))
819        {
820            return false;
821        }
822        if (!base.slice_del())
823        {
824            return false;
825        }
826        return true;
827    };
828
829    /** @return {boolean} */
830    function r_verb_suffix() {
831        var /** number */ among_var;
832        if (base.cursor < I_pV)
833        {
834            return false;
835        }
836        var /** number */ v_2 = base.limit_backward;
837        base.limit_backward = I_pV;
838        base.ket = base.cursor;
839        among_var = base.find_among_b(a_8);
840        if (among_var == 0)
841        {
842            base.limit_backward = v_2;
843            return false;
844        }
845        base.bra = base.cursor;
846        base.limit_backward = v_2;
847        switch (among_var) {
848            case 1:
849                var /** number */ v_3 = base.limit - base.cursor;
850                lab0: {
851                    if (!(base.eq_s_b("u")))
852                    {
853                        base.cursor = base.limit - v_3;
854                        break lab0;
855                    }
856                    var /** number */ v_4 = base.limit - base.cursor;
857                    if (!(base.eq_s_b("g")))
858                    {
859                        base.cursor = base.limit - v_3;
860                        break lab0;
861                    }
862                    base.cursor = base.limit - v_4;
863                }
864                base.bra = base.cursor;
865                if (!base.slice_del())
866                {
867                    return false;
868                }
869                break;
870            case 2:
871                if (!base.slice_del())
872                {
873                    return false;
874                }
875                break;
876        }
877        return true;
878    };
879
880    /** @return {boolean} */
881    function r_residual_suffix() {
882        var /** number */ among_var;
883        base.ket = base.cursor;
884        among_var = base.find_among_b(a_9);
885        if (among_var == 0)
886        {
887            return false;
888        }
889        base.bra = base.cursor;
890        switch (among_var) {
891            case 1:
892                if (!r_RV())
893                {
894                    return false;
895                }
896                if (!base.slice_del())
897                {
898                    return false;
899                }
900                break;
901            case 2:
902                if (!r_RV())
903                {
904                    return false;
905                }
906                if (!base.slice_del())
907                {
908                    return false;
909                }
910                var /** number */ v_1 = base.limit - base.cursor;
911                lab0: {
912                    base.ket = base.cursor;
913                    if (!(base.eq_s_b("u")))
914                    {
915                        base.cursor = base.limit - v_1;
916                        break lab0;
917                    }
918                    base.bra = base.cursor;
919                    var /** number */ v_2 = base.limit - base.cursor;
920                    if (!(base.eq_s_b("g")))
921                    {
922                        base.cursor = base.limit - v_1;
923                        break lab0;
924                    }
925                    base.cursor = base.limit - v_2;
926                    if (!r_RV())
927                    {
928                        base.cursor = base.limit - v_1;
929                        break lab0;
930                    }
931                    if (!base.slice_del())
932                    {
933                        return false;
934                    }
935                }
936                break;
937        }
938        return true;
939    };
940
941    this.stem = /** @return {boolean} */ function() {
942        r_mark_regions();
943        base.limit_backward = base.cursor; base.cursor = base.limit;
944        var /** number */ v_2 = base.limit - base.cursor;
945        r_attached_pronoun();
946        base.cursor = base.limit - v_2;
947        var /** number */ v_3 = base.limit - base.cursor;
948        lab0: {
949            lab1: {
950                var /** number */ v_4 = base.limit - base.cursor;
951                lab2: {
952                    if (!r_standard_suffix())
953                    {
954                        break lab2;
955                    }
956                    break lab1;
957                }
958                base.cursor = base.limit - v_4;
959                lab3: {
960                    if (!r_y_verb_suffix())
961                    {
962                        break lab3;
963                    }
964                    break lab1;
965                }
966                base.cursor = base.limit - v_4;
967                if (!r_verb_suffix())
968                {
969                    break lab0;
970                }
971            }
972        }
973        base.cursor = base.limit - v_3;
974        var /** number */ v_5 = base.limit - base.cursor;
975        r_residual_suffix();
976        base.cursor = base.limit - v_5;
977        base.cursor = base.limit_backward;
978        var /** number */ v_6 = base.cursor;
979        r_postlude();
980        base.cursor = v_6;
981        return true;
982    };
983
984    /**@return{string}*/
985    this['stemWord'] = function(/**string*/word) {
986        base.setCurrent(word);
987        this.stem();
988        return base.getCurrent();
989    };
990};
991