1// Generated by Snowball 2.1.0 - https://snowballstem.org/
2
3/**@constructor*/
4TurkishStemmer = function() {
5    var base = new BaseStemmer();
6    /** @const */ var a_0 = [
7        ["m", -1, -1],
8        ["n", -1, -1],
9        ["miz", -1, -1],
10        ["niz", -1, -1],
11        ["muz", -1, -1],
12        ["nuz", -1, -1],
13        ["m\u00FCz", -1, -1],
14        ["n\u00FCz", -1, -1],
15        ["m\u0131z", -1, -1],
16        ["n\u0131z", -1, -1]
17    ];
18
19    /** @const */ var a_1 = [
20        ["leri", -1, -1],
21        ["lar\u0131", -1, -1]
22    ];
23
24    /** @const */ var a_2 = [
25        ["ni", -1, -1],
26        ["nu", -1, -1],
27        ["n\u00FC", -1, -1],
28        ["n\u0131", -1, -1]
29    ];
30
31    /** @const */ var a_3 = [
32        ["in", -1, -1],
33        ["un", -1, -1],
34        ["\u00FCn", -1, -1],
35        ["\u0131n", -1, -1]
36    ];
37
38    /** @const */ var a_4 = [
39        ["a", -1, -1],
40        ["e", -1, -1]
41    ];
42
43    /** @const */ var a_5 = [
44        ["na", -1, -1],
45        ["ne", -1, -1]
46    ];
47
48    /** @const */ var a_6 = [
49        ["da", -1, -1],
50        ["ta", -1, -1],
51        ["de", -1, -1],
52        ["te", -1, -1]
53    ];
54
55    /** @const */ var a_7 = [
56        ["nda", -1, -1],
57        ["nde", -1, -1]
58    ];
59
60    /** @const */ var a_8 = [
61        ["dan", -1, -1],
62        ["tan", -1, -1],
63        ["den", -1, -1],
64        ["ten", -1, -1]
65    ];
66
67    /** @const */ var a_9 = [
68        ["ndan", -1, -1],
69        ["nden", -1, -1]
70    ];
71
72    /** @const */ var a_10 = [
73        ["la", -1, -1],
74        ["le", -1, -1]
75    ];
76
77    /** @const */ var a_11 = [
78        ["ca", -1, -1],
79        ["ce", -1, -1]
80    ];
81
82    /** @const */ var a_12 = [
83        ["im", -1, -1],
84        ["um", -1, -1],
85        ["\u00FCm", -1, -1],
86        ["\u0131m", -1, -1]
87    ];
88
89    /** @const */ var a_13 = [
90        ["sin", -1, -1],
91        ["sun", -1, -1],
92        ["s\u00FCn", -1, -1],
93        ["s\u0131n", -1, -1]
94    ];
95
96    /** @const */ var a_14 = [
97        ["iz", -1, -1],
98        ["uz", -1, -1],
99        ["\u00FCz", -1, -1],
100        ["\u0131z", -1, -1]
101    ];
102
103    /** @const */ var a_15 = [
104        ["siniz", -1, -1],
105        ["sunuz", -1, -1],
106        ["s\u00FCn\u00FCz", -1, -1],
107        ["s\u0131n\u0131z", -1, -1]
108    ];
109
110    /** @const */ var a_16 = [
111        ["lar", -1, -1],
112        ["ler", -1, -1]
113    ];
114
115    /** @const */ var a_17 = [
116        ["niz", -1, -1],
117        ["nuz", -1, -1],
118        ["n\u00FCz", -1, -1],
119        ["n\u0131z", -1, -1]
120    ];
121
122    /** @const */ var a_18 = [
123        ["dir", -1, -1],
124        ["tir", -1, -1],
125        ["dur", -1, -1],
126        ["tur", -1, -1],
127        ["d\u00FCr", -1, -1],
128        ["t\u00FCr", -1, -1],
129        ["d\u0131r", -1, -1],
130        ["t\u0131r", -1, -1]
131    ];
132
133    /** @const */ var a_19 = [
134        ["cas\u0131na", -1, -1],
135        ["cesine", -1, -1]
136    ];
137
138    /** @const */ var a_20 = [
139        ["di", -1, -1],
140        ["ti", -1, -1],
141        ["dik", -1, -1],
142        ["tik", -1, -1],
143        ["duk", -1, -1],
144        ["tuk", -1, -1],
145        ["d\u00FCk", -1, -1],
146        ["t\u00FCk", -1, -1],
147        ["d\u0131k", -1, -1],
148        ["t\u0131k", -1, -1],
149        ["dim", -1, -1],
150        ["tim", -1, -1],
151        ["dum", -1, -1],
152        ["tum", -1, -1],
153        ["d\u00FCm", -1, -1],
154        ["t\u00FCm", -1, -1],
155        ["d\u0131m", -1, -1],
156        ["t\u0131m", -1, -1],
157        ["din", -1, -1],
158        ["tin", -1, -1],
159        ["dun", -1, -1],
160        ["tun", -1, -1],
161        ["d\u00FCn", -1, -1],
162        ["t\u00FCn", -1, -1],
163        ["d\u0131n", -1, -1],
164        ["t\u0131n", -1, -1],
165        ["du", -1, -1],
166        ["tu", -1, -1],
167        ["d\u00FC", -1, -1],
168        ["t\u00FC", -1, -1],
169        ["d\u0131", -1, -1],
170        ["t\u0131", -1, -1]
171    ];
172
173    /** @const */ var a_21 = [
174        ["sa", -1, -1],
175        ["se", -1, -1],
176        ["sak", -1, -1],
177        ["sek", -1, -1],
178        ["sam", -1, -1],
179        ["sem", -1, -1],
180        ["san", -1, -1],
181        ["sen", -1, -1]
182    ];
183
184    /** @const */ var a_22 = [
185        ["mi\u015F", -1, -1],
186        ["mu\u015F", -1, -1],
187        ["m\u00FC\u015F", -1, -1],
188        ["m\u0131\u015F", -1, -1]
189    ];
190
191    /** @const */ var a_23 = [
192        ["b", -1, 1],
193        ["c", -1, 2],
194        ["d", -1, 3],
195        ["\u011F", -1, 4]
196    ];
197
198    /** @const */ var /** Array<int> */ g_vowel = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 8, 0, 0, 0, 0, 0, 0, 1];
199
200    /** @const */ var /** Array<int> */ g_U = [1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1];
201
202    /** @const */ var /** Array<int> */ g_vowel1 = [1, 64, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1];
203
204    /** @const */ var /** Array<int> */ g_vowel2 = [17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130];
205
206    /** @const */ var /** Array<int> */ g_vowel3 = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1];
207
208    /** @const */ var /** Array<int> */ g_vowel4 = [17];
209
210    /** @const */ var /** Array<int> */ g_vowel5 = [65];
211
212    /** @const */ var /** Array<int> */ g_vowel6 = [65];
213
214    var /** boolean */ B_continue_stemming_noun_suffixes = false;
215
216
217    /** @return {boolean} */
218    function r_check_vowel_harmony() {
219        var /** number */ v_1 = base.limit - base.cursor;
220        golab0: while(true)
221        {
222            var /** number */ v_2 = base.limit - base.cursor;
223            lab1: {
224                if (!(base.in_grouping_b(g_vowel, 97, 305)))
225                {
226                    break lab1;
227                }
228                base.cursor = base.limit - v_2;
229                break golab0;
230            }
231            base.cursor = base.limit - v_2;
232            if (base.cursor <= base.limit_backward)
233            {
234                return false;
235            }
236            base.cursor--;
237        }
238        lab2: {
239            var /** number */ v_3 = base.limit - base.cursor;
240            lab3: {
241                if (!(base.eq_s_b("a")))
242                {
243                    break lab3;
244                }
245                golab4: while(true)
246                {
247                    var /** number */ v_4 = base.limit - base.cursor;
248                    lab5: {
249                        if (!(base.in_grouping_b(g_vowel1, 97, 305)))
250                        {
251                            break lab5;
252                        }
253                        base.cursor = base.limit - v_4;
254                        break golab4;
255                    }
256                    base.cursor = base.limit - v_4;
257                    if (base.cursor <= base.limit_backward)
258                    {
259                        break lab3;
260                    }
261                    base.cursor--;
262                }
263                break lab2;
264            }
265            base.cursor = base.limit - v_3;
266            lab6: {
267                if (!(base.eq_s_b("e")))
268                {
269                    break lab6;
270                }
271                golab7: while(true)
272                {
273                    var /** number */ v_5 = base.limit - base.cursor;
274                    lab8: {
275                        if (!(base.in_grouping_b(g_vowel2, 101, 252)))
276                        {
277                            break lab8;
278                        }
279                        base.cursor = base.limit - v_5;
280                        break golab7;
281                    }
282                    base.cursor = base.limit - v_5;
283                    if (base.cursor <= base.limit_backward)
284                    {
285                        break lab6;
286                    }
287                    base.cursor--;
288                }
289                break lab2;
290            }
291            base.cursor = base.limit - v_3;
292            lab9: {
293                if (!(base.eq_s_b("\u0131")))
294                {
295                    break lab9;
296                }
297                golab10: while(true)
298                {
299                    var /** number */ v_6 = base.limit - base.cursor;
300                    lab11: {
301                        if (!(base.in_grouping_b(g_vowel3, 97, 305)))
302                        {
303                            break lab11;
304                        }
305                        base.cursor = base.limit - v_6;
306                        break golab10;
307                    }
308                    base.cursor = base.limit - v_6;
309                    if (base.cursor <= base.limit_backward)
310                    {
311                        break lab9;
312                    }
313                    base.cursor--;
314                }
315                break lab2;
316            }
317            base.cursor = base.limit - v_3;
318            lab12: {
319                if (!(base.eq_s_b("i")))
320                {
321                    break lab12;
322                }
323                golab13: while(true)
324                {
325                    var /** number */ v_7 = base.limit - base.cursor;
326                    lab14: {
327                        if (!(base.in_grouping_b(g_vowel4, 101, 105)))
328                        {
329                            break lab14;
330                        }
331                        base.cursor = base.limit - v_7;
332                        break golab13;
333                    }
334                    base.cursor = base.limit - v_7;
335                    if (base.cursor <= base.limit_backward)
336                    {
337                        break lab12;
338                    }
339                    base.cursor--;
340                }
341                break lab2;
342            }
343            base.cursor = base.limit - v_3;
344            lab15: {
345                if (!(base.eq_s_b("o")))
346                {
347                    break lab15;
348                }
349                golab16: while(true)
350                {
351                    var /** number */ v_8 = base.limit - base.cursor;
352                    lab17: {
353                        if (!(base.in_grouping_b(g_vowel5, 111, 117)))
354                        {
355                            break lab17;
356                        }
357                        base.cursor = base.limit - v_8;
358                        break golab16;
359                    }
360                    base.cursor = base.limit - v_8;
361                    if (base.cursor <= base.limit_backward)
362                    {
363                        break lab15;
364                    }
365                    base.cursor--;
366                }
367                break lab2;
368            }
369            base.cursor = base.limit - v_3;
370            lab18: {
371                if (!(base.eq_s_b("\u00F6")))
372                {
373                    break lab18;
374                }
375                golab19: while(true)
376                {
377                    var /** number */ v_9 = base.limit - base.cursor;
378                    lab20: {
379                        if (!(base.in_grouping_b(g_vowel6, 246, 252)))
380                        {
381                            break lab20;
382                        }
383                        base.cursor = base.limit - v_9;
384                        break golab19;
385                    }
386                    base.cursor = base.limit - v_9;
387                    if (base.cursor <= base.limit_backward)
388                    {
389                        break lab18;
390                    }
391                    base.cursor--;
392                }
393                break lab2;
394            }
395            base.cursor = base.limit - v_3;
396            lab21: {
397                if (!(base.eq_s_b("u")))
398                {
399                    break lab21;
400                }
401                golab22: while(true)
402                {
403                    var /** number */ v_10 = base.limit - base.cursor;
404                    lab23: {
405                        if (!(base.in_grouping_b(g_vowel5, 111, 117)))
406                        {
407                            break lab23;
408                        }
409                        base.cursor = base.limit - v_10;
410                        break golab22;
411                    }
412                    base.cursor = base.limit - v_10;
413                    if (base.cursor <= base.limit_backward)
414                    {
415                        break lab21;
416                    }
417                    base.cursor--;
418                }
419                break lab2;
420            }
421            base.cursor = base.limit - v_3;
422            if (!(base.eq_s_b("\u00FC")))
423            {
424                return false;
425            }
426            golab24: while(true)
427            {
428                var /** number */ v_11 = base.limit - base.cursor;
429                lab25: {
430                    if (!(base.in_grouping_b(g_vowel6, 246, 252)))
431                    {
432                        break lab25;
433                    }
434                    base.cursor = base.limit - v_11;
435                    break golab24;
436                }
437                base.cursor = base.limit - v_11;
438                if (base.cursor <= base.limit_backward)
439                {
440                    return false;
441                }
442                base.cursor--;
443            }
444        }
445        base.cursor = base.limit - v_1;
446        return true;
447    };
448
449    /** @return {boolean} */
450    function r_mark_suffix_with_optional_n_consonant() {
451        lab0: {
452            var /** number */ v_1 = base.limit - base.cursor;
453            lab1: {
454                if (!(base.eq_s_b("n")))
455                {
456                    break lab1;
457                }
458                var /** number */ v_2 = base.limit - base.cursor;
459                if (!(base.in_grouping_b(g_vowel, 97, 305)))
460                {
461                    break lab1;
462                }
463                base.cursor = base.limit - v_2;
464                break lab0;
465            }
466            base.cursor = base.limit - v_1;
467            {
468                var /** number */ v_3 = base.limit - base.cursor;
469                lab2: {
470                    var /** number */ v_4 = base.limit - base.cursor;
471                    if (!(base.eq_s_b("n")))
472                    {
473                        break lab2;
474                    }
475                    base.cursor = base.limit - v_4;
476                    return false;
477                }
478                base.cursor = base.limit - v_3;
479            }
480            var /** number */ v_5 = base.limit - base.cursor;
481            if (base.cursor <= base.limit_backward)
482            {
483                return false;
484            }
485            base.cursor--;
486            if (!(base.in_grouping_b(g_vowel, 97, 305)))
487            {
488                return false;
489            }
490            base.cursor = base.limit - v_5;
491        }
492        return true;
493    };
494
495    /** @return {boolean} */
496    function r_mark_suffix_with_optional_s_consonant() {
497        lab0: {
498            var /** number */ v_1 = base.limit - base.cursor;
499            lab1: {
500                if (!(base.eq_s_b("s")))
501                {
502                    break lab1;
503                }
504                var /** number */ v_2 = base.limit - base.cursor;
505                if (!(base.in_grouping_b(g_vowel, 97, 305)))
506                {
507                    break lab1;
508                }
509                base.cursor = base.limit - v_2;
510                break lab0;
511            }
512            base.cursor = base.limit - v_1;
513            {
514                var /** number */ v_3 = base.limit - base.cursor;
515                lab2: {
516                    var /** number */ v_4 = base.limit - base.cursor;
517                    if (!(base.eq_s_b("s")))
518                    {
519                        break lab2;
520                    }
521                    base.cursor = base.limit - v_4;
522                    return false;
523                }
524                base.cursor = base.limit - v_3;
525            }
526            var /** number */ v_5 = base.limit - base.cursor;
527            if (base.cursor <= base.limit_backward)
528            {
529                return false;
530            }
531            base.cursor--;
532            if (!(base.in_grouping_b(g_vowel, 97, 305)))
533            {
534                return false;
535            }
536            base.cursor = base.limit - v_5;
537        }
538        return true;
539    };
540
541    /** @return {boolean} */
542    function r_mark_suffix_with_optional_y_consonant() {
543        lab0: {
544            var /** number */ v_1 = base.limit - base.cursor;
545            lab1: {
546                if (!(base.eq_s_b("y")))
547                {
548                    break lab1;
549                }
550                var /** number */ v_2 = base.limit - base.cursor;
551                if (!(base.in_grouping_b(g_vowel, 97, 305)))
552                {
553                    break lab1;
554                }
555                base.cursor = base.limit - v_2;
556                break lab0;
557            }
558            base.cursor = base.limit - v_1;
559            {
560                var /** number */ v_3 = base.limit - base.cursor;
561                lab2: {
562                    var /** number */ v_4 = base.limit - base.cursor;
563                    if (!(base.eq_s_b("y")))
564                    {
565                        break lab2;
566                    }
567                    base.cursor = base.limit - v_4;
568                    return false;
569                }
570                base.cursor = base.limit - v_3;
571            }
572            var /** number */ v_5 = base.limit - base.cursor;
573            if (base.cursor <= base.limit_backward)
574            {
575                return false;
576            }
577            base.cursor--;
578            if (!(base.in_grouping_b(g_vowel, 97, 305)))
579            {
580                return false;
581            }
582            base.cursor = base.limit - v_5;
583        }
584        return true;
585    };
586
587    /** @return {boolean} */
588    function r_mark_suffix_with_optional_U_vowel() {
589        lab0: {
590            var /** number */ v_1 = base.limit - base.cursor;
591            lab1: {
592                if (!(base.in_grouping_b(g_U, 105, 305)))
593                {
594                    break lab1;
595                }
596                var /** number */ v_2 = base.limit - base.cursor;
597                if (!(base.out_grouping_b(g_vowel, 97, 305)))
598                {
599                    break lab1;
600                }
601                base.cursor = base.limit - v_2;
602                break lab0;
603            }
604            base.cursor = base.limit - v_1;
605            {
606                var /** number */ v_3 = base.limit - base.cursor;
607                lab2: {
608                    var /** number */ v_4 = base.limit - base.cursor;
609                    if (!(base.in_grouping_b(g_U, 105, 305)))
610                    {
611                        break lab2;
612                    }
613                    base.cursor = base.limit - v_4;
614                    return false;
615                }
616                base.cursor = base.limit - v_3;
617            }
618            var /** number */ v_5 = base.limit - base.cursor;
619            if (base.cursor <= base.limit_backward)
620            {
621                return false;
622            }
623            base.cursor--;
624            if (!(base.out_grouping_b(g_vowel, 97, 305)))
625            {
626                return false;
627            }
628            base.cursor = base.limit - v_5;
629        }
630        return true;
631    };
632
633    /** @return {boolean} */
634    function r_mark_possessives() {
635        if (base.find_among_b(a_0) == 0)
636        {
637            return false;
638        }
639        if (!r_mark_suffix_with_optional_U_vowel())
640        {
641            return false;
642        }
643        return true;
644    };
645
646    /** @return {boolean} */
647    function r_mark_sU() {
648        if (!r_check_vowel_harmony())
649        {
650            return false;
651        }
652        if (!(base.in_grouping_b(g_U, 105, 305)))
653        {
654            return false;
655        }
656        if (!r_mark_suffix_with_optional_s_consonant())
657        {
658            return false;
659        }
660        return true;
661    };
662
663    /** @return {boolean} */
664    function r_mark_lArI() {
665        if (base.find_among_b(a_1) == 0)
666        {
667            return false;
668        }
669        return true;
670    };
671
672    /** @return {boolean} */
673    function r_mark_yU() {
674        if (!r_check_vowel_harmony())
675        {
676            return false;
677        }
678        if (!(base.in_grouping_b(g_U, 105, 305)))
679        {
680            return false;
681        }
682        if (!r_mark_suffix_with_optional_y_consonant())
683        {
684            return false;
685        }
686        return true;
687    };
688
689    /** @return {boolean} */
690    function r_mark_nU() {
691        if (!r_check_vowel_harmony())
692        {
693            return false;
694        }
695        if (base.find_among_b(a_2) == 0)
696        {
697            return false;
698        }
699        return true;
700    };
701
702    /** @return {boolean} */
703    function r_mark_nUn() {
704        if (!r_check_vowel_harmony())
705        {
706            return false;
707        }
708        if (base.find_among_b(a_3) == 0)
709        {
710            return false;
711        }
712        if (!r_mark_suffix_with_optional_n_consonant())
713        {
714            return false;
715        }
716        return true;
717    };
718
719    /** @return {boolean} */
720    function r_mark_yA() {
721        if (!r_check_vowel_harmony())
722        {
723            return false;
724        }
725        if (base.find_among_b(a_4) == 0)
726        {
727            return false;
728        }
729        if (!r_mark_suffix_with_optional_y_consonant())
730        {
731            return false;
732        }
733        return true;
734    };
735
736    /** @return {boolean} */
737    function r_mark_nA() {
738        if (!r_check_vowel_harmony())
739        {
740            return false;
741        }
742        if (base.find_among_b(a_5) == 0)
743        {
744            return false;
745        }
746        return true;
747    };
748
749    /** @return {boolean} */
750    function r_mark_DA() {
751        if (!r_check_vowel_harmony())
752        {
753            return false;
754        }
755        if (base.find_among_b(a_6) == 0)
756        {
757            return false;
758        }
759        return true;
760    };
761
762    /** @return {boolean} */
763    function r_mark_ndA() {
764        if (!r_check_vowel_harmony())
765        {
766            return false;
767        }
768        if (base.find_among_b(a_7) == 0)
769        {
770            return false;
771        }
772        return true;
773    };
774
775    /** @return {boolean} */
776    function r_mark_DAn() {
777        if (!r_check_vowel_harmony())
778        {
779            return false;
780        }
781        if (base.find_among_b(a_8) == 0)
782        {
783            return false;
784        }
785        return true;
786    };
787
788    /** @return {boolean} */
789    function r_mark_ndAn() {
790        if (!r_check_vowel_harmony())
791        {
792            return false;
793        }
794        if (base.find_among_b(a_9) == 0)
795        {
796            return false;
797        }
798        return true;
799    };
800
801    /** @return {boolean} */
802    function r_mark_ylA() {
803        if (!r_check_vowel_harmony())
804        {
805            return false;
806        }
807        if (base.find_among_b(a_10) == 0)
808        {
809            return false;
810        }
811        if (!r_mark_suffix_with_optional_y_consonant())
812        {
813            return false;
814        }
815        return true;
816    };
817
818    /** @return {boolean} */
819    function r_mark_ki() {
820        if (!(base.eq_s_b("ki")))
821        {
822            return false;
823        }
824        return true;
825    };
826
827    /** @return {boolean} */
828    function r_mark_ncA() {
829        if (!r_check_vowel_harmony())
830        {
831            return false;
832        }
833        if (base.find_among_b(a_11) == 0)
834        {
835            return false;
836        }
837        if (!r_mark_suffix_with_optional_n_consonant())
838        {
839            return false;
840        }
841        return true;
842    };
843
844    /** @return {boolean} */
845    function r_mark_yUm() {
846        if (!r_check_vowel_harmony())
847        {
848            return false;
849        }
850        if (base.find_among_b(a_12) == 0)
851        {
852            return false;
853        }
854        if (!r_mark_suffix_with_optional_y_consonant())
855        {
856            return false;
857        }
858        return true;
859    };
860
861    /** @return {boolean} */
862    function r_mark_sUn() {
863        if (!r_check_vowel_harmony())
864        {
865            return false;
866        }
867        if (base.find_among_b(a_13) == 0)
868        {
869            return false;
870        }
871        return true;
872    };
873
874    /** @return {boolean} */
875    function r_mark_yUz() {
876        if (!r_check_vowel_harmony())
877        {
878            return false;
879        }
880        if (base.find_among_b(a_14) == 0)
881        {
882            return false;
883        }
884        if (!r_mark_suffix_with_optional_y_consonant())
885        {
886            return false;
887        }
888        return true;
889    };
890
891    /** @return {boolean} */
892    function r_mark_sUnUz() {
893        if (base.find_among_b(a_15) == 0)
894        {
895            return false;
896        }
897        return true;
898    };
899
900    /** @return {boolean} */
901    function r_mark_lAr() {
902        if (!r_check_vowel_harmony())
903        {
904            return false;
905        }
906        if (base.find_among_b(a_16) == 0)
907        {
908            return false;
909        }
910        return true;
911    };
912
913    /** @return {boolean} */
914    function r_mark_nUz() {
915        if (!r_check_vowel_harmony())
916        {
917            return false;
918        }
919        if (base.find_among_b(a_17) == 0)
920        {
921            return false;
922        }
923        return true;
924    };
925
926    /** @return {boolean} */
927    function r_mark_DUr() {
928        if (!r_check_vowel_harmony())
929        {
930            return false;
931        }
932        if (base.find_among_b(a_18) == 0)
933        {
934            return false;
935        }
936        return true;
937    };
938
939    /** @return {boolean} */
940    function r_mark_cAsInA() {
941        if (base.find_among_b(a_19) == 0)
942        {
943            return false;
944        }
945        return true;
946    };
947
948    /** @return {boolean} */
949    function r_mark_yDU() {
950        if (!r_check_vowel_harmony())
951        {
952            return false;
953        }
954        if (base.find_among_b(a_20) == 0)
955        {
956            return false;
957        }
958        if (!r_mark_suffix_with_optional_y_consonant())
959        {
960            return false;
961        }
962        return true;
963    };
964
965    /** @return {boolean} */
966    function r_mark_ysA() {
967        if (base.find_among_b(a_21) == 0)
968        {
969            return false;
970        }
971        if (!r_mark_suffix_with_optional_y_consonant())
972        {
973            return false;
974        }
975        return true;
976    };
977
978    /** @return {boolean} */
979    function r_mark_ymUs_() {
980        if (!r_check_vowel_harmony())
981        {
982            return false;
983        }
984        if (base.find_among_b(a_22) == 0)
985        {
986            return false;
987        }
988        if (!r_mark_suffix_with_optional_y_consonant())
989        {
990            return false;
991        }
992        return true;
993    };
994
995    /** @return {boolean} */
996    function r_mark_yken() {
997        if (!(base.eq_s_b("ken")))
998        {
999            return false;
1000        }
1001        if (!r_mark_suffix_with_optional_y_consonant())
1002        {
1003            return false;
1004        }
1005        return true;
1006    };
1007
1008    /** @return {boolean} */
1009    function r_stem_nominal_verb_suffixes() {
1010        base.ket = base.cursor;
1011        B_continue_stemming_noun_suffixes = true;
1012        lab0: {
1013            var /** number */ v_1 = base.limit - base.cursor;
1014            lab1: {
1015                lab2: {
1016                    var /** number */ v_2 = base.limit - base.cursor;
1017                    lab3: {
1018                        if (!r_mark_ymUs_())
1019                        {
1020                            break lab3;
1021                        }
1022                        break lab2;
1023                    }
1024                    base.cursor = base.limit - v_2;
1025                    lab4: {
1026                        if (!r_mark_yDU())
1027                        {
1028                            break lab4;
1029                        }
1030                        break lab2;
1031                    }
1032                    base.cursor = base.limit - v_2;
1033                    lab5: {
1034                        if (!r_mark_ysA())
1035                        {
1036                            break lab5;
1037                        }
1038                        break lab2;
1039                    }
1040                    base.cursor = base.limit - v_2;
1041                    if (!r_mark_yken())
1042                    {
1043                        break lab1;
1044                    }
1045                }
1046                break lab0;
1047            }
1048            base.cursor = base.limit - v_1;
1049            lab6: {
1050                if (!r_mark_cAsInA())
1051                {
1052                    break lab6;
1053                }
1054                lab7: {
1055                    var /** number */ v_3 = base.limit - base.cursor;
1056                    lab8: {
1057                        if (!r_mark_sUnUz())
1058                        {
1059                            break lab8;
1060                        }
1061                        break lab7;
1062                    }
1063                    base.cursor = base.limit - v_3;
1064                    lab9: {
1065                        if (!r_mark_lAr())
1066                        {
1067                            break lab9;
1068                        }
1069                        break lab7;
1070                    }
1071                    base.cursor = base.limit - v_3;
1072                    lab10: {
1073                        if (!r_mark_yUm())
1074                        {
1075                            break lab10;
1076                        }
1077                        break lab7;
1078                    }
1079                    base.cursor = base.limit - v_3;
1080                    lab11: {
1081                        if (!r_mark_sUn())
1082                        {
1083                            break lab11;
1084                        }
1085                        break lab7;
1086                    }
1087                    base.cursor = base.limit - v_3;
1088                    lab12: {
1089                        if (!r_mark_yUz())
1090                        {
1091                            break lab12;
1092                        }
1093                        break lab7;
1094                    }
1095                    base.cursor = base.limit - v_3;
1096                }
1097                if (!r_mark_ymUs_())
1098                {
1099                    break lab6;
1100                }
1101                break lab0;
1102            }
1103            base.cursor = base.limit - v_1;
1104            lab13: {
1105                if (!r_mark_lAr())
1106                {
1107                    break lab13;
1108                }
1109                base.bra = base.cursor;
1110                if (!base.slice_del())
1111                {
1112                    return false;
1113                }
1114                var /** number */ v_4 = base.limit - base.cursor;
1115                lab14: {
1116                    base.ket = base.cursor;
1117                    lab15: {
1118                        var /** number */ v_5 = base.limit - base.cursor;
1119                        lab16: {
1120                            if (!r_mark_DUr())
1121                            {
1122                                break lab16;
1123                            }
1124                            break lab15;
1125                        }
1126                        base.cursor = base.limit - v_5;
1127                        lab17: {
1128                            if (!r_mark_yDU())
1129                            {
1130                                break lab17;
1131                            }
1132                            break lab15;
1133                        }
1134                        base.cursor = base.limit - v_5;
1135                        lab18: {
1136                            if (!r_mark_ysA())
1137                            {
1138                                break lab18;
1139                            }
1140                            break lab15;
1141                        }
1142                        base.cursor = base.limit - v_5;
1143                        if (!r_mark_ymUs_())
1144                        {
1145                            base.cursor = base.limit - v_4;
1146                            break lab14;
1147                        }
1148                    }
1149                }
1150                B_continue_stemming_noun_suffixes = false;
1151                break lab0;
1152            }
1153            base.cursor = base.limit - v_1;
1154            lab19: {
1155                if (!r_mark_nUz())
1156                {
1157                    break lab19;
1158                }
1159                lab20: {
1160                    var /** number */ v_6 = base.limit - base.cursor;
1161                    lab21: {
1162                        if (!r_mark_yDU())
1163                        {
1164                            break lab21;
1165                        }
1166                        break lab20;
1167                    }
1168                    base.cursor = base.limit - v_6;
1169                    if (!r_mark_ysA())
1170                    {
1171                        break lab19;
1172                    }
1173                }
1174                break lab0;
1175            }
1176            base.cursor = base.limit - v_1;
1177            lab22: {
1178                lab23: {
1179                    var /** number */ v_7 = base.limit - base.cursor;
1180                    lab24: {
1181                        if (!r_mark_sUnUz())
1182                        {
1183                            break lab24;
1184                        }
1185                        break lab23;
1186                    }
1187                    base.cursor = base.limit - v_7;
1188                    lab25: {
1189                        if (!r_mark_yUz())
1190                        {
1191                            break lab25;
1192                        }
1193                        break lab23;
1194                    }
1195                    base.cursor = base.limit - v_7;
1196                    lab26: {
1197                        if (!r_mark_sUn())
1198                        {
1199                            break lab26;
1200                        }
1201                        break lab23;
1202                    }
1203                    base.cursor = base.limit - v_7;
1204                    if (!r_mark_yUm())
1205                    {
1206                        break lab22;
1207                    }
1208                }
1209                base.bra = base.cursor;
1210                if (!base.slice_del())
1211                {
1212                    return false;
1213                }
1214                var /** number */ v_8 = base.limit - base.cursor;
1215                lab27: {
1216                    base.ket = base.cursor;
1217                    if (!r_mark_ymUs_())
1218                    {
1219                        base.cursor = base.limit - v_8;
1220                        break lab27;
1221                    }
1222                }
1223                break lab0;
1224            }
1225            base.cursor = base.limit - v_1;
1226            if (!r_mark_DUr())
1227            {
1228                return false;
1229            }
1230            base.bra = base.cursor;
1231            if (!base.slice_del())
1232            {
1233                return false;
1234            }
1235            var /** number */ v_9 = base.limit - base.cursor;
1236            lab28: {
1237                base.ket = base.cursor;
1238                lab29: {
1239                    var /** number */ v_10 = base.limit - base.cursor;
1240                    lab30: {
1241                        if (!r_mark_sUnUz())
1242                        {
1243                            break lab30;
1244                        }
1245                        break lab29;
1246                    }
1247                    base.cursor = base.limit - v_10;
1248                    lab31: {
1249                        if (!r_mark_lAr())
1250                        {
1251                            break lab31;
1252                        }
1253                        break lab29;
1254                    }
1255                    base.cursor = base.limit - v_10;
1256                    lab32: {
1257                        if (!r_mark_yUm())
1258                        {
1259                            break lab32;
1260                        }
1261                        break lab29;
1262                    }
1263                    base.cursor = base.limit - v_10;
1264                    lab33: {
1265                        if (!r_mark_sUn())
1266                        {
1267                            break lab33;
1268                        }
1269                        break lab29;
1270                    }
1271                    base.cursor = base.limit - v_10;
1272                    lab34: {
1273                        if (!r_mark_yUz())
1274                        {
1275                            break lab34;
1276                        }
1277                        break lab29;
1278                    }
1279                    base.cursor = base.limit - v_10;
1280                }
1281                if (!r_mark_ymUs_())
1282                {
1283                    base.cursor = base.limit - v_9;
1284                    break lab28;
1285                }
1286            }
1287        }
1288        base.bra = base.cursor;
1289        if (!base.slice_del())
1290        {
1291            return false;
1292        }
1293        return true;
1294    };
1295
1296    /** @return {boolean} */
1297    function r_stem_suffix_chain_before_ki() {
1298        base.ket = base.cursor;
1299        if (!r_mark_ki())
1300        {
1301            return false;
1302        }
1303        lab0: {
1304            var /** number */ v_1 = base.limit - base.cursor;
1305            lab1: {
1306                if (!r_mark_DA())
1307                {
1308                    break lab1;
1309                }
1310                base.bra = base.cursor;
1311                if (!base.slice_del())
1312                {
1313                    return false;
1314                }
1315                var /** number */ v_2 = base.limit - base.cursor;
1316                lab2: {
1317                    base.ket = base.cursor;
1318                    lab3: {
1319                        var /** number */ v_3 = base.limit - base.cursor;
1320                        lab4: {
1321                            if (!r_mark_lAr())
1322                            {
1323                                break lab4;
1324                            }
1325                            base.bra = base.cursor;
1326                            if (!base.slice_del())
1327                            {
1328                                return false;
1329                            }
1330                            var /** number */ v_4 = base.limit - base.cursor;
1331                            lab5: {
1332                                if (!r_stem_suffix_chain_before_ki())
1333                                {
1334                                    base.cursor = base.limit - v_4;
1335                                    break lab5;
1336                                }
1337                            }
1338                            break lab3;
1339                        }
1340                        base.cursor = base.limit - v_3;
1341                        if (!r_mark_possessives())
1342                        {
1343                            base.cursor = base.limit - v_2;
1344                            break lab2;
1345                        }
1346                        base.bra = base.cursor;
1347                        if (!base.slice_del())
1348                        {
1349                            return false;
1350                        }
1351                        var /** number */ v_5 = base.limit - base.cursor;
1352                        lab6: {
1353                            base.ket = base.cursor;
1354                            if (!r_mark_lAr())
1355                            {
1356                                base.cursor = base.limit - v_5;
1357                                break lab6;
1358                            }
1359                            base.bra = base.cursor;
1360                            if (!base.slice_del())
1361                            {
1362                                return false;
1363                            }
1364                            if (!r_stem_suffix_chain_before_ki())
1365                            {
1366                                base.cursor = base.limit - v_5;
1367                                break lab6;
1368                            }
1369                        }
1370                    }
1371                }
1372                break lab0;
1373            }
1374            base.cursor = base.limit - v_1;
1375            lab7: {
1376                if (!r_mark_nUn())
1377                {
1378                    break lab7;
1379                }
1380                base.bra = base.cursor;
1381                if (!base.slice_del())
1382                {
1383                    return false;
1384                }
1385                var /** number */ v_6 = base.limit - base.cursor;
1386                lab8: {
1387                    base.ket = base.cursor;
1388                    lab9: {
1389                        var /** number */ v_7 = base.limit - base.cursor;
1390                        lab10: {
1391                            if (!r_mark_lArI())
1392                            {
1393                                break lab10;
1394                            }
1395                            base.bra = base.cursor;
1396                            if (!base.slice_del())
1397                            {
1398                                return false;
1399                            }
1400                            break lab9;
1401                        }
1402                        base.cursor = base.limit - v_7;
1403                        lab11: {
1404                            base.ket = base.cursor;
1405                            lab12: {
1406                                var /** number */ v_8 = base.limit - base.cursor;
1407                                lab13: {
1408                                    if (!r_mark_possessives())
1409                                    {
1410                                        break lab13;
1411                                    }
1412                                    break lab12;
1413                                }
1414                                base.cursor = base.limit - v_8;
1415                                if (!r_mark_sU())
1416                                {
1417                                    break lab11;
1418                                }
1419                            }
1420                            base.bra = base.cursor;
1421                            if (!base.slice_del())
1422                            {
1423                                return false;
1424                            }
1425                            var /** number */ v_9 = base.limit - base.cursor;
1426                            lab14: {
1427                                base.ket = base.cursor;
1428                                if (!r_mark_lAr())
1429                                {
1430                                    base.cursor = base.limit - v_9;
1431                                    break lab14;
1432                                }
1433                                base.bra = base.cursor;
1434                                if (!base.slice_del())
1435                                {
1436                                    return false;
1437                                }
1438                                if (!r_stem_suffix_chain_before_ki())
1439                                {
1440                                    base.cursor = base.limit - v_9;
1441                                    break lab14;
1442                                }
1443                            }
1444                            break lab9;
1445                        }
1446                        base.cursor = base.limit - v_7;
1447                        if (!r_stem_suffix_chain_before_ki())
1448                        {
1449                            base.cursor = base.limit - v_6;
1450                            break lab8;
1451                        }
1452                    }
1453                }
1454                break lab0;
1455            }
1456            base.cursor = base.limit - v_1;
1457            if (!r_mark_ndA())
1458            {
1459                return false;
1460            }
1461            lab15: {
1462                var /** number */ v_10 = base.limit - base.cursor;
1463                lab16: {
1464                    if (!r_mark_lArI())
1465                    {
1466                        break lab16;
1467                    }
1468                    base.bra = base.cursor;
1469                    if (!base.slice_del())
1470                    {
1471                        return false;
1472                    }
1473                    break lab15;
1474                }
1475                base.cursor = base.limit - v_10;
1476                lab17: {
1477                    if (!r_mark_sU())
1478                    {
1479                        break lab17;
1480                    }
1481                    base.bra = base.cursor;
1482                    if (!base.slice_del())
1483                    {
1484                        return false;
1485                    }
1486                    var /** number */ v_11 = base.limit - base.cursor;
1487                    lab18: {
1488                        base.ket = base.cursor;
1489                        if (!r_mark_lAr())
1490                        {
1491                            base.cursor = base.limit - v_11;
1492                            break lab18;
1493                        }
1494                        base.bra = base.cursor;
1495                        if (!base.slice_del())
1496                        {
1497                            return false;
1498                        }
1499                        if (!r_stem_suffix_chain_before_ki())
1500                        {
1501                            base.cursor = base.limit - v_11;
1502                            break lab18;
1503                        }
1504                    }
1505                    break lab15;
1506                }
1507                base.cursor = base.limit - v_10;
1508                if (!r_stem_suffix_chain_before_ki())
1509                {
1510                    return false;
1511                }
1512            }
1513        }
1514        return true;
1515    };
1516
1517    /** @return {boolean} */
1518    function r_stem_noun_suffixes() {
1519        lab0: {
1520            var /** number */ v_1 = base.limit - base.cursor;
1521            lab1: {
1522                base.ket = base.cursor;
1523                if (!r_mark_lAr())
1524                {
1525                    break lab1;
1526                }
1527                base.bra = base.cursor;
1528                if (!base.slice_del())
1529                {
1530                    return false;
1531                }
1532                var /** number */ v_2 = base.limit - base.cursor;
1533                lab2: {
1534                    if (!r_stem_suffix_chain_before_ki())
1535                    {
1536                        base.cursor = base.limit - v_2;
1537                        break lab2;
1538                    }
1539                }
1540                break lab0;
1541            }
1542            base.cursor = base.limit - v_1;
1543            lab3: {
1544                base.ket = base.cursor;
1545                if (!r_mark_ncA())
1546                {
1547                    break lab3;
1548                }
1549                base.bra = base.cursor;
1550                if (!base.slice_del())
1551                {
1552                    return false;
1553                }
1554                var /** number */ v_3 = base.limit - base.cursor;
1555                lab4: {
1556                    lab5: {
1557                        var /** number */ v_4 = base.limit - base.cursor;
1558                        lab6: {
1559                            base.ket = base.cursor;
1560                            if (!r_mark_lArI())
1561                            {
1562                                break lab6;
1563                            }
1564                            base.bra = base.cursor;
1565                            if (!base.slice_del())
1566                            {
1567                                return false;
1568                            }
1569                            break lab5;
1570                        }
1571                        base.cursor = base.limit - v_4;
1572                        lab7: {
1573                            base.ket = base.cursor;
1574                            lab8: {
1575                                var /** number */ v_5 = base.limit - base.cursor;
1576                                lab9: {
1577                                    if (!r_mark_possessives())
1578                                    {
1579                                        break lab9;
1580                                    }
1581                                    break lab8;
1582                                }
1583                                base.cursor = base.limit - v_5;
1584                                if (!r_mark_sU())
1585                                {
1586                                    break lab7;
1587                                }
1588                            }
1589                            base.bra = base.cursor;
1590                            if (!base.slice_del())
1591                            {
1592                                return false;
1593                            }
1594                            var /** number */ v_6 = base.limit - base.cursor;
1595                            lab10: {
1596                                base.ket = base.cursor;
1597                                if (!r_mark_lAr())
1598                                {
1599                                    base.cursor = base.limit - v_6;
1600                                    break lab10;
1601                                }
1602                                base.bra = base.cursor;
1603                                if (!base.slice_del())
1604                                {
1605                                    return false;
1606                                }
1607                                if (!r_stem_suffix_chain_before_ki())
1608                                {
1609                                    base.cursor = base.limit - v_6;
1610                                    break lab10;
1611                                }
1612                            }
1613                            break lab5;
1614                        }
1615                        base.cursor = base.limit - v_4;
1616                        base.ket = base.cursor;
1617                        if (!r_mark_lAr())
1618                        {
1619                            base.cursor = base.limit - v_3;
1620                            break lab4;
1621                        }
1622                        base.bra = base.cursor;
1623                        if (!base.slice_del())
1624                        {
1625                            return false;
1626                        }
1627                        if (!r_stem_suffix_chain_before_ki())
1628                        {
1629                            base.cursor = base.limit - v_3;
1630                            break lab4;
1631                        }
1632                    }
1633                }
1634                break lab0;
1635            }
1636            base.cursor = base.limit - v_1;
1637            lab11: {
1638                base.ket = base.cursor;
1639                lab12: {
1640                    var /** number */ v_7 = base.limit - base.cursor;
1641                    lab13: {
1642                        if (!r_mark_ndA())
1643                        {
1644                            break lab13;
1645                        }
1646                        break lab12;
1647                    }
1648                    base.cursor = base.limit - v_7;
1649                    if (!r_mark_nA())
1650                    {
1651                        break lab11;
1652                    }
1653                }
1654                lab14: {
1655                    var /** number */ v_8 = base.limit - base.cursor;
1656                    lab15: {
1657                        if (!r_mark_lArI())
1658                        {
1659                            break lab15;
1660                        }
1661                        base.bra = base.cursor;
1662                        if (!base.slice_del())
1663                        {
1664                            return false;
1665                        }
1666                        break lab14;
1667                    }
1668                    base.cursor = base.limit - v_8;
1669                    lab16: {
1670                        if (!r_mark_sU())
1671                        {
1672                            break lab16;
1673                        }
1674                        base.bra = base.cursor;
1675                        if (!base.slice_del())
1676                        {
1677                            return false;
1678                        }
1679                        var /** number */ v_9 = base.limit - base.cursor;
1680                        lab17: {
1681                            base.ket = base.cursor;
1682                            if (!r_mark_lAr())
1683                            {
1684                                base.cursor = base.limit - v_9;
1685                                break lab17;
1686                            }
1687                            base.bra = base.cursor;
1688                            if (!base.slice_del())
1689                            {
1690                                return false;
1691                            }
1692                            if (!r_stem_suffix_chain_before_ki())
1693                            {
1694                                base.cursor = base.limit - v_9;
1695                                break lab17;
1696                            }
1697                        }
1698                        break lab14;
1699                    }
1700                    base.cursor = base.limit - v_8;
1701                    if (!r_stem_suffix_chain_before_ki())
1702                    {
1703                        break lab11;
1704                    }
1705                }
1706                break lab0;
1707            }
1708            base.cursor = base.limit - v_1;
1709            lab18: {
1710                base.ket = base.cursor;
1711                lab19: {
1712                    var /** number */ v_10 = base.limit - base.cursor;
1713                    lab20: {
1714                        if (!r_mark_ndAn())
1715                        {
1716                            break lab20;
1717                        }
1718                        break lab19;
1719                    }
1720                    base.cursor = base.limit - v_10;
1721                    if (!r_mark_nU())
1722                    {
1723                        break lab18;
1724                    }
1725                }
1726                lab21: {
1727                    var /** number */ v_11 = base.limit - base.cursor;
1728                    lab22: {
1729                        if (!r_mark_sU())
1730                        {
1731                            break lab22;
1732                        }
1733                        base.bra = base.cursor;
1734                        if (!base.slice_del())
1735                        {
1736                            return false;
1737                        }
1738                        var /** number */ v_12 = base.limit - base.cursor;
1739                        lab23: {
1740                            base.ket = base.cursor;
1741                            if (!r_mark_lAr())
1742                            {
1743                                base.cursor = base.limit - v_12;
1744                                break lab23;
1745                            }
1746                            base.bra = base.cursor;
1747                            if (!base.slice_del())
1748                            {
1749                                return false;
1750                            }
1751                            if (!r_stem_suffix_chain_before_ki())
1752                            {
1753                                base.cursor = base.limit - v_12;
1754                                break lab23;
1755                            }
1756                        }
1757                        break lab21;
1758                    }
1759                    base.cursor = base.limit - v_11;
1760                    if (!r_mark_lArI())
1761                    {
1762                        break lab18;
1763                    }
1764                }
1765                break lab0;
1766            }
1767            base.cursor = base.limit - v_1;
1768            lab24: {
1769                base.ket = base.cursor;
1770                if (!r_mark_DAn())
1771                {
1772                    break lab24;
1773                }
1774                base.bra = base.cursor;
1775                if (!base.slice_del())
1776                {
1777                    return false;
1778                }
1779                var /** number */ v_13 = base.limit - base.cursor;
1780                lab25: {
1781                    base.ket = base.cursor;
1782                    lab26: {
1783                        var /** number */ v_14 = base.limit - base.cursor;
1784                        lab27: {
1785                            if (!r_mark_possessives())
1786                            {
1787                                break lab27;
1788                            }
1789                            base.bra = base.cursor;
1790                            if (!base.slice_del())
1791                            {
1792                                return false;
1793                            }
1794                            var /** number */ v_15 = base.limit - base.cursor;
1795                            lab28: {
1796                                base.ket = base.cursor;
1797                                if (!r_mark_lAr())
1798                                {
1799                                    base.cursor = base.limit - v_15;
1800                                    break lab28;
1801                                }
1802                                base.bra = base.cursor;
1803                                if (!base.slice_del())
1804                                {
1805                                    return false;
1806                                }
1807                                if (!r_stem_suffix_chain_before_ki())
1808                                {
1809                                    base.cursor = base.limit - v_15;
1810                                    break lab28;
1811                                }
1812                            }
1813                            break lab26;
1814                        }
1815                        base.cursor = base.limit - v_14;
1816                        lab29: {
1817                            if (!r_mark_lAr())
1818                            {
1819                                break lab29;
1820                            }
1821                            base.bra = base.cursor;
1822                            if (!base.slice_del())
1823                            {
1824                                return false;
1825                            }
1826                            var /** number */ v_16 = base.limit - base.cursor;
1827                            lab30: {
1828                                if (!r_stem_suffix_chain_before_ki())
1829                                {
1830                                    base.cursor = base.limit - v_16;
1831                                    break lab30;
1832                                }
1833                            }
1834                            break lab26;
1835                        }
1836                        base.cursor = base.limit - v_14;
1837                        if (!r_stem_suffix_chain_before_ki())
1838                        {
1839                            base.cursor = base.limit - v_13;
1840                            break lab25;
1841                        }
1842                    }
1843                }
1844                break lab0;
1845            }
1846            base.cursor = base.limit - v_1;
1847            lab31: {
1848                base.ket = base.cursor;
1849                lab32: {
1850                    var /** number */ v_17 = base.limit - base.cursor;
1851                    lab33: {
1852                        if (!r_mark_nUn())
1853                        {
1854                            break lab33;
1855                        }
1856                        break lab32;
1857                    }
1858                    base.cursor = base.limit - v_17;
1859                    if (!r_mark_ylA())
1860                    {
1861                        break lab31;
1862                    }
1863                }
1864                base.bra = base.cursor;
1865                if (!base.slice_del())
1866                {
1867                    return false;
1868                }
1869                var /** number */ v_18 = base.limit - base.cursor;
1870                lab34: {
1871                    lab35: {
1872                        var /** number */ v_19 = base.limit - base.cursor;
1873                        lab36: {
1874                            base.ket = base.cursor;
1875                            if (!r_mark_lAr())
1876                            {
1877                                break lab36;
1878                            }
1879                            base.bra = base.cursor;
1880                            if (!base.slice_del())
1881                            {
1882                                return false;
1883                            }
1884                            if (!r_stem_suffix_chain_before_ki())
1885                            {
1886                                break lab36;
1887                            }
1888                            break lab35;
1889                        }
1890                        base.cursor = base.limit - v_19;
1891                        lab37: {
1892                            base.ket = base.cursor;
1893                            lab38: {
1894                                var /** number */ v_20 = base.limit - base.cursor;
1895                                lab39: {
1896                                    if (!r_mark_possessives())
1897                                    {
1898                                        break lab39;
1899                                    }
1900                                    break lab38;
1901                                }
1902                                base.cursor = base.limit - v_20;
1903                                if (!r_mark_sU())
1904                                {
1905                                    break lab37;
1906                                }
1907                            }
1908                            base.bra = base.cursor;
1909                            if (!base.slice_del())
1910                            {
1911                                return false;
1912                            }
1913                            var /** number */ v_21 = base.limit - base.cursor;
1914                            lab40: {
1915                                base.ket = base.cursor;
1916                                if (!r_mark_lAr())
1917                                {
1918                                    base.cursor = base.limit - v_21;
1919                                    break lab40;
1920                                }
1921                                base.bra = base.cursor;
1922                                if (!base.slice_del())
1923                                {
1924                                    return false;
1925                                }
1926                                if (!r_stem_suffix_chain_before_ki())
1927                                {
1928                                    base.cursor = base.limit - v_21;
1929                                    break lab40;
1930                                }
1931                            }
1932                            break lab35;
1933                        }
1934                        base.cursor = base.limit - v_19;
1935                        if (!r_stem_suffix_chain_before_ki())
1936                        {
1937                            base.cursor = base.limit - v_18;
1938                            break lab34;
1939                        }
1940                    }
1941                }
1942                break lab0;
1943            }
1944            base.cursor = base.limit - v_1;
1945            lab41: {
1946                base.ket = base.cursor;
1947                if (!r_mark_lArI())
1948                {
1949                    break lab41;
1950                }
1951                base.bra = base.cursor;
1952                if (!base.slice_del())
1953                {
1954                    return false;
1955                }
1956                break lab0;
1957            }
1958            base.cursor = base.limit - v_1;
1959            lab42: {
1960                if (!r_stem_suffix_chain_before_ki())
1961                {
1962                    break lab42;
1963                }
1964                break lab0;
1965            }
1966            base.cursor = base.limit - v_1;
1967            lab43: {
1968                base.ket = base.cursor;
1969                lab44: {
1970                    var /** number */ v_22 = base.limit - base.cursor;
1971                    lab45: {
1972                        if (!r_mark_DA())
1973                        {
1974                            break lab45;
1975                        }
1976                        break lab44;
1977                    }
1978                    base.cursor = base.limit - v_22;
1979                    lab46: {
1980                        if (!r_mark_yU())
1981                        {
1982                            break lab46;
1983                        }
1984                        break lab44;
1985                    }
1986                    base.cursor = base.limit - v_22;
1987                    if (!r_mark_yA())
1988                    {
1989                        break lab43;
1990                    }
1991                }
1992                base.bra = base.cursor;
1993                if (!base.slice_del())
1994                {
1995                    return false;
1996                }
1997                var /** number */ v_23 = base.limit - base.cursor;
1998                lab47: {
1999                    base.ket = base.cursor;
2000                    lab48: {
2001                        var /** number */ v_24 = base.limit - base.cursor;
2002                        lab49: {
2003                            if (!r_mark_possessives())
2004                            {
2005                                break lab49;
2006                            }
2007                            base.bra = base.cursor;
2008                            if (!base.slice_del())
2009                            {
2010                                return false;
2011                            }
2012                            var /** number */ v_25 = base.limit - base.cursor;
2013                            lab50: {
2014                                base.ket = base.cursor;
2015                                if (!r_mark_lAr())
2016                                {
2017                                    base.cursor = base.limit - v_25;
2018                                    break lab50;
2019                                }
2020                            }
2021                            break lab48;
2022                        }
2023                        base.cursor = base.limit - v_24;
2024                        if (!r_mark_lAr())
2025                        {
2026                            base.cursor = base.limit - v_23;
2027                            break lab47;
2028                        }
2029                    }
2030                    base.bra = base.cursor;
2031                    if (!base.slice_del())
2032                    {
2033                        return false;
2034                    }
2035                    base.ket = base.cursor;
2036                    if (!r_stem_suffix_chain_before_ki())
2037                    {
2038                        base.cursor = base.limit - v_23;
2039                        break lab47;
2040                    }
2041                }
2042                break lab0;
2043            }
2044            base.cursor = base.limit - v_1;
2045            base.ket = base.cursor;
2046            lab51: {
2047                var /** number */ v_26 = base.limit - base.cursor;
2048                lab52: {
2049                    if (!r_mark_possessives())
2050                    {
2051                        break lab52;
2052                    }
2053                    break lab51;
2054                }
2055                base.cursor = base.limit - v_26;
2056                if (!r_mark_sU())
2057                {
2058                    return false;
2059                }
2060            }
2061            base.bra = base.cursor;
2062            if (!base.slice_del())
2063            {
2064                return false;
2065            }
2066            var /** number */ v_27 = base.limit - base.cursor;
2067            lab53: {
2068                base.ket = base.cursor;
2069                if (!r_mark_lAr())
2070                {
2071                    base.cursor = base.limit - v_27;
2072                    break lab53;
2073                }
2074                base.bra = base.cursor;
2075                if (!base.slice_del())
2076                {
2077                    return false;
2078                }
2079                if (!r_stem_suffix_chain_before_ki())
2080                {
2081                    base.cursor = base.limit - v_27;
2082                    break lab53;
2083                }
2084            }
2085        }
2086        return true;
2087    };
2088
2089    /** @return {boolean} */
2090    function r_post_process_last_consonants() {
2091        var /** number */ among_var;
2092        base.ket = base.cursor;
2093        among_var = base.find_among_b(a_23);
2094        if (among_var == 0)
2095        {
2096            return false;
2097        }
2098        base.bra = base.cursor;
2099        switch (among_var) {
2100            case 1:
2101                if (!base.slice_from("p"))
2102                {
2103                    return false;
2104                }
2105                break;
2106            case 2:
2107                if (!base.slice_from("\u00E7"))
2108                {
2109                    return false;
2110                }
2111                break;
2112            case 3:
2113                if (!base.slice_from("t"))
2114                {
2115                    return false;
2116                }
2117                break;
2118            case 4:
2119                if (!base.slice_from("k"))
2120                {
2121                    return false;
2122                }
2123                break;
2124        }
2125        return true;
2126    };
2127
2128    /** @return {boolean} */
2129    function r_append_U_to_stems_ending_with_d_or_g() {
2130        var /** number */ v_1 = base.limit - base.cursor;
2131        lab0: {
2132            var /** number */ v_2 = base.limit - base.cursor;
2133            lab1: {
2134                if (!(base.eq_s_b("d")))
2135                {
2136                    break lab1;
2137                }
2138                break lab0;
2139            }
2140            base.cursor = base.limit - v_2;
2141            if (!(base.eq_s_b("g")))
2142            {
2143                return false;
2144            }
2145        }
2146        base.cursor = base.limit - v_1;
2147        lab2: {
2148            var /** number */ v_3 = base.limit - base.cursor;
2149            lab3: {
2150                var /** number */ v_4 = base.limit - base.cursor;
2151                golab4: while(true)
2152                {
2153                    var /** number */ v_5 = base.limit - base.cursor;
2154                    lab5: {
2155                        if (!(base.in_grouping_b(g_vowel, 97, 305)))
2156                        {
2157                            break lab5;
2158                        }
2159                        base.cursor = base.limit - v_5;
2160                        break golab4;
2161                    }
2162                    base.cursor = base.limit - v_5;
2163                    if (base.cursor <= base.limit_backward)
2164                    {
2165                        break lab3;
2166                    }
2167                    base.cursor--;
2168                }
2169                lab6: {
2170                    var /** number */ v_6 = base.limit - base.cursor;
2171                    lab7: {
2172                        if (!(base.eq_s_b("a")))
2173                        {
2174                            break lab7;
2175                        }
2176                        break lab6;
2177                    }
2178                    base.cursor = base.limit - v_6;
2179                    if (!(base.eq_s_b("\u0131")))
2180                    {
2181                        break lab3;
2182                    }
2183                }
2184                base.cursor = base.limit - v_4;
2185                {
2186                    var /** number */ c1 = base.cursor;
2187                    base.insert(base.cursor, base.cursor, "\u0131");
2188                    base.cursor = c1;
2189                }
2190                break lab2;
2191            }
2192            base.cursor = base.limit - v_3;
2193            lab8: {
2194                var /** number */ v_7 = base.limit - base.cursor;
2195                golab9: while(true)
2196                {
2197                    var /** number */ v_8 = base.limit - base.cursor;
2198                    lab10: {
2199                        if (!(base.in_grouping_b(g_vowel, 97, 305)))
2200                        {
2201                            break lab10;
2202                        }
2203                        base.cursor = base.limit - v_8;
2204                        break golab9;
2205                    }
2206                    base.cursor = base.limit - v_8;
2207                    if (base.cursor <= base.limit_backward)
2208                    {
2209                        break lab8;
2210                    }
2211                    base.cursor--;
2212                }
2213                lab11: {
2214                    var /** number */ v_9 = base.limit - base.cursor;
2215                    lab12: {
2216                        if (!(base.eq_s_b("e")))
2217                        {
2218                            break lab12;
2219                        }
2220                        break lab11;
2221                    }
2222                    base.cursor = base.limit - v_9;
2223                    if (!(base.eq_s_b("i")))
2224                    {
2225                        break lab8;
2226                    }
2227                }
2228                base.cursor = base.limit - v_7;
2229                {
2230                    var /** number */ c2 = base.cursor;
2231                    base.insert(base.cursor, base.cursor, "i");
2232                    base.cursor = c2;
2233                }
2234                break lab2;
2235            }
2236            base.cursor = base.limit - v_3;
2237            lab13: {
2238                var /** number */ v_10 = base.limit - base.cursor;
2239                golab14: while(true)
2240                {
2241                    var /** number */ v_11 = base.limit - base.cursor;
2242                    lab15: {
2243                        if (!(base.in_grouping_b(g_vowel, 97, 305)))
2244                        {
2245                            break lab15;
2246                        }
2247                        base.cursor = base.limit - v_11;
2248                        break golab14;
2249                    }
2250                    base.cursor = base.limit - v_11;
2251                    if (base.cursor <= base.limit_backward)
2252                    {
2253                        break lab13;
2254                    }
2255                    base.cursor--;
2256                }
2257                lab16: {
2258                    var /** number */ v_12 = base.limit - base.cursor;
2259                    lab17: {
2260                        if (!(base.eq_s_b("o")))
2261                        {
2262                            break lab17;
2263                        }
2264                        break lab16;
2265                    }
2266                    base.cursor = base.limit - v_12;
2267                    if (!(base.eq_s_b("u")))
2268                    {
2269                        break lab13;
2270                    }
2271                }
2272                base.cursor = base.limit - v_10;
2273                {
2274                    var /** number */ c3 = base.cursor;
2275                    base.insert(base.cursor, base.cursor, "u");
2276                    base.cursor = c3;
2277                }
2278                break lab2;
2279            }
2280            base.cursor = base.limit - v_3;
2281            var /** number */ v_13 = base.limit - base.cursor;
2282            golab18: while(true)
2283            {
2284                var /** number */ v_14 = base.limit - base.cursor;
2285                lab19: {
2286                    if (!(base.in_grouping_b(g_vowel, 97, 305)))
2287                    {
2288                        break lab19;
2289                    }
2290                    base.cursor = base.limit - v_14;
2291                    break golab18;
2292                }
2293                base.cursor = base.limit - v_14;
2294                if (base.cursor <= base.limit_backward)
2295                {
2296                    return false;
2297                }
2298                base.cursor--;
2299            }
2300            lab20: {
2301                var /** number */ v_15 = base.limit - base.cursor;
2302                lab21: {
2303                    if (!(base.eq_s_b("\u00F6")))
2304                    {
2305                        break lab21;
2306                    }
2307                    break lab20;
2308                }
2309                base.cursor = base.limit - v_15;
2310                if (!(base.eq_s_b("\u00FC")))
2311                {
2312                    return false;
2313                }
2314            }
2315            base.cursor = base.limit - v_13;
2316            {
2317                var /** number */ c4 = base.cursor;
2318                base.insert(base.cursor, base.cursor, "\u00FC");
2319                base.cursor = c4;
2320            }
2321        }
2322        return true;
2323    };
2324
2325    /** @return {boolean} */
2326    function r_is_reserved_word() {
2327        if (!(base.eq_s_b("ad")))
2328        {
2329            return false;
2330        }
2331        var /** number */ v_1 = base.limit - base.cursor;
2332        lab0: {
2333            if (!(base.eq_s_b("soy")))
2334            {
2335                base.cursor = base.limit - v_1;
2336                break lab0;
2337            }
2338        }
2339        if (base.cursor > base.limit_backward)
2340        {
2341            return false;
2342        }
2343        return true;
2344    };
2345
2346    /** @return {boolean} */
2347    function r_more_than_one_syllable_word() {
2348        var /** number */ v_1 = base.cursor;
2349        {
2350            var v_2 = 2;
2351            while(true)
2352            {
2353                var /** number */ v_3 = base.cursor;
2354                lab0: {
2355                    golab1: while(true)
2356                    {
2357                        lab2: {
2358                            if (!(base.in_grouping(g_vowel, 97, 305)))
2359                            {
2360                                break lab2;
2361                            }
2362                            break golab1;
2363                        }
2364                        if (base.cursor >= base.limit)
2365                        {
2366                            break lab0;
2367                        }
2368                        base.cursor++;
2369                    }
2370                    v_2--;
2371                    continue;
2372                }
2373                base.cursor = v_3;
2374                break;
2375            }
2376            if (v_2 > 0)
2377            {
2378                return false;
2379            }
2380        }
2381        base.cursor = v_1;
2382        return true;
2383    };
2384
2385    /** @return {boolean} */
2386    function r_postlude() {
2387        base.limit_backward = base.cursor; base.cursor = base.limit;
2388        {
2389            var /** number */ v_1 = base.limit - base.cursor;
2390            lab0: {
2391                if (!r_is_reserved_word())
2392                {
2393                    break lab0;
2394                }
2395                return false;
2396            }
2397            base.cursor = base.limit - v_1;
2398        }
2399        var /** number */ v_2 = base.limit - base.cursor;
2400        r_append_U_to_stems_ending_with_d_or_g();
2401        base.cursor = base.limit - v_2;
2402        var /** number */ v_3 = base.limit - base.cursor;
2403        r_post_process_last_consonants();
2404        base.cursor = base.limit - v_3;
2405        base.cursor = base.limit_backward;
2406        return true;
2407    };
2408
2409    this.stem = /** @return {boolean} */ function() {
2410        if (!r_more_than_one_syllable_word())
2411        {
2412            return false;
2413        }
2414        base.limit_backward = base.cursor; base.cursor = base.limit;
2415        var /** number */ v_1 = base.limit - base.cursor;
2416        r_stem_nominal_verb_suffixes();
2417        base.cursor = base.limit - v_1;
2418        if (!B_continue_stemming_noun_suffixes)
2419        {
2420            return false;
2421        }
2422        var /** number */ v_2 = base.limit - base.cursor;
2423        r_stem_noun_suffixes();
2424        base.cursor = base.limit - v_2;
2425        base.cursor = base.limit_backward;
2426        if (!r_postlude())
2427        {
2428            return false;
2429        }
2430        return true;
2431    };
2432
2433    /**@return{string}*/
2434    this['stemWord'] = function(/**string*/word) {
2435        base.setCurrent(word);
2436        this.stem();
2437        return base.getCurrent();
2438    };
2439};
2440